SLN*_*SLN 6 yaml azure-devops azure-pipelines
我已经阅读了官方文档,将 yaml 文件放在项目的根目录中。我正在考虑创建某种管道存储库,其中包含多个 yaml 文件,负责不同项目的不同管道工作流程。但Azure管道仅识别azure-pipeline.yaml文件名。
问题:显然不可能在同一文件夹下创建多个具有相同azure-pipeline.yaml名称的 yaml 文件。组织 azure pipeline yaml 文件的最佳实践是什么?是否应该将其放在项目的根目录中?
小智 6
听起来模板可能就是您正在寻找的东西。这假设您有一个项目/存储库和一个您想要拆分的大型管道,以便更容易阅读或推理各个部分。
以链接文档页面中的示例为例,您可以定义一个模板 yaml 文件,如下所示(例如include-npm-steps.yml:):
steps:
- script: npm install
- script: yarn install
- script: npm run compile
Run Code Online (Sandbox Code Playgroud)
然后将其作为“模块”包含在主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
Run Code Online (Sandbox Code Playgroud)
显然不可能在同一文件夹下创建多个具有相同 azure-pipeline.yaml 名称的 yaml 文件。
是的,不可能在同一文件夹下创建多个具有相同名称的 yaml 管道。因为 yaml 管道受版本控制,并且 Azure Devops git 不支持同一文件夹中具有相同名称的两个文件...
我们可以做的是在同一个文件夹中创建多个具有不同名称的管道,例如azure-pipeline.yaml、azure-pipelines-1.yml等azure-pipelines-2.yml。
不确定您在编辑 yaml pipeline 时是否知道这个选项:
我们可以轻松地在源代码管理中更改yaml文件的名称,我们只需要修改这里的路径:
组织 azure pipeline yaml 文件的最佳实践是什么?是否应该将其放在项目的根目录中?
假设您拥有一个包含两个存储库 A 和 B 的团队项目:
如果A和B都代表一个最终产品的模块,那么A和B就应该有相应的管道。这意味着在大多数情况下,您应该在RepoA中至少有一个管道,在RepoB中至少有一个管道。他们都需要相应的azure-pipeline.yaml文件。
现在如果azure-pipeline.yamlRepoA 和azure-pipeline.yamlRepoB 有许多相同的变量/任务/作业,我们可以考虑将重复的内容移到templates中。我们可以在同一个项目中创建一个RepoC来存储模板,并且在这个模板存储库中,我们不需要在这里创建yaml管道。
关于如何在RepoA的管道中引用RepoC中的模板,请参阅此文档。如果源码在github,可以查看Krzysztof的链接。如果 RepoC 位于 Azure Devops Repos 中,并且与 RepoA 和 RepoB 位于同一项目中,则可以采用以下格式:
resources:
repositories:
- repository: templates
type: git
name: RepoC
ref: refs/heads/master
Run Code Online (Sandbox Code Playgroud)
综上所述,功能性仓库(带有源代码的仓库)应该有相应的 yaml 管道。如果您想出于某种目的监控一个存储库(没有源代码)中的更改,您也可以在其中使用一个 yaml 管道。对于模板存储库,不需要 yaml 管道。
此外,除了 yaml 管道之外,您有时可能会使用不受版本控制的经典构建/发布管道。看到这个。
| 归档时间: |
|
| 查看次数: |
8719 次 |
| 最近记录: |