Azure DevOps 模板作为作业的依赖项

kag*_*kij 5 azure-devops

我在 Stage 中使用 Azure DevOps 模板,并且我希望一些作业仅在模板中的作业完成时开始(dependsOn):

- stage: stage1
  jobs:
  - job: job1
    steps:
    - bash: |
      ...

  - template: template1.yml
    parameters:
      param1: 'val1'

  - job: job2
    **dependsOn: how to put `template: template1.yml` here?**
    steps:
    - bash: |
      ...
Run Code Online (Sandbox Code Playgroud)

怎么可能呢?

Eri*_*ith 13

您可以通过使用作业名称来完成此操作,因为它是在您的模板中定义的dependsOn

#template1.yml

jobs:
- job: mytemplateJob
  steps:
  - script: npm install
Run Code Online (Sandbox Code Playgroud)

stages:
- stage: stage1
  jobs:
    - job: job1
      steps:
      - bash: pwd

    - template: template1.yml  # Template reference
      parameters:
        param: 'val1'

    - job: job2
      dependsOn: mytemplateJob
      steps:
        - bash: pwd
Run Code Online (Sandbox Code Playgroud)


Nic*_*ham 10

Eric Smith 的回答为基础,您可以传入模板将依赖的作业名称作为参数。

#template1.yml

jobs:
- job: mytemplateJob1
  steps:
  - script: npm install
Run Code Online (Sandbox Code Playgroud)
#template2.yml
parameters:
  DependsOn: []

jobs:
- job: mytemplateJob2
  dependsOn: ${{ parameters.DependsOn }}
  steps:
  - bash: pwd
Run Code Online (Sandbox Code Playgroud)

通过为 DependsOn 设置默认值,[]您可以确保在没有为 DependsOn 传入任何值时模板将运行,但您可以选择创建这样的依赖项:

stages:
- stage: stage1
  jobs:
  - template: template1.yml  # Template reference

  - template: template2.yml
    parameters:
      DependsOn: 'mytemplateJob1'
Run Code Online (Sandbox Code Playgroud)

  • 我正在寻找问题的反面(我的模板需要依赖于其他一些工作),这对于两者来说都是完美的答案 (3认同)