在 azure devops 代理上运行调整日期/时间的测试

问题描述 投票:0回答:1

我在 azure devops 中有自动化测试计划。我为它们配置了代理。我启动了一个特定计划的运行,该计划在测试期间改变本地日期/时间来操作各种数据。然而,当它这样做时,代理失去联系并且运行被中止。 一旦在测试中更改日期/时间,我就看到两个错误。

一:

代理连接错误:承载在 26/06/2024 19:30:52 之前无效。当前服务器时间是 24/06/2024 19:30:51.. 正在重试,直到重新连接。

二:

日期/时间不同步,无法连接

如何解决这个问题?当然,这一定是人们确实看到的并且有解决方法吗? DevOps 操作是自托管的,而不是基于云的。代理没有作为服务运行。

azure azure-devops azure-pipelines
1个回答
0
投票

问题的原因是在测试更改本地日期/时间后,Azure DevOps 服务与代理计算机时间之间的时间不匹配。

参考Agent配置代码:ConfigurationManager.cs

测试代理连接,检测任何潜在的连接问题,例如导致 OAuth 令牌过期的本地时钟偏差。

        _term.WriteLine(StringUtil.Loc("TestAgentConnection"));
        var credMgr = HostContext.GetService<ICredentialManager>();
        VssCredentials credential = credMgr.LoadCredentials();
        var agentSvr = HostContext.GetService<IAgentServer>();
        try
        {
            await agentSvr.ConnectAsync(new Uri(agentSettings.ServerUrl), credential);
        }
        catch (VssOAuthTokenRequestException ex) when (ex.Message.Contains("Current server time is"))
        {
            // there are two exception messages server send that indicate clock skew.
            // 1. The bearer token expired on {jwt.ValidTo}. Current server time is {DateTime.UtcNow}.
            // 2. The bearer token is not valid until {jwt.ValidFrom}. Current server time is {DateTime.UtcNow}.
            Trace.Error("Catch exception during test agent connection.");
            Trace.Error(ex);
            throw new InvalidOperationException(StringUtil.Loc("LocalClockSkewed"));
        }
        catch (SocketException ex)
        {
            ExceptionsUtil.HandleSocketException(ex, agentSettings.ServerUrl, Trace.Error);
            throw;
        }

这是 Azure DevOps Agent 中的硬连接检查。当您的本地时间与 Azure DevOps 不匹配时,会报告此错误。这是预期的行为。

Azure DevOps Agents 中恐怕暂时没有办法可以跳过这个检查。因此,更改时间的测试将不会在 Azure DevOps 中按预期运行

我们需要确保时区同步。

我完全理解您的要求。您可以在网站:开发者社区提交建议票来报告此功能。

© www.soinside.com 2019 - 2024. All rights reserved.