【问题标题】:How to organize azure-pipeline.yaml files如何组织 azure-pipeline.yaml 文件
【发布时间】:2020-08-31 11:42:51
【问题描述】:

我已经阅读了官方文档,将yaml文件放在项目的根目录下。我正在考虑创建某种管道存储库,其中包含几个 yaml 文件,负责不同项目的不同管道工作流程。但 Azure 管道只能识别 azure-pipeline.yaml 文件名。

问题: 显然不可能在同一个文件夹下创建多个具有相同 azure-pipeline.yaml 名称的 yaml 文件。组织 azure 管道 yaml 文件的最佳做法是什么?是不是直接放到项目的根目录下?

【问题讨论】:

  • 你好朋友,这个问题有更新吗?如果您自己找到了此问题的答案,请考虑将其添加为答案,以便有类似问题的会员也可以从中受益。只是一个提醒:)

标签: azure-devops yaml azure-pipelines


【解决方案1】:

显然不可能用 同一文件夹下的相同 azure-pipeline.yaml 名称。

是的,不能在同一个文件夹下创建多个同名的 yaml 管道。原因是 yaml 管道受版本控制,Azure Devops git 不支持同一文件夹中的两个同名文件...

我们可以做的是在同一个文件夹中创建多个不同名称的管道,例如azure-pipeline.yaml,azure-pipelines-1.yml,azure-pipelines-2.yml等等。

不确定您在编辑 yaml 管道时是否知道此选项:

我们可以在源码管理中轻松更改yaml文件的名称,这里只需要修改路径即可:

组织 azure 管道 yaml 文件的最佳做法是什么? 是不是直接放到项目的根目录下?

假设您拥有一个团队项目,其中包含两个存储库 A 和 B:

如果 A 和 B 都代表一个最终产品的模块,那么 A 和 B 应该有相应的管道。这意味着在大多数情况下,您应该在 RepoA 中至少有一个管道,在 RepoB 中应该有一个。他们都需要对应的azure-pipeline.yaml文件。

现在如果 RepoA 中的 azure-pipeline.yaml 和 RepoB 中的 azure-pipeline.yaml 有许多相同的变量/任务/作业,我们可以考虑将重复的内容移动到 templates。我们可以在同一个项目中创建一个 RepoC 来存储模板,在这个模板 repo 中,我们不需要在这里创建 yaml 管道。

关于如何在 RepoA 的管道中引用 RepoC 中的模板,请参阅this document。如果源码在github,可以查看Krzysztof的链接。如果 RepoC 位于 Azure Devops Repos 并且与您的 RepoA 和 RepoB 相同的项目中,您可以采用以下格式:

resources:
  repositories:
  - repository: templates
    type: git
    name: RepoC
    ref: refs/heads/master

综上所述,功能性repos(有源代码的)应该有相应的yaml管道。如果你想出于某种目的监控一个 repo(没有源代码)中的变化,你也可以在其中有一个 yaml 管道。对于模板仓库,不需要 yaml 管道。

此外,除了 yaml 管道,您有时可能会使用不受版本控制的经典构建/发布管道。见this

【讨论】:

    【解决方案2】:

    听起来templates 可能就是您要找的东西。这假设您有一个项目/存储库和一个想要拆分的大型管道,以便更容易阅读或推理各个部分。

    以链接文档页面为例,您可以像这样定义模板 yaml 文件(例如:include-npm-steps.yml):

    steps:
    - script: npm install
    - script: yarn install
    - script: npm run compile
    

    然后将其作为“模块”包含在主 azure-pipelines.yml 文件中,如下所示:

    jobs:
    - job: Linux
      pool:
        vmImage: 'ubuntu-latest'
      steps:
      - template: templates/include-npm-steps.yml  # Template reference
    - job: Windows
      pool:
        vmImage: 'windows-latest'
      steps:
      - template: templates/include-npm-steps.yml  # Template reference
    

    【讨论】:

    • 如果我有多个项目/repo。是否建议在其根文件中为每个 repo 创建一个 azure-yaml 文件,或者创建一个 repo 以一起管理所有 azure 管道 yaml 文件?
    • 在我看来,您应该将主 yaml 文件保留在它描述构建的存储库中。但是,您可能有单独的模板存储库,并在其他存储库中重复使用它们。
    • @KrzysztofMadej 如果管道涉及超过 2 个存储库,Azure 管道服务如何找到存储模板的第二个存储库?
    • 你应该使用资源。请检查这个问题:stackoverflow.com/questions/61729574/…
    猜你喜欢
    • 2020-05-06
    • 2020-04-14
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多