如何在从另一个存储库扩展模板的管道定义中使用我的模板?
How can I use my template in a pipeline definition that extends a template from another repository?
我有一个从另一个存储库扩展模板的管道。该外部模板采用名为 stages
的 stageList
。
我的管道:
resources:
repositories:
- repository: templates
type: git
name: OtherProject/OtherRepo
ref: refs/heads/main
extends:
template: BaseTemplate.yml@templates
stages:
- stage: build
jobs:
- job: main
steps:
我的步骤包括一些本地化,我需要为每种语言执行 task
。我目前将每种语言手动定义为单独的任务:
- task: MSBuild@1
displayName: 'Build (de-DE)'
inputs:
solution: '$(Build.SourcesDirectory)\MyProject.wixproj'
msbuildArguments: '/p:Cultures="de-DE"
...more args, 15 lines long...
...针对每种语言重复。恶心。
所以我想尝试为此使用模板。但是当我将 MSBuild 任务移动到另一个文件并尝试
- template: ./templates/localizedBuild.yml
parameters:
language: 'de-DE'
然后当我去排队管道时 ADO 给我这个错误 运行:
The 'stages' parameter is not a valid StageList.
/.pipelines/MyPipeline.yml: File /templates/localizedMsi.yml not found in repository https://company.visualstudio.com/OtherProject/_git/OtherRepo
据我了解,这是因为模板的路径是相对于执行包含的文件计算的...这是 BaseTemplate.yml
文件,而不是 MyPipeline.yml
。
有没有办法在 yml 中指出我正在尝试引用 my 存储库中的模板?
是的,如果您没有将本地存储库定义为 resources\repository
,它会自动声明为 self
尝试添加:
- template:/templates/localizedBuild.yml@self
我有一个从另一个存储库扩展模板的管道。该外部模板采用名为 stages
的 stageList
。
我的管道:
resources:
repositories:
- repository: templates
type: git
name: OtherProject/OtherRepo
ref: refs/heads/main
extends:
template: BaseTemplate.yml@templates
stages:
- stage: build
jobs:
- job: main
steps:
我的步骤包括一些本地化,我需要为每种语言执行 task
。我目前将每种语言手动定义为单独的任务:
- task: MSBuild@1
displayName: 'Build (de-DE)'
inputs:
solution: '$(Build.SourcesDirectory)\MyProject.wixproj'
msbuildArguments: '/p:Cultures="de-DE"
...more args, 15 lines long...
...针对每种语言重复。恶心。
所以我想尝试为此使用模板。但是当我将 MSBuild 任务移动到另一个文件并尝试
- template: ./templates/localizedBuild.yml
parameters:
language: 'de-DE'
然后当我去排队管道时 ADO 给我这个错误 运行:
The 'stages' parameter is not a valid StageList. /.pipelines/MyPipeline.yml: File /templates/localizedMsi.yml not found in repository https://company.visualstudio.com/OtherProject/_git/OtherRepo
据我了解,这是因为模板的路径是相对于执行包含的文件计算的...这是 BaseTemplate.yml
文件,而不是 MyPipeline.yml
。
有没有办法在 yml 中指出我正在尝试引用 my 存储库中的模板?
是的,如果您没有将本地存储库定义为 resources\repository
,它会自动声明为 self
尝试添加:
- template:/templates/localizedBuild.yml@self