在同一代码仓库中存储YAML流水线是否是一种不好的做法

146次阅读
没有评论

问题描述

创建了一些YAML流水线,并将它们存储在正在部署的应用程序的git仓库中。问题是,现在有一些工具存储在不同的仓库中,并且经常重用相同的YAML模板,这些模板在多个仓库中重复出现。例如,用户在所有流水线中都使用完全相同的yml模板来生成版本字符串,并且这些模板在所有具有流水线的仓库中都重复出现。此外,使用git flow时,当用户更新一个YAML流水线时,用户使用一个单独的DevOpsDevelopment分支和CodeDevelopment分支,两者都合并到主分支中,代码分支在发布时合并,而DevOps开发分支在更改“可行”时合并。用户不喜欢在多个仓库中重复相同的模板,并且不确定是否使用2个开发分支是最佳方法,想知道是否有更好的方法来解决这个问题,比如使用一个专门的DevOps仓库,或者有什么更好的方法?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在Azure DevOps中,你可以使用”Includes”功能,将模板存储在中央仓库中,并且只在项目仓库中引用它们。以下是如何使用其他仓库的模板的步骤:
1. 创建一个专门的DevOps仓库,用于存储所有的YAML模板。
2. 在该仓库中创建一个文件夹,用于存储模板文件。
3. 将所有的YAML模板文件放入该文件夹中。
4. 在项目仓库的YAML流水线中,使用resources关键字来引用DevOps仓库中的模板文件。
以下是一个示例:

resources:
  repositories:
    - repository: templates
      type: git
      name: your_devops_repository
      ref: refs/heads/main

jobs:
  - job: Build
    steps:
      - template: templates/path/to/your/template.yml@templates

在上面的示例中,我们首先使用resources关键字定义了一个名为templates的资源库,类型为git,并指定了DevOps仓库的名称和引用。然后,在流水线的jobs部分中,我们使用template关键字来引用DevOps仓库中的模板文件。请注意,templates/path/to/your/template.yml是模板文件在DevOps仓库中的路径。
使用这种方法,你可以将所有的YAML模板集中存储在一个专门的DevOps仓库中,并在项目仓库的流水线中引用它们,避免了在多个仓库中重复存储和维护模板文件的问题。

方案2

使用单独的DevOps仓库来存储YAML模板可以更好地组织和管理它们,并避免在多个仓库中重复存储和维护模板文件。
另一种方法是创建一个单独的DevOps仓库,用于存储所有的YAML模板。这样做可以更好地组织和管理模板,并避免在多个仓库中重复存储和维护模板文件的问题。以下是一些步骤来实现这个方法:
1. 创建一个专门的DevOps仓库,用于存储所有的YAML模板。
2. 在该仓库中创建一个文件夹,用于存储模板文件。
3. 将所有的YAML模板文件放入该文件夹中。
4. 在项目仓库的YAML流水线中,使用resources关键字来引用DevOps仓库中的模板文件。
以下是一个示例:

resources:
  repositories:
    - repository: templates
      type: git
      name: your_devops_repository
      ref: refs/heads/main

jobs:
  - job: Build
    steps:
      - template: templates/path/to/your/template.yml@templates

在上面的示例中,我们首先使用resources关键字定义了一个名为templates的资源库,类型为git,并指定了DevOps仓库的名称和引用。然后,在流水线的jobs部分中,我们使用template关键字来引用DevOps仓库中的模板文件。请注意,templates/path/to/your/template.yml是模板文件在DevOps仓库中的路径。
使用这种方法,你可以将所有的YAML模板集中存储在一个专门的DevOps仓库中,并在项目仓库的流水线中引用它们,避免了在多个仓库中重复存储和维护模板文件的问题。

方案3

使用单独的DevOps仓库来存储YAML模板可以更好地组织和管理它们,并避免在多个仓库中重复存储和维护模板文件。
另一种方法是创建一个单独的DevOps仓库,用于存储所有的YAML模板。这样做可以更好地组织和管理模板,并避免在多个仓库中重复存储和维护模板文件的问题。以下是一些步骤来实现这个方法:
1. 创建一个专门的DevOps仓库,用于存储所有的YAML模板。
2. 在该仓库中创建一个文件夹,用于存储模板文件。
3. 将所有的YAML模板文件放入该文件夹中。
4. 在项目仓库的YAML流水线中,使用resources关键字来引用DevOps仓库中的模板文件。
以下是一个示例:

resources:
  repositories:
    - repository: templates
      type: git
      name: your_devops_repository
      ref: refs/heads/main

jobs:
  - job: Build
    steps:
      - template: templates/path/to/your/template.yml@templates

在上面的示例中,我们首先使用resources关键字定义了一个名为templates的资源库,类型为git,并指定了DevOps仓库的名称和引用。然后,在流水线的jobs部分中,我们使用template关键字来引用DevOps仓库中的模板文件。请注意,templates/path/to/your/template.yml是模板文件在DevOps仓库中的路径。
使用这种方法,你可以将所有的YAML模板集中存储在一个专门的DevOps仓库中,并在项目仓库的流水线中引用它们,避免了在多个仓库中重复存储和维护模板文件的问题。
以上是几种解决方案,你可以根据自己的需求选择其中一种或多种方法来解决在同一代码仓库中存储YAML流水线的问题。希望对你有所帮助!

正文完