在 YML 中是否可以在扩展模板之上添加作业或阶段?

问题描述 投票:0回答:1

我正在尝试在 Azure Devops 中的管道上添加一些额外的作业和阶段步骤,以便能够将

.env
文件加载到构建过程中。

管道需要获取

.env
文件,然后将其放置在我们需要它存在的目录中,然后模板才会开始构建应用程序。

我当前的管道代码:

resources:
  repositories:
    - repository: TemplateRepo
      type: git
      ref: refs/tags/App1
      name: TemplateRepo

extends:
  template: TemplateFile.yml
  parameters:
    stages:
      - stage: PreBuild
        displayName: PreBuild
        jobs:
          - job: PreBuild
            steps:
              - task: DownloadSecureFile@1
                inputs:
                  secureFile: ".env"
              - task: CopyFiles@2
                inputs:
                  targetFolder: $(Build.ArtifactStagingDirectory)

trigger:
  batch: true

我在添加阶段时不断遇到错误,因为它们不是模板的参数?我是否需要在模板上添加阶段作为参数才能添加新作业?或者我可以以某种方式解决这个问题并让作业在使用模板之前运行吗?

我有什么选择可以让这项工作按照我的预期进行?

azure yaml continuous-integration environment-variables cicd
1个回答
0
投票

我没有测试它,但我认为添加附加阶段的唯一方法是在模板管道中添加“stageList”类型的参数,然后像往常一样使用它来包含附加阶段。这是一些示例代码:

TemplateRepo.yml:

parameters:
- name: extraStages
  type: stageList
  default: []

...

# at the end on "stage" level, add this:

- ${{ each stage in parameters.extraStages }}:
  - ${{ stage }}

然后如果我以您最初的当前管道代码为例:

resources:
  repositories:
    - repository: TemplateRepo
      type: git
      ref: refs/tags/App1
      name: TemplateRepo

extends:
  template: TemplateFile.yml
  parameters:
    extraStages:
      - stage: PreBuild
        displayName: PreBuild
        jobs:
          - job: PreBuild
            steps:
              - task: DownloadSecureFile@1
                inputs:
                  secureFile: ".env"
              - task: CopyFiles@2
                inputs:
                  targetFolder: $(Build.ArtifactStagingDirectory)

trigger:
  batch: true
© www.soinside.com 2019 - 2024. All rights reserved.