我有一个逐步定义模板,打算在构建管道中使用。 步骤定义的位置与构建管道本身不在同一文件夹中。
在验证管道期间,AzureDevops将构建管道的位置视为根位置。这被添加到引用的路径
考虑下面的代码层次结构示例
azure
|----products
|----resource-type1
|----step-def.yaml
|----resource-type2
|----step-def.yaml
|----solutions
|----solution1
|----local-step-def.yaml
|----build.yaml
|----solution2
|----build.yaml
当build.yaml如下时,以下工作
jobs:
- job: Linux
pool:
vmImage: 'ubuntu-16.04'
steps:
- template: solution1/local-step-def.yml
如果您按以下方式更改模板引用,则无法使用
- template: ../products/resource-type1/step-def.yml
在管道上完成验证后,azure-devops映射到
# <path-of-the-build-pipeline>/<template-ref>
azure/solutions/solution1/<template-reference>
那么我如何映射到位于产品文件夹层次结构中的step-def.yaml文件?
答案 0 :(得分:1)
我发现只有一种解决方案可以真正做到这一点。您可以使用绝对路径引用父目录。关键是使用系统变量填充根路径。您的示例的解决方案:
jobs:
- job: Linux
pool:
vmImage: 'ubuntu-16.04'
steps:
- template: ${{variables['System.DefaultWorkingDirectory']}}/products/resource-type1/step-def.yml
答案 1 :(得分:0)
您可以尝试使用repositoryResource语法,尽管事实上它是相同的存储库,例如
resources:
repositories:
- repository: pckgtemplates #resource name to be used in the build pipeline
type: git #Azure git
name: packages/packagesRepo
jobs:
- template: templates\version.file.yml@pckgtemplates
parameters:
versionFile: versionFile
- template: templates\version.file.yml@pckgtemplates
引用了version.file.yml
资源的templates
文件夹中的pckgtemplates
模板。
还有pckgtemplate
资源引用了当前组织的packages
项目和packagesRepo
存储库。
使用此方法,您可以定义引用相同项目和products/resource-type1/step-def.yml
模板的资源