我正在尝试在 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
我在添加阶段时不断遇到错误,因为它们不是模板的参数?我是否需要在模板上添加阶段作为参数才能添加新作业?或者我可以以某种方式解决这个问题并让作业在使用模板之前运行吗?
我有什么选择可以让这项工作按照我的预期进行?
我没有测试它,但我认为添加附加阶段的唯一方法是在模板管道中添加“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