不遵守 Azure Pipelines 任务超时

Posted

技术标签:

【中文标题】不遵守 Azure Pipelines 任务超时【英文标题】:Azure Pipelines task timeout not respected 【发布时间】:2020-05-02 01:20:41 【问题描述】:

我正在运行一个 azure 管道,如下所示。我在 3 个地方设置了超时时间:作业、池和任务,但是步骤运行验收测试总是在 60 分钟后超时并显示错误消息:

配置资源时出错(错误类型:超时)。 操作已取消。

否则,管道中的一切运行正常。

stages: 
- stage: Run_Acceptance_Tests
  jobs:
  - job: Run_Acceptance_Tests
    timeoutInMinutes: 180
    pool:
      name: Hosted VS2017
      timeoutInMinutes: 180
      demands:
      - msbuild
      - visualstudio
      - vstest

    steps:
    - task: NuGetToolInstaller@0
      displayName: 'Use NuGet 4.4.1'
      inputs:
        versionSpec: 4.4.1

    - task: NuGetCommand@2
      displayName: 'NuGet restore'
      inputs:
        restoreSolution: '$(solution)'

    - task: VSBuild@1
      displayName: 'Build solution'
      inputs:
        solution: '$(solution)'
        msbuildArgs: '/p:SkipInvalidConfigurations=true /p:ExcludeApp_Data=true /p:AutoParameterizationWebConfigConnectionStrings=false /p:MarkWebConfigAssistFilesAsExclude=false /p:ProfileTransformWebConfigEnabled=false /p:TransformWebConfigEnabled=false'
        platform: '$(BuildPlatform)'
        configuration: '$(BuildConfiguration)'

    - task: FileTransform@2
      displayName: 'Transform settings for Acceptance tests'
      inputs:
        folderPath: '$(Build.SourcesDirectory)'
        xmlTransformationRules: '-transform **\Selenium.Tests\App.Test.config -xml **\Selenium.Tests\bin\**\Selenium.Tests.dll.config'    

    - task: VSTest@2
      displayName: 'Run ExcelWraps Acceptance tests'
      timeoutInMinutes: 180
      inputs:
        testAssemblyVer2: |
         **\Selenium.Tests.dll
         !**\obj\**
        searchFolder: '$(Build.SourcesDirectory)'
        pathtoCustomTestAdapters: '$(build.sourcesdirectory)\src\packages\NUnit3TestAdapter.3.10.0\build\net35\'
        runInParallel: false
        codeCoverageEnabled: false
        platform: '$(BuildPlatform)'
        configuration: '$(BuildConfiguration)'
        diagnosticsEnabled: false
        uiTests: true
        minimumExpectedTests: 10    

我已经阅读并重新阅读了文档,并且似乎已经完成了他们要求的一切。 通过将超时设置在我上面提到的位置之一,似乎已经回答了所有这些问题: - https://developercommunity.visualstudio.com/content/problem/375541/60-minutes-time-limit-per-build.html - https://developercommunity.visualstudio.com/content/problem/567714/azure-devops-timeoutinminutes-is-being-ignored-in.html - https://developercommunity.visualstudio.com/content/problem/670377/timeout-not-respected-in-multi-stage-pipeline.html - https://github.com/Microsoft/azure-pipelines-yaml/issues/48 - https://github.com/Microsoft/azure-pipelines-agent/issues/1849

如何增加测试步骤的超时时间?

【问题讨论】:

你的项目是私有的还是公共的? 项目是私有的 所以这就是原因,看我的回答:) 【参考方案1】:

在私人项目中,Microsoft 在托管代理中提供的最长超时时间为 60 分钟。

请参阅文档here:

为了避免在您的工作挂起或等待时占用资源 很长,最好限制您的工作被允许的时长 跑步。使用作业超时设置以分钟为单位指定限制 用于运行作业。将该值设置为零意味着作业可以 运行:

永远在自托管代理上 360 分钟(6 小时)在 Microsoft 托管的代理上使用公共项目和公共存储库 在 Microsoft 托管的代理上使用私人项目或 60 分钟 私有存储库

【讨论】:

您可以达到最大值,在您的情况下(私人项目 + 托管代理)最长为 60 分钟。 文档说,对于指定为 0 的值,超时为 60 分钟。它没有说允许的最大值是 60 分钟。我怀疑你是对的,允许的最大值是 60。只是说文档没有这么说。

以上是关于不遵守 Azure Pipelines 任务超时的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Azure Pipelines Yaml 上循环多个 Azure 订阅?

Azure DevOps Pipelines 上的 Android SDK 构建工具

Azure Pipelines:在 Powershell 中设置和访问变量

NG 构建在 Azure Pipelines 中失败,并出现 NPM 错误 134

是否可以读取 Azure Pipelines 脚本返回的数据或将其保存在变量中?

如何在 Azure Pipelines 中自动增加 Xamarin Android 内部版本号和版本号?