提升和部署库存更改

DevSecOps 参考实现 有助于确保在代码变更被合并、升级并部署到生产环境之前,对其进行审核。 请参阅 同行评审合规性最佳实践,以了解有关提供安全合规软件的同行评审的更多信息。

将库存条目从源提升到目标分支

要将代码更改从源分支提升到库存存储库的目标 (登台,生产) 分支,请完成以下步骤:

  1. 连续集成管道使用 库存条目 填充源 (主) 分支。 使用持续部署 提升管道 将此内容从源 (主) 分支提升到目标 (登台或生产) 分支。

    1. 从 cd-pipeline 仪表板中,单击 运行管道。
    2. 选择 手动提升触发器。
    3. 单击运行。 管道运行将创建合并请求,以将代码更改从源分支提升到目标分支。

    手动促销触发器 "
    手动促销触发器

  2. 核准并合并拉取请求。

    1. 单击管道运行并检查提升管道的执行日志。

    磁共振执行日志
    磁共振执行日志

    1. 找到合并请求的 URL 并打开合并请求。
    2. 填充 必填字段 ("优先级","变更请求受理人","其他描述" 和其他字段)。
    3. 合并合并请求 (MR) 以将更改从源分支提升到目标分支。

现在,您的更改已提升到目标分支,您可以使用 持续部署管道 来部署这些更改。

使用推广验证管道

促销 PR 打开后,您可以选择在促销验证管道中执行证据聚合和摘要生成,并在促销拉 动/合并请求 (PR) 上设置证据状态。 PR 可以由推广管道创建,也可以在清单 repo 中手动创建。 了解有关 晋升验证管道的 更多信息。

将更改从 source-environment 部署到 target-environment

源环境和目标环境是在持续部署管道级别定义的。

持续部署管道属性
持续部署管道属性

根据连续部署管道 触发器设置 的触发器设置,在合并请求或手动合并管道后将自动触发管道。 要手动合并管道,请单击 运行管道 并选择要运行的触发器。

管道将启动并使用管道运行标识标记库存存储库中的当前落实。 管道使用该标记从目标分支 (生产) 获取内容,并计算当前落实与上次成功部署的内容之间的部署增量。 增量由 <target-environment>_latest 标记标记,其中 target-environment 是在连续部署管道属性 (例如 prod_latest) 中设置的值。

管道尝试部署内容。 在部署期间,会将变更请求标识附加到管道用作标记的落实。 当部署阶段或任务成功完成后,管道将通过向您已提拔的提交添加 <target-environment>_latest 标签来结束整个流程。

Git Repos and Issue Trackingrepo 标签
Git Repos and Issue Trackingrepo 标签

有关清单工作流程的更多信息,请参阅 了解DevSecOps管道。

更新库存中的图片位置

将镜像推广到目标容器注册表后,请更新库存中的镜像位置,使其指向已推广的镜像。

使用 cocoa inventory update-locations 命令更新库存存储库中的工件位置。

cocoa inventory update-locations \
  --name="${inventory_image_type}/inventory.json" \
  --org="<org>" \
  --repo="<repo-name>" \
  --location="prod#${inventory_target_name}@${DIGEST}" \
  --environment="master"

例如:

cocoa inventory update-locations \
  --name="<inventory-entry-name>/inventory.json" \
  --org="<org-name>" \
  --repo="<repo-name>" \
  --location="prod#icr.io/.../baseimage:4.x.y@sha256:..." \
  --environment="master"

--location 参数指定目标镜像的位置及其 SHA-256 摘要。 位置的格式如下:

<environment>#<image>:<tag>@sha256:<digest>

例如:

prod#icr.io/<namespace>/<repository>/baseimage:4.x.y@sha256:<digest>

形象推广与签名活动

在更新库存之前,必须将映像复制到目标注册表中,并且该映像必须具有有效的签名,以便用于目标映像引用。

在映像经过推广和签名后,获取目标注册表中该映像的摘要,并将该摘要用于 cocoa inventory update-locations。 {: important} 在镜像被升级并签名后,运行 cocoa inventory update-locations。 清单必须引用目标注册表中的映像及其对应的映像摘要。

晋升工作流程

发布工作流如下:

  1. 将源注册表中的映像推广到目标注册表。
  2. 获取目标注册表中推广图片的摘要。
  3. 运行 cocoa inventory update-locations,并提供目标镜像的位置和摘要。

cocoa inventory update-locations 命令用于更新库存元数据。 它不会复制或对容器镜像进行签名。