【问题标题】:Post cancellation task in Azure PipelinesAzure Pipelines 中的取消后任务
【发布时间】:2021-03-15 12:08:05
【问题描述】:

我们有一个场景,一旦我们在 Azure DevOps 中手动取消管道,我们需要终止特定进程 (exe)。我们想知道如何在 YAML 取消后触发任务来实现这一点。

【问题讨论】:

  • 嗨@AshwinHariharan,进展如何?我的回答中的建议对您有帮助吗?请试一试。有任何更新,请随时告诉我们。
  • @Bright Ran-MSFT。您的建议非常适合我们的任务。感谢您对此的投入。
  • 嗨@AshwinHariharan,不客气,很高兴我能帮你解决问题。如果可能,您能否将我的答案标记为该主题的解决方案?这对于正在寻找类似问题的解决方案的其他人也可能非常有帮助。谢谢。

标签: azure-devops azure-pipelines azure-pipelines-yaml


【解决方案1】:

请尝试以下方法:

  1. 如果您的管道中有多个作业,请确保在所有其他作业完成处理之后处理运行到 terminate the particular process (exe) 的任务的作业(Succeeded@987654325 @Canceled)。您可以使用 'dependsOn' 键设置作业的执行顺序。详情请见“Dependencies”。

    然后,正如@ShaykiAbramczyk所说,在terminates the particular process (exe)的工作中,您可以使用'condition'键来指定条件作业运行。详情请见“Conditions”。

    jobs:
    . . .
    - job: string
      dependsOn: string
      condition: eq(variables['Agent.JobStatus'], 'Canceled')
    
  2. 如果您的管道中只有一个作业,请确保 terminate the particular process (exe) 的任务是作业的最后一步。您需要将此任务放在此作业的步骤列表的底部。

    那么还需要在任务上指定条件到terminate the particular process (exe)

    • 如果在此步骤中使用'condition'键,无论是否跳过,此步骤将始终列出并显示在作业运行中。

      steps:
      - step: string
         condition: eq(variables['Agent.JobStatus'], 'Canceled')
      
    • 如果在步骤上使用'if'语句,则只有在满足'if'条件并运行此步骤时,此步骤才会列出并显示在作业运行中。如果不满足条件而跳过该步骤,则该步骤将隐藏在作业运行中。

      steps:
      - ${{ if eq(variables['Agent.JobStatus'], 'Canceled') }}:
         - step: string
      

【讨论】:

  • 我们会试试这个
  • 嗨@AshwinHariharan,有任何更新,请随时告诉我们。
【解决方案2】:

您可以添加终止进程的步骤,并将其配置为仅在管道被取消时运行 - 使用custom condition

condition: eq(variables['Agent.JobStatus'], 'Canceled')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多