Azure DevOps:在远程YAML模板中插入本地YAML模板

时间:2019-10-03 22:04:29

标签: azure-devops

关于本文档的“插入”部分:

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops#insertion

是否可以引用本地模板作为远程模板中的插入步骤。

例如,我似乎无法使类似的东西起作用:

# File: jobs/build.yml (remotetemplates)

parameters:
  preBuild: []
  preTest: []
  preSign: []

jobs:
- job: Build
  pool:
    vmImage: 'vs2017-win2016'
  steps:
  - script: cred-scan
  - ${{ parameters.preBuild }}
  - task: msbuild@1
  - ${{ parameters.preTest }}
  - task: vstest@2
  - ${{ parameters.preSign }}
  - script: sign

# File: .vsts.ci.yml

jobs:
- template: jobs/build.yml@remotetemplates
  parameters:
    preBuild:
    - template: templates/steps/my-local-steps.yml

结果类似于:jobs/build.yml@remotetemplates: File templates/steps/my-local-steps.yml not found in repository <URL of remote repository>

还有其他可以使用的方法吗?

1 个答案:

答案 0 :(得分:0)

  

是否可以引用本地模板作为插入的步骤   远程模板。

很遗憾地说不,你不能。

当您从另一个模板存储库调用一个yml文件时,所有模板文件必须来自一个相同的存储库。由于在另一个存储库中调用的模板存储库的逻辑是使template repository完全独立,因此仅存储模板并由其他存储库使用。这种设计的意义在于提高称为模板的代码的重用率。另一个优点是调节模板。

因此,当您在YAML中使用模板存储库时,模板只能来自此模板存储库。

  

还有其他可以使用的方法吗?

有两种方法。

  • 将此templates/steps/my-local-steps.yml文件存储在模板中 资料库。然后,不需要添加其他代码。只是简单的脚本是 好的。

如果是这种情况,则您的.vsts.ci.yml文件中有一些错误。

resources:
  repositories:
    - repository: templates
      type: git
      name: {projectname}/{repos name}
jobs:
  - template: jobs/build.yml@templates
    parameters:
      preBuild:
      - template: {local steps which store at your template repository}.yml

有关模板参考格式,请参考此文档:https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops#using-other-repositories

  • 将此templates/steps/my-local-steps.yml转换为脚本,添加 插入 YAML的纯脚本。

希望这可以为您提供帮助。