在所有先前阶段成功完成后如何在 Azure Pipelines 上运行最后阶段

时间:2021-07-08 13:17:08

标签: azure-pipelines

我有一个管道,它接收产品列表并为每个产品动态创建阶段。 目前每个产品都为自己创建了最后一个阶段,但我想在所有阶段成功完成后运行最后一个阶段。

parameters:
  - name: product
    type: object
  - name: component
    type: string
  - name: configuration
    type: string  

stages:
  - ${{ each product in parameters.product }}:
    - stage: ${{ product }}_build
      displayName: Build for ${{ product }}-${{ parameters.component }}
      dependsOn: [ ] # Force to run in parallel
      variables:
        Configuration: ${{ parameters.configuration }}
        Platform: ""
        ProductName: '${{ product }}'
        Component: '${{ parameters.component }}'
        ConfigurationVariant: ''
        SigningType: TestSigned
        FirmwareSigningType: Test
        ProjectFilePath: Project\SAM.eww

      jobs:
        - template: firmware/mcu.tpl.yml@BuildTemplate
          parameters:
            matrixAxis: 'ProductName,Configuration'
            enablePublish: true
            gitSubmoduleStrategy: 'PRAllRecursive'
            preInit:
              - checkout: git://MCU/${{ product }}-${{ parameters.component }}@master
                clean: true
                submodules: recursive
                persistCredentials: true
                path: s

    - template: firmware/rockton-fw-pr-test.stage.tpl.yml@BuildTemplate
      parameters:
        uniqueName: '${{ product }}_'
        dependsOn:
        - ${{ product }}_build
        enableAuthorization: true
        environment: 'Authorize PR tests'

我想进入最后一个阶段:firmware/rockton-fw-pr-test.stage.tpl.yml@BuildTemplate

并在每个循环阶段成功完成后运行一次

知道我该怎么做吗?

1 个答案:

答案 0 :(得分:0)

首先,将您的最终作业移到循环之外。现在,它将在每次迭代中运行,而不仅仅是最后一次。

然后更改您的 dependsOn 块以迭代您的参数并为每个作业定义一个条目,大致如下:

dependsOn: 
- ${{ each product in parameters.product }}:
  - ${{ product }}_build