促销管道

提升管道将库存条目从一个环境提升到另一个环境,并创建提升拉取/合并请求。

晋升过程中的职责分离

  • 主要通过 Pull Request 工作流实现的晋升

    • → 创建推广 PR(例如:从源环境分支到目标环境分支)
    • → 审核/编辑拉取请求(包括检查拉取请求的验证状态)
    • → 将 PR 合并到目标环境分支
    • → 运行 CD 部署管道(在提交、定时或手动触发时)
    • → 冲洗并重复此操作,以处理下一个环境分支
    • → 可以拥有任意数量的环境分支
  • 角色

    • 开发人员:提交代码,从而触发持续集成(CI)管道更新主(非生产环境)库存
    • 发布运营/发布经理:触发发布流程(主分支→预发布分支和/或预发布分支→生产分支),创建拉取请求并进行状态检查以控制发布门槛(通过工具链访问控制列表和代码库分支保护机制强制执行)
    • 生产运维 / 审批人:审核并将发布拉取请求合并到生产分支。 运行生产管道。(通过库存分支保护强制执行)
  • 利用 用于预发布环境和生产环境的独立 CD 工具链 工作负载(不同的运维流程)

  • 这意味着开发人员可以准备一个变更,但如果分支保护机制要求必须由另一位审批人批准,则无法单方面将其部署到生产环境。

  • 发布PR将成为正式的变更审批记录,而合并历史则提供了可审计的证据,证明是谁在何时批准了生产环境的发布。

促销管道步骤

  1. 获取促销和促销拉取/合并请求的输入。
  2. 将库存条目从源环境提升到目标环境。
  3. 创建提升拉取/合并请求。 编辑拉取/合并请求以指示要执行的更改。 监视可选字段和必填字段。
  4. 可选。 设置证据状态,并将聚集的证据摘要添加到提升拉取/合并请求。
  5. 合并拉取/合并请求。
  6. 如果功能部件已开启,请发送 Slack 通知。

阶段与任务

下表列出了在推广管道中运行的任务。 此外,该表格还概述了上述各个阶段的情况:

  • 任务或阶段:指在 .pipeline-config.yaml 配置文件中定义的阶段名称。

  • 简要说明:此处简要说明了该阶段执行过程中所执行的操作。

  • 允许自定义:这表示用户是否可以通过在 .pipeline-config.yaml 文件中插入自定义脚本,来修改或替换该阶段的默认行为。

  • 默认参考实现:这表示 DevSecOps 管道是否为该阶段提供了预定义或默认的实现。 值得注意的是,对于某些阶段(如 unit-testssetup ),DevSecOps 管道并未提供任何开箱即用的实现。 相反,用户需要提供根据其应用程序要求量身定制的脚本或代码。

  • 证据收集:此项用于说明该阶段是否进行标准证据的收集工作。 当 DevSecOps Pipeline为某个阶段提供参考实现时,证据收集功能开箱即用。 但是,如果用户选择修改或替换这些预定义阶段,则必须确保其自定义实现中包含了适当的证据收集措施。 对于 DevSecOps 管道未提供开箱即用实现的阶段,用户同样负有相应责任,需要自行进行证据收集。 该列指明了负责执行证据收集工作的实体( 用户/流程 )。

  • 允许跳过(适用于版本 >= v10 ):这表示用户是否可以通过在 .pipeline-config.yaml 中将skip属性设置为true来选择跳过此阶段的执行。 不过,使用此功能时应谨慎,特别是在旨在收集证据的阶段。 跳过这些阶段可能会导致遗漏构建所需的必要证据。

晋升流程的各个阶段和任务
任务或阶段 简短描述 允许在以下方面进行定制:.pipeline-config.yaml 默认参考实现 证据收集 允许跳过
inventory-promotion 为此次推广创建拉取请求。 不适用
inventory-finish 收集并上传日志文件、相关资料和证据至证据库。 不适用

有关如何使用 .pipeline-config.yaml 文件自定义阶段的更多信息,请参阅 “自定义脚本”和“管道参数 列表”。

运行提升管道

使用手动促销触发器来运行促销管道。 如果源 (主) 分支位于目标 (生产) 分支之前,那么管道将创建您可以复审和编辑的提升拉取/合并请求。 如果源分支位于目标后面,那么提升管道将失败并显示 All changes have already been promoted 消息。

要修改提升拉取/合并请求的缺省值,或者要从备用源提升到目标,用户可以从管道环境变量 UI 修改 输入

在运行持续部署管道之前,请确保已合并提升拉取/合并请求。 您可以在管道日志中找到拉取 URL /合并请求。

有关库存和促销过程的更多信息,请参阅 库存促销

部分促销库存商品

部分促销方法允许促销渠道促销可用库存的选定子集。

在此语境下,一个库存条目指的是库存仓库中存在的单个文件(属于库存类型),该文件将映射到本地文件系统上的一个唯一文件名

使用参数 inventory-includeinventory-exclude 启用部分促销方法。

使用时 inventory-include,该环境属性中提供的模式/文件名解析为其各自的条目并由管道提升。 同样,在 inventory-exclude 被排除在促销之外。

该格式利用 glob 模式(也支持完整路径),类似于 CC-pipeline 中遵循的格式。 有关 glob 模式的更多信息,请参阅 全局手动的。

部分促销中应用的筛选

部分提升应用了两个级别的过滤 - 使用 .inventoryignore 文件并根据给定的 glob 模式应用过滤 inventory-includeinventory-exclude

使用 .inventoryignore 文件

若要在每次部分升级运行以及 CD 管道运行中默认排除一组文件或文件夹,您可以将文件/文件夹列表添加到 .inventoryignore 文件来排除这些条目。

从中筛选出条目后,即可获得可用条目列表(管道可以提升的条目).inventoryignore 文件。

管道搜索 .inventoryignore 文件位于存储库的根目录。 如果您希望为库存排除文件指定不同的名称,您可以通过设置 inventory-ignore-file 作为管道内的环境属性的键。 确保此文件位于库存存储库的根目录。

使用 inventory-include 参数

筛选后可推广的条目列表 inventory-include 和/或 inventory-exclude

如果两者 inventory-includeinventory-exclude 存在,inventory-include 优先,然后 inventory-exclude 从包含列表定义的子集中排除项目。

如果提供了其中一个变量,管道将尝试解析 glob 模式的完整路径或仅直接文件名,并继续进行部分提升。

只有两个过滤级别之间的公共条目列表才会被管道提升。

inventory-include 和 inventory-exclude 参数的使用示例

本节展示了使用 glob 模式的示例,并将其合并到 inventory-includeinventory-exclude 参数。 这是库存存储库的示例目录结构,包含微服务、(嵌套)配置文件和 Helm 图表。

cd-pipeline-deps
my-application-plugin-component-config
my-application-plugin-component-diagnostic-monitor
configuration # directory entry
configuration/my-staging-region # directory entry
configuration/my-staging-region/environment-1-cluster # directory entry
configuration/my-staging-region/environment-1-cluster/serviceA-component_config
configuration/my-staging-region/environment-1-cluster/serviceB-system_config
configuration/my-staging-region/environment-1-cluster/serviceC-params_config
configuration/serviceX-dashboard-setup_helm
configuration/serviceY-releases_helm
my-application-task-runner
my-application-dashboard
my-application-dashboard_deployment
my-application-module
my-application-module_deployment
.inventoryignore
global_deployment
README.md

选择组件的所有子模块条目

inventory-include 设置:*plugin-component*

选定的库存条目:

    my-application-plugin-component-config
    my-application-plugin-component-diagnostic-monitor

选择给定配置文件夹中的所有 Helm Chart

inventory-include 设置:configuration/*helm

选定的库存条目:

    configuration/serviceX-dashboard-setup_helm
    configuration/serviceY-releases_helm

选择特定环境的所有配置文件

inventory-include 设置:configuration/my-staging-region/environment-1-cluster/*_config

选定的库存条目:

    configuration/my-staging-region/environment-1-cluster/serviceA-component_config
    configuration/my-staging-region/environment-1-cluster/serviceB-system_config
    configuration/my-staging-region/environment-1-cluster/serviceC-params_config

仅选择一个组件

inventory-include 设置:my-application-dashboard*

选定的库存条目:

    my-application-dashboard
    my-application-dashboard_deployment

在 inventory-include 中使用 glob 模式组合

inventory-include 设置:*plugin-component*,configuration/*helm

选定的库存条目:

    my-application-plugin-component-config
    my-application-plugin-component-diagnostic-monitor
    configuration/serviceX-dashboard-setup_helm
    configuration/serviceY-releases_helm

在 inventory-exclude 中使用 glob 模式组合

inventory-exclude 设置:configuration/**, my-application-dashboard*

选定的库存条目:

    cd-pipeline-deps
    my-application-plugin-component-config
    my-application-plugin-component-diagnostic-monitor
    my-application-task-runner
    my-application-module
    my-application-module_deployment
    .inventoryignore
    global_deployment

提升拉取/合并请求

来自提升拉取/合并请求主体的信息用于创建变更请求。 提升拉取/合并请求更改的文件表示由连续部署管道部署的条目 (例如映像)。 如果由于紧急情况而进行了更改,那么将使用紧急标签来标记提升拉取/合并请求。 由连续部署管道创建的变更请求也标记为 emergency

将汇总在持续集成管道中收集的证据,并将其附加到持续部署管道中的变更请求。

促销验证管道

打开促销 PR 后,您可以选择在促销验证管道中执行证据聚集和摘要生成,并在促销拉取/合并请求 (PR) 上设置证据状态。 PR 可以由促销管道创建,也可以在库存存储库中手动创建。

管道支持在将 PR 合并到目标分支 (环境) 之前对促销 PR 进行早期验证。 根据 PR 的状态,用户可以继续促销 (当所有证据状态为绿色时),也可以选择在持续集成管道中修正问题 (当证据状态为红色时)。

此外,验证管道还会将库存中一个或多个应用程序的证据汇总摘要,以用户友好的表格格式(如图3所示)作为评论添加到提拔拉取/合并请求中。 该表格提供了有用的链接,例如指向管道运行、应用程序存储库以及为每个应用程序创建的问题的链接。

默认情况下,详细证据状态表中的每行都对应源存储库提供的应用程序上下文,该存储库用于创建库存条目中引用的工件。 此应用程序的默认分组可根据对每个库存条目文件应用JSON过滤器(定义在属性中 application-group-by-filter)所获得的分组值进行自定义。

正在进行验证时,将阻止对提升拉取/合并请求进行合并。 验证管道完成后,将在拉取/合并请求上设置证据状态。 单击状态中的每个条目会将用户带到相应 CI 管道运行中的特定阶段。

阶段与任务

下表列出了在“推广验证管道”中运行的任务。 此外,该表还概述了上述各个阶段的情况:

  • 任务或阶段:指在 .pipeline-config.yaml 配置文件中定义的阶段名称。

  • 简要说明:此处简要说明了该阶段执行过程中所执行的操作。

  • 允许自定义:这表示用户是否可以通过在 .pipeline-config.yaml 文件中插入自定义脚本,来修改或替换该阶段的默认行为。

  • 默认参考实现:这表示 DevSecOps 管道是否为该阶段提供了预定义或默认的实现。 值得注意的是,对于某些阶段(如 unit-testssetup ),DevSecOps 管道并未提供任何开箱即用的实现。 相反,用户需要提供根据其应用程序要求量身定制的脚本或代码。

  • 证据收集:此项用于说明该阶段是否进行标准证据的收集工作。 当 DevSecOps Pipeline为某个阶段提供参考实现时,证据收集功能开箱即用。 但是,如果用户选择修改或替换这些预定义阶段,则必须确保其自定义实现中包含了适当的证据收集措施。 对于 DevSecOps 管道未提供开箱即用实现的阶段,用户同样负有相应责任,需要自行进行证据收集。 该列指明了负责执行证据收集工作的实体( 用户/流程 )。

  • 允许跳过(适用于版本 >= v10 ):这表示用户是否可以通过在 .pipeline-config.yaml 中将skip属性设置为true来选择跳过此阶段的执行。 不过,使用此功能时应谨慎,特别是在旨在收集证据的阶段。 跳过这些阶段可能会导致遗漏构建所需的必要证据。

促销验证流程的各个阶段和任务
任务或阶段 简短描述 允许在以下方面进行定制:.pipeline-config.yaml 默认参考实现 证据收集 允许跳过
inventory-validation 验证为此次晋升提交的拉取请求。 不适用
validation-finish 收集并上传日志文件、相关资料和证据至证据库。 不适用

有关如何使用 .pipeline-config.yaml 文件自定义阶段的更多信息,请参阅 “自定义脚本”和“管道参数 列表”。

如何选择性加入促销验证?

弃用 用于自动启动拉取请求中的推广验证管道的 opt-in-promotion-validation 选项已被 deprecated,取而代之的是 Git Promotion Validation trigger。 如果您在环境设置中具有此属性,那么将在管道日志和 Slack 通知中看到废弃通知。

如何启用推广验证?

对于所有新的 CD 工具链,系统会自动创建“Git”推广验证触发器,并将其设置为启用状态。

要在现有管道上启用 Git 促销验证触发器,可以使用以下步骤。

  1. 转至要将其添加到的 CD 管道的 触发器 页面。
  2. 选择 添加> Git 存储库 以添加新触发器。
  3. 输入触发器所需的以下信息:
    • 提供触发器名称。 例如: Git 促销验证触发器。
    • promotion-validation-listener or promotion-validation-listener-gitlab 指定为 EventListener
    • 存储库 字段的管道选择相应的库存存储库。
    • 选择 分支的目标环境的名称。
    • 选中 打开或更新拉取请求时字段的框。
  4. 单击添加
  5. 将触发器设置为 On

输入

推广管道投入
变量 描述 缺省值 必需或可选
源环境 促销的源库存分支。 master 必需
目标环境 促销的目标库存分支。 prod 必需
优先级 更改的优先级。 criticalhighmoderatelowplanning 可选
受托人 要在变更请求 IBM Cloud 组织中向其分配变更请求的人员的功能标识或电子邮件。 '' 可选
描述 附加到变更请求描述的变更的描述。 '' 可选
用途 需要更改的原因。 '' 可选
影响 有关此更改实现的影响的更多说明。 '' 可选
库存忽略文件 .inventoryignore 文件的自定义文件名,该文件包含每次部分促销运行时要忽略的文件/文件夹列表。 .inventoryignore 可选
库存包括 有选择地推广(部分推广)的库存条目。 '' 可选
库存排除 部分促销中要排除的库存条目。 '' 可选
回退计划 描述如何在故障中回滚更改的计划。 '' 可选
Slack-通知 用于打开或关闭 Slack 集成的开关 0 可选
客户影响 更改对客户的影响。 criticalhighmoderatelowno_impact 可选

产出和影响

  • Slack 通知
  • 提升拉取/合并请求

如果未提供可选参数,那么必须编辑和修改拉取/合并请求。

表 2.Optional 参数
变量 描述 必需或可选
优先级 下列其中一个值: CriticalHighModerateLowPlanning 必需
变更请求受让人 受让人的电子邮件标识。 必需
其他描述 有关应用程序中的更改的描述。 可选
用途 对应用程序进行的更改的用途。 可选
影响说明 更改对应用程序行为或环境的影响。 可选
Customer Impact 下列其中一个值: CriticalHighModerateLowNo_Impact 必需
部署影响 下列其中一个值: SmallLarge 必需
回退计划 部署失败时回退的步骤。 可选

推广拉动和合并请求
推广拉动和合并请求

运行 (可选) 促销 PR 验证时,将在拉取/合并请求上设置证据状态。

促销拉动和合并请求的可选证据状态设置 "
促销拉动和合并请求的证据状态

证据 (可能来自库存中的多个应用程序) 的汇总证据摘要以表格格式显示为 PR 中的注释。

可选的汇总证据摘要,包含在推广拉动和合并请求的注释中
推广拉动和合并请求中的汇总证据摘要

下一步

在提升管道成功完成后,您可以 继续到 CD 管道