【问题标题】:How to avoid Azure DevOps Pipelines being abandoned如何避免放弃 Azure DevOps Pipelines
【发布时间】:2021-08-12 20:37:54
【问题描述】:

我在 ADO (Azure DevOps) 上有一个管道。它非常简单,它们是几个步骤 1,2,3,4 等。

在其中一个步骤中,一些代码被推送到 SageMaker(AW​​S 云解决方案)并在那里运行了几个小时。我希望 ADO 管道等待其完成,然后再继续进行管道中的下一步。

它基本上是一个类似python deploy_to_sagemaker.py algorithm的python脚本。

但是它在大约 40 分钟后放弃了工作,可能是因为 CPU 不活动。有什么方法可以让我在 .yml 文件或类似文件中告诉管道等待几个小时,无论活动有多少?

错误消息类似于“我们停止从代理 id-xxx 收到消息。请验证代理机器正在运行并且网络连接正常”。

【问题讨论】:

    标签: azure-devops azure-pipelines


    【解决方案1】:

    您需要增加作业超时。来自docs

    超时 为避免在您的作业无响应或等待时间过长时占用资源,最好设置允许您的作业运行多长时间的限制。使用作业超时设置以分钟为单位指定运行作业的限制。将该值设置为零意味着作业可以运行:

    • 永远使用自托管代理
    • 360 分钟(6 小时)在 Microsoft 托管的代理上使用公共项目和公共存储库
    • 在 Microsoft 托管的代理上使用私有项目或私有存储库 60 分钟(除非为额外容量付费)

    超时时间从作业开始运行时开始。它不包括作业排队或等待代理的时间。

    timeoutInMinutes 允许为作业执行时间设置限制。未指定时,默认值为 60 分钟。当指定 0 时,使用最大限制(如上所述)。

    cancelTimeoutInMinutes 允许在部署任务设置为在前一个任务失败时继续运行时为作业取消时间设置限制。未指定时,默认值为 5 分钟。该值应在 135790 分钟的范围内。

    jobs:
    - job: Test
      timeoutInMinutes: 10 # how long to run the job before automatically cancelling
      cancelTimeoutInMinutes: 2 # how much time to give 'run always even if cancelled tasks' before stopping them
    

    您还可以单独为每个任务设置超时 - 请参阅 task control options

    【讨论】:

    • 感谢您的建议,我相信这样的解决方案在正常情况下会起作用。但是,当我设置 timeoutInMinutes: 1000 时,它仍然会在 30-40 分钟后取消……我认为这是因为构建代理本身有自动缩放策略。我们现在最好的解决方案是运行一个后台虚拟脚本只是为了消耗 CPU,不允许自动缩放策略启动。但这不是最佳解决方案
    • 您使用私人代理还是 MS 托管代理?
    • 我认为我们正在使用 MS 托管代理
    • 你的项目是私有的还是公共的?
    • 项目是私有的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 2021-01-15
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    相关资源
    最近更新 更多