提升和部署库存更改
DevSecOps 参考实现 有助于确保在代码变更被合并、升级并部署到生产环境之前,对其进行审核。 请参阅 同行评审合规性最佳实践,以了解有关提供安全合规软件的同行评审的更多信息。
将库存条目从源提升到目标分支
要将代码更改从源分支提升到库存存储库的目标 (登台,生产) 分支,请完成以下步骤:
-
连续集成管道使用 库存条目 填充源 (主) 分支。 使用持续部署 提升管道 将此内容从源 (主) 分支提升到目标 (登台或生产) 分支。
- 从 cd-pipeline 仪表板中,单击 运行管道。
- 选择 手动提升触发器。
- 单击运行。 管道运行将创建合并请求,以将代码更改从源分支提升到目标分支。
手动促销触发器 -
核准并合并拉取请求。
- 单击管道运行并检查提升管道的执行日志。
磁共振执行日志 - 找到合并请求的 URL 并打开合并请求。
- 填充 必填字段 ("优先级","变更请求受理人","其他描述" 和其他字段)。
- 合并合并请求 (MR) 以将更改从源分支提升到目标分支。
现在,您的更改已提升到目标分支,您可以使用 持续部署管道 来部署这些更改。
使用推广验证管道
促销 PR 打开后,您可以选择在促销验证管道中执行证据聚合和摘要生成,并在促销拉 动/合并请求 (PR) 上设置证据状态。 PR 可以由推广管道创建,也可以在清单 repo 中手动创建。 了解有关 晋升验证管道的 更多信息。
将更改从 source-environment 部署到 target-environment
源环境和目标环境是在持续部署管道级别定义的。
根据连续部署管道 触发器设置 的触发器设置,在合并请求或手动合并管道后将自动触发管道。 要手动合并管道,请单击 运行管道 并选择要运行的触发器。
管道将启动并使用管道运行标识标记库存存储库中的当前落实。 管道使用该标记从目标分支 (生产) 获取内容,并计算当前落实与上次成功部署的内容之间的部署增量。 增量由 <target-environment>_latest 标记标记,其中 target-environment 是在连续部署管道属性 (例如 prod_latest) 中设置的值。
管道尝试部署内容。 在部署期间,会将变更请求标识附加到管道用作标记的落实。 当部署阶段或任务成功完成后,管道将通过向您已提拔的提交添加 <target-environment>_latest 标签来结束整个流程。
有关清单工作流程的更多信息,请参阅 了解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。 清单必须引用目标注册表中的映像及其对应的映像摘要。
晋升工作流程
发布工作流如下:
- 将源注册表中的映像推广到目标注册表。
- 获取目标注册表中推广图片的摘要。
- 运行
cocoa inventory update-locations,并提供目标镜像的位置和摘要。
cocoa inventory update-locations 命令用于更新库存元数据。 它不会复制或对容器镜像进行签名。