持续部署管道
持续部署管道将生成所有证据和变更请求摘要内容。 管道将构建工件部署到环境 (例如登台或生产),然后收集,创建所有现有日志文件,证据和工件并将其上载到证据锁定程序。
阶段和任务
下表列出了在 CD 管道中运行的任务。 此外,该表还提供了以下每个阶段的概述:
-
任务或阶段: 这是指在
.pipeline-config.yaml
配置文件中定义的阶段的名称。 -
简短描述: 提供阶段执行期间执行的操作的简明说明。
-
允许定制: 这指示用户是否具有通过在
.pipeline-config.yaml
文件中插入定制脚本来修改或替换阶段的缺省行为的灵活性。 -
缺省引用实现: 这指示 DevSecOps 管道是随附了该阶段的预定义实现还是缺省实现。 值得注意的是,对于某些阶段 (例如
unit-tests
或setup
),DevSecOps 管道不会提供任何现成的实现。 而是需要用户提供定制脚本或根据其应用程序需求定制的代码。 -
证据收集: 指示阶段是否执行标准证据收集。 当 DevSecOps Pipeline 提供阶段的参考实现时,将即取即用地执行证据收集。 但是,如果 用户 选择修改或替换这些预定义阶段,那么他们必须确保其定制实现包含相应的证据收集。 对于 DevSecOps 管道未提供开箱即用实现的阶段,用户也应承担相同的责任,因此需要他们执行证据收集。 该列指示负责执行证据收集的实体 (用户/管道)。
-
允许跳过 (适用于版本> = v10): 这指示用户是否可以通过在
.pipeline-config.yaml
中将 skip 属性设置为 true 来选择退出运行此阶段。 但是,使用此功能时请务必谨慎,尤其是对于旨在收集证据的阶段。 跳过此类阶段可能会导致缺少构建的基本证据。
任务或阶段 | 简短描述 | 在 .pipeline-config.yaml 中允许定制 |
缺省引用实现 | 证据收集 | 允许跳过 |
---|---|---|---|---|---|
start |
设置管道环境。 | 否 | 是 | 不适用 | 否 |
setup |
设置构建和测试环境。 | 是 | 否 | 不适用 | 否 |
verify-peer-review |
请确保已核准用于当前部署的拉取请求。 此阶段将生成链接到正在进行的部署的拉取请求的列表。 如果任何拉取请求仍未获得批准,那么部署将停止。 | 是 | 是 | 管道 | 是 |
verify-artifact |
验证已安排部署的映像的正确签名。 如果图像缺乏正确的签名,将阻碍部署,并启动相应的证据收集过程。 | 是 | 是 | 管道 | 是 |
change-request |
生成变更请求并创建证据摘要。 | 否 | 是 | 管道 | 否 |
deployment |
将构建工件部署到环境,例如登台或生产。 | 是 | 否 | 不适用 | 否 |
acceptance-test |
在部署上运行验收和集成测试。 | 是 | 否 | 用户 | 是 |
finish |
收集日志文件,工件和证据并将其上载到证据锁定程序。 | 是 | 是 | 管道 | 是 |
rollback |
这是 prod-finish 中的一个步骤,每当迂到回滚方案时都会执行此步骤 |
是 | 是 | 不适用 | 否 |
有关如何使用 .pipeline-config.yaml
文件定制阶段的更多信息,请参阅 定制脚本 和 管道参数 列表。
部署增量
当库存提升准备就绪时,可启动持续部署管道。 部署增量是上次完成的部署的内容与当前部署的内容之间的差异。 部署增量列出了要部署的库存项。
要访问部署脚本中的部署增量,可以使用以下命令:
# return a JSON file path with an array of inventory entries that were changed
get_env DEPLOYMENT_DELTA_PATH
# return a JSON file path with an array of inventory entries that were deleted
get_env DEPLOYMENT_DELTA_DELETIONS_PATH
# returns a JSON file path with an array of all inventory entries
get_env INVENTORY_ENTRIES_PATH
计算部署 BOM
部署材料清单 (BOM) 表示作为单个变更请求的一部分部署的所有工件。 计算部署增量后,管道将根据这些项创建部署 BOM。
收集证据摘要
将根据在导致部署的相关构建期间创建的所有证据创建证据摘要。 部署期间创建的证据本身也会添加到摘要中。 证据摘要将添加到变更请求的描述中。 缺省情况下,证据摘要包含在 CI 管道中收集的构建时证据以及在当前 CD 管道执行期间收集的证据。
以下指示信息仅适用于以生产环境为目标的 CD 管道。 使用 target-environment-use 标志来确定环境是指定为 pre_prod
还是 production
。
先决条件: 在以 pre_prod 环境为目标的 CD 管道中,将 pre-prod-evidence-collection 标志设置为 1。 这支持在由 CD 管道部署的所有资产的证据锁定器中收集和存储构建时证据,从而在预生产环境上执行部署。 缺省情况下,对于指定为 pre_prod 的环境,pre-prod-evidence-collection 标志设置为 1。
在以生产环境为目标的 CD 管道中,将 prod-evidence-collection
前标志设置为 1
。 这使以生产环境为目标的 CD 管道能够检索在部署到生产前环境期间收集的证据。 缺省情况下,对于指定为生产的环境,pre-prod-evidence-collection
标志设置为 0
。
一旦 pre-prod-evidence-collection
标志设置为 1
,针对生产环境的 CD 管道生成的变更请求将在 验证记录 字段中包含对预生产环境中的变更请求标识的引用。
有关更多信息,请参阅 证据摘要。
准备并创建变更请求
必须通过变更请求来跟踪更改 基线 的所有内容。 这些更改包括对现有代码级别的更新,对配置的更改以及对工作程序节点的更新。 同级复审合规性 数据的收集基于可在库存,证据锁定程序和事件问题存储库中访问的数据。
使用 get_env CHANGE_REQUEST_ID
在后续阶段中利用变更请求标识的值。
请勿使用 set_env
更改变量的值,因为这仅用于内部实现。
此步骤通过根据 提升拉取请求 字段附加可用合规性数据来创建变更请求。 根据收集的合规性状态中的可用证据来计算 部署就绪情况。
如果在生产部署中捕获预生产证据,那么预生产变更请求将链接到生产变更请求。 有关更多信息,请参阅 变更请求中包含的数据。
检查变更请求核准
如果每次合规性检查都成功 (例如,单元测试,代码风险分析器任务,分支保护和检测私钥),那么将自动核准变更请求并成功运行该任务。 有关更多信息,请参阅 自动化变更管理。
如果一致性检查失败,那么不会核准变更请求状态。 您可以 手动核准变更请求,并将 change-request-id
添加到环境属性以在下一次运行时使用先前创建的变更请求。 您还可以手动核准变更请求并添加紧急标签。
部署
在 deploy 阶段中,管道会将构建的工件部署到环境中,例如登台或生产。 可以在以下源中找到这些阶段的变量和凭证:
- 来自管道 UI 的变量 (
get_env
)

有关如何访问这些变量的更多信息,请参阅 定制脚本。
验收测试
您可以运行一组自动化测试,以验证部署是否成功并按预期工作。 出于可跟踪性目的,请确保测试日志包含对正在测试的代码级别或映像的引用。
更改请求关闭
部署的详细信息将上载到关闭摘要更改任务,然后该任务将关闭更改请求。 close_category
将添加到“关闭变更请求”任务,并具有以下值:
- 成功 (如果部署就绪,并且 CD 部署成功)
- 成功处理问题 (如果摘要有问题,那么部署未就绪,CD 部署发生紧急情况)
库存结束
有关库存结束的更多信息,请参阅 库存。
内联回滚
要成功运行内联回滚,请确保 rollback-enabled
环境属性设置为 1
,并且“部署”或“接受”测试中存在 故障。 如果检测到回滚方案,那么 CD 管道会在用户提供的 .pipeline-config.yaml
中运行针对 rollback
定义的段。 如果 rollback
段不在用户的 .pipeline-config.yaml
文件中,那么将提供缺省实现,在将此步骤转换为淡黄色状态之前,该实现会提示用户提供回滚脚本。
在内联回滚方案中设置的属性
rollback-status
表示回滚步骤执行的状态。 可能的值[notRun, success, failure]
rollback-exit-code
是回滚步骤的退出代码。 如果甚至未运行回滚,那么此值将保留为空。- 如果缺省实现提示用户提供回滚脚本,那么当该属性设置为
true
时,将执行default-rollback-executed
。 缺省情况下,此属性的值设置为空。 pipeline-execution-status
设置整个管道运行的状态。 可能的值[successful_deployment, failed_deployment_failed_rollback, failed_deployment_successful_rollback]