【问题标题】:How to create reusable Azure devops Yaml template not coupled to GIT如何创建不与 GIT 耦合的可重用 Azure devops Yaml 模板
【发布时间】:2021-03-12 07:00:24
【问题描述】:

要解决的问题:我在 YAML 中定义了自己的构建管道和一个旧任务组。任务组只是对 repo 不严格的一组任务。但是 YAML 不支持任务组。

可能的解决方案:因此我需要创建一个 YAML 模板,以便在我的管道构建中重复使用。此 YAML 模板将是任务组的“翻译”。

解决方案的问题:YAML 模板(据我所知)本身就是 YAML 管道。但这意味着它们与 GIT 存储库耦合,这是我不想要的!我只是一组可重用的任务,可以从我的构建管道中引用。

如何在 Azure Devops 中创建一个与 repo 不紧密的模板?此解决方案是否存在缺陷,您建议另一种方法?

【问题讨论】:

  • 为什么?在 azure devops 中使用带有 yaml 文件的 devops 存储库没有任何害处,您可以在整个组织(可能还有其他组织)中重复使用。
  • @4c74356b41 这是一个很好的观点。但是即使有多个模板,我可以参考一个仓库来获取一个特定的模板吗?
  • 是的,你可以选择一个模板,很明显;)
  • 如果您的管道在另一个存储库中有模板,或者如果您想对需要服务连接的存储库使用多存储库签出,则必须让系统知道该存储库。 repository 关键字允许您指定外部存储库。在这里查看:docs.microsoft.com/en-us/azure/devops/pipelines/….

标签: git azure-devops yaml


【解决方案1】:

正如@4c74356b41 提到的,保持与 git 的耦合并没有什么不好。没有比在 git repo 中保留 YAML 模板更好的方法了。如果您在项目或组织中有共同点,请仅为模板创建单独的存储库。是的,您可以指向该存储库中的特定模板。请看here

如果你有 repo Contoso/BuildTemplates 和 `common.yml' 那里

# Repo: Contoso/BuildTemplates
# File: common.yml
parameters:
- name: 'vmImage'
  default: 'ubuntu 16.04'
  type: string

jobs:
- job: Build
  pool:
    vmImage: ${{ parameters.vmImage }}
  steps:
  - script: npm install
  - script: npm test

你可以像这样在另一个 repo 中引用这个模板:

# Repo: Contoso/LinuxProduct
# File: azure-pipelines.yml
resources:
  repositories:
    - repository: templates
      type: github
      name: Contoso/BuildTemplates

jobs:
- template: common.yml@templates  # Template reference

其中common.yml 是模板的名称,templates 是您保存模板的仓库的别名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-10
    • 2021-10-14
    • 1970-01-01
    • 2020-09-26
    • 2020-03-01
    • 2020-08-13
    • 1970-01-01
    • 2021-01-11
    相关资源
    最近更新 更多