【问题标题】:Extend a job's dependsOn in a template在模板中扩展作业的dependsOn
【发布时间】:2020-10-13 14:37:30
【问题描述】:

我正在创建一个模板,在其中传递一份工作列表。在此模板中,我将“预”作业添加到作业列表中,然后添加所有作业。我希望能够在作业列表中的所有作业中添加对“pre”作业的依赖,而不会破坏作业列表参数中作业之间的任何依赖关系。我的模板看起来像这样:

parameters:
  - name: Jobs
    type: jobList

jobs:
- job: prejob
  steps:
  - powershell: |
      Write-Host "This is my prejob"
- ${{ each job in parameters.Jobs }}:
  - ${{ each pair in job }}:
      ${{ if and(ne(pair.key, 'steps'),ne(pair.key, 'dependsOn')) }}:
        ${{ pair.key }}: ${{ pair.value }}
    dependsOn: 'prejob'
    steps:
    - ${{ job.steps }}

现在这当然会覆盖传递的作业的dependsOn。

我可以在模板中进行哪些更改,以便将传递的作业依赖项与prejob 作业结合起来? join 表达式连接 2 个数组,但我的 prejob 文本不是数组,我不确定作业的 dependsOn 属性是否始终是数组。

【问题讨论】:

    标签: azure-devops azure-pipelines


    【解决方案1】:

    请试试这个:

    parameters:
      - name: Jobs
        type: jobList
    
    jobs:
    - job: prejob
      steps:
      - powershell: |
          Write-Host "This is my prejob"
    - ${{ each job in parameters.Jobs }}:
      - ${{ each pair in job }}:
          ${{ if and(ne(pair.key, 'steps'),ne(pair.key, 'dependsOn')) }}:
            ${{ pair.key }}: ${{ pair.value }}
        dependsOn:
        - 'prejob'
        - ${{ if job.dependsOn }}:
          - ${{ job.dependsOn }}
        steps:
        - ${{ job.steps }}
    

    通过这种方式,您应该能够对prejob 进行依赖并保持对作业的依赖。

    【讨论】:

    • 我会试一试,但你确定依赖的语法是允许的吗?根据文档,它应该在数组(方括号)语法中(docs.microsoft.com/en-us/azure/devops/pipelines/…
    • 是的。你甚至在docs 中也有这样的例子
    • 看来你是对的。 yaml 文档确实不一致,信息分散。您需要使用 ['a','b'] 语法的所有其他有关依赖状态的信息。如果允许“正常”的所有语法,我不明白为什么它不是默认示例。谢谢!我会测试它,但我看不出它不应该工作的原因
    • @PaulVrugt 请告诉我们您的测试结果。
    • 我会,但我要到星期一才能测试它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    相关资源
    最近更新 更多