如何使用从 1 ymal 管道到 2 管道 Azure Devops 的阶段

时间:2021-05-24 18:15:39

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

我正在处理一个有 2 个管道的项目。 1 个管道目前按预期工作,其中有 8 个阶段。

现在我想为 2 个管道编写代码,我想利用 1 个管道中的几个阶段(大约 4 个阶段),因为代码和功能相似。

有什么方法可以在 Azure DevOps YAML 管道中实现这一点吗?

1 个答案:

答案 0 :(得分:1)

当然,您可以将类似的阶段导出到 template,然后您可以通过 extends 在其他管道中使用它:

# File: azure-pipelines.yml
trigger:
- master

extends:
  template: start.yml
  parameters:
    buildSteps:  
      - bash: echo Test #Passes
        displayName: succeed
      - bash: echo "Test"
        displayName: succeed
      - task: CmdLine@2
        displayName: Test 3 - Will Fail
        inputs:
          script: echo "Script Test"

模板将是(例如):

# File: start.yml
parameters:
- name: buildSteps # the name of the parameter is buildSteps
  type: stepList # data type is StepList
  default: [] # default value of buildSteps
stages:
- stage: secure_buildstage
  pool: Hosted VS2017
  jobs:
  - job: secure_buildjob
    steps:
    - script: echo This happens before code 
      displayName: 'Base: Pre-build'
    - script: echo Building
      displayName: 'Base: Build'

    - ${{ each step in parameters.buildSteps }}:
      - ${{ each pair in step }}:
          ${{ if ne(pair.value, 'CmdLine@2') }}:
            ${{ pair.key }}: ${{ pair.value }}       
          ${{ if eq(pair.value, 'CmdLine@2') }}: 
            '${{ pair.value }}': error         

    - script: echo This happens after code
      displayName: 'Base: Signing'