在一个 CI 工具链上配置多个应用程序
通过 Continuous Integration (CI) 运行服务产品时,请考虑将所有产品微服务或组件整合到单个公共工具链中,而不是管理每个存储库的多个工具链。
要配置 CI 管道 和 拉取请求(PR)管道 以用于多个应用程序的存储库,很简单。 使用以下步骤和更改来启用多个应用程序。
工具链定制
通过将工具链添加到多个应用程序并增加其功能来定制工具链。 下面是具体步骤:
-
为要在工具链管道上构建的每个应用程序添加 GitHub 工具集成。
-
针对可针对特定应用程序配置的任何额外 问题,库存 和 证据 存储库添加更多 GitHub 集成。
-
请参阅文档页面和最佳实践,以了解应用程序是否需要这些额外的存储库。
-
一个库存和问题存储库应该足够了。 但是,您可能希望每个应用程序都有不同的证据存储库,以避免存储库结构的复杂性。 单独的存储库可帮助您了解您正在查看的应用程序。
-
应用程序 存储库还可以充当其自己的问题存储库。 仅当在工具集成上启用了 GitHub 问题选项时,这才适用。
-
库存 存储库必须足以作为用于记录构建记录的单个合并存储库,因为这些记录已被
app-name
划分,只要该参数不同,任何内容都不会丢失或混淆。 虽然您可能希望查阅 库存文档 以了解有关如何处理此存储库的想法,因为其主要功能是帮助支持持续部署管道中的部署。
-
-
设置 IBM Cloud® Object Storage 存储区。
IBM Cloud Object Storage 是管道证据工件的首选证据锁定程序方法,并且是审计合规性所必需的。 对引入到 CI 工具链中的每个应用程序使用相同的 Object Storage 存储区。 此外,在将 CI 工具链与 CD 或 CC 工具链集成时,请复用相同的 Object Storage 存储区。
-
可选: 额外的 HashiCorp 保险库文件集成。
由于 HashiCorp 保险库文件工具集成仅支持一条路径,因此根据配置 HashiCorp 保险库文件密钥的方式,您可能需要更多路径。 不同的应用程序可能需要彼此不同的凭证或其他凭证。
CI 和 PR 管道定制
通过使用以下步骤配置 CI 和 PR 管道来对其进行定制:
-
为每个应用程序创建 Git 触发器。
- 复制现有触发器以在创建触发器时保存一些 tedium。
- 确保每个触发器都指向所需的 GitHub 存储库和分支。
- 确保设置了以下触发器属性:
app-name
(文本): 应用程序名称在不同应用程序之间必须唯一。 这是因为在库存中使用应用程序名称,DevOps 洞察以及其他应用程序名称作为放置和记录工件时的唯一标识。cos-bucket-name
(text): 应用程序证据所在的 Object Storage 存储区的名称。
-
每个应用程序的环境属性更改。
- 这是需要更改为每个应用程序的不同值的可能环境属性的列表。 这可以通过使用管道触发器上的触发器属性来完成; 这将使用您自己选择的值覆盖环境属性。
app-name
(文本): 应用程序名称在不同应用程序之间始终需要唯一,因为在放置和记录工件时,会在库存和 DevOps 洞察等中使用应用程序名称作为唯一标识。cos-bucket-name
(text): 应用程序证据所在的 Object Storage 存储区的名称。repository
(文本): 此参数控制克隆到管道的应用程序存储库,并充当各种合规性和安全任务的 CI 和 PR 管道的目标。- 可选:
evidence-repo
(text): 充当应用程序的证据锁定程序的存储库的 URL。 - 可选:
incident-repo
(text): 充当应用程序问题存储库的存储库的 URL。 - 可选:
inventory-repo
(text): 充当应用程序的库存存储库的存储库的 URL。
- 这是需要更改为每个应用程序的不同值的可能环境属性的列表。 这可以通过使用管道触发器上的触发器属性来完成; 这将使用您自己选择的值覆盖环境属性。
-
optional step
为每个应用程序设置手动触发器。- 在技术上,您只需要一个手动触发器,因为它的属性可以在调用时进行编辑,但团队可以使用预先编写的手动触发器来保存一些步骤,以编写应用程序之间的所有可能的小差异。
-
optional step
为应用程序创建计时器触发器。- 最好经常重新构建和重新验证应用程序,这样您就可以持续关注任何合规性和漏洞问题以及任何构建问题。
- 配置触发器属性的方式与配置手动触发器的方式相同,因为计时器触发器只是计时器上的手动触发器。
- 使 cron 作业相互错开,否则可能会使工作程序集群超负荷,并且您的作业可能会遭受增加的构建时间或阶段之间的延迟。
有关可以在管道触发器上或环境属性内设置的其他属性的信息,请参阅 管道参数目录。