了解管道阶段
以下列表说明了拉取请求 (PR),持续集成 (CI),持续部署 (CD) 和持续合规性 (CC) 管道中的阶段。
拉取请求 (PR) 管道阶段
PR 管道对所选应用程序存储库的拉取请求运行合规性检查,并充当合并到主分支的保护。 通过打开或更新针对所选分支的拉取请求来触发 PR 管道。
有关更多信息,请参阅 拉取请求(PR)管道 文档。
PR 管道阶段 | 描述 |
---|---|
code-pr-start |
克隆与拉取请求关联的 GitHub 存储库 |
code-setup |
设置构建和测试环境以准备其余管道阶段 |
code-detect-secrets |
对应用程序代码运行检测密钥扫描 |
code-unit-tests |
对与 PR 关联的代码执行单元测试 |
code-compliance-checks |
Code Risk Analyzer (CRA) 或 Mend Unified Agent 扫描开放式源代码依赖关系上的漏洞检测,以及应用程序存储库上的任何其他合规性检查 |
code-pr-finish |
合并管道状态。 如果先前在管道中执行的任何合规性检查失败,那么此阶段将失败。 这是“故障安全”行为,用于确保先修复合规性问题,然后才能合并 PR 或部署构建。 |
持续集成 (CI) 管道阶段
CI 管道从应用程序存储库构建可部署工件。 它扫描,测试和标记构建的工件,同时收集要在库存中发布的每个阶段的证据,并通过部署和变更管理进行跟踪。
有关更多信息,请参阅 Continuous Integration(CI)管道 文档。
CI 管道阶段 | 描述 |
---|---|
code-pr-start |
设置管道环境,包括将配置和应用程序存储库克隆到管道本地文件系统 |
code-setup |
设置构建和测试环境以准备其余管道阶段 |
code-unit-tests |
对应用程序代码执行单元测试和应用程序测试 |
code-peer-review |
在将代码更改合并并提升到生产环境之前,实施代码更改的 同级复审 |
code-static-scan |
对应用程序代码运行静态扫描 (缺省值为 SonarQube,但可以使用其他工具) |
code-compliance-checks |
运行 Code Risk Analyzer(CRA) 或 Mend Unified Agent 扫描以获取开放式源代码依赖关系上的漏洞检测以及应用程序存储库上的任何其他合规性检查 |
build-artifact |
从源代码存储库构建工件和映像 |
build-sign-artifact |
对构建的工件和图像进行签名 |
build-scan-artifact |
使用 Vulnerability Advisor 扫描容器映像 |
deploy-dev |
将构建的工件部署到开发环境 |
code-dynamic-scan |
在部署到开发环境的应用程序上运行 OWASP-Zap API 和 UI 动态扫描 |
deploy-acceptance-tests |
在开发环境上对已部署的已构建工件运行验收和集成测试 |
deploy-release |
将构建的工件添加到 Continuous Delivery (CD) 管道所使用的库存 |
code-ci-finish |
收集,创建日志文件,工件和证据并将其上载到证据锁定程序。 如果先前在管道中执行的任何合规性检查失败,那么此阶段将失败。 这是“故障安全”行为,用于确保先修复合规性问题,然后才能合并 PR 或部署构建。 |
持续部署 (CD) 管道阶段
CD 管道将编译证据和变更请求摘要的所有内容。 它将构建部署到环境 (例如,登台或生产),并将所有证据上载到证据锁定程序。
有关更多信息,请参阅 Continuous Deployment(CD)pipeline 文档。
CD 管道阶段 | 描述 |
---|---|
prod-start |
计算 部署增量 (由 CD 部署更新的服务) |
prod-setup |
设置目标环境以准备 CD 管道阶段的其余部分 |
prod-verify-artifact |
验证在 CI 管道中构建的映像和工件的签名 |
prod-change-request |
创建和核准与此部署关联的 变更请求,并切换到实现状态 |
prod-deployment |
将库存增量部署到目标环境 |
prod-acceptance-tests |
在目标环境上对已部署的已构建工件运行验收和集成测试 |
prod-finish |
将所有证据收集到证据锁定程序,并关闭变更请求 |
持续合规 (CC) 管道阶段
CC 管道对已部署的工件及其源存储库执行定期扫描。 它会扫描库存中的最新已部署状态,并在突发事件存储库中创建,更新或自动关闭突发事件问题。
有关更多信息,请参阅 Continuous Compliance(CC)pipeline 文档。
CC 管道阶段 | 描述 |
---|---|
cc-start |
克隆存储库,基于标记处理库存以及注册存储库和工件 |
cc-setup |
为后续阶段的扫描设置 CC 管道环境。 这可能包括安装构建依赖关系或执行 Maven 构建 |
cc-detect-secrets |
对应用程序代码运行检测密钥扫描 |
cc-static-scan |
对应用程序代码运行静态扫描 (缺省值为 SonarQube,但可以使用其他工具) |
cc-dynamic-scan |
在部署到目标环境的应用程序上运行 OWASP-Zap API 和 UI 动态扫描 |
cc-compliance-checks |
运行 Code Risk Analyzer(CRA) 或 Mend Unified Agent 扫描以获取开放式源代码依赖关系上的漏洞检测以及应用程序存储库上的任何其他合规性检查 |
cc-scan-artifact |
使用 Vulnerability Advisor 扫描容器映像 |
cc-finish |
收集,创建日志文件,工件和证据并将其上载到证据锁定程序。 如果先前在 CC 管道中执行的任何合规性检查失败,那么此阶段将失败。 |
管道合规性检查
在 PR,CI 和 CC 管道中执行代码合规性检查任务期间,将执行以下扫描和检查。
工具 | 扫描或检查 |
---|---|
检测私钥 | 标识可视私钥 |
代码风险分析器 (CRA) | 查找软件包依赖关系,容器基本映像和操作系统软件包的漏洞 |
Code Risk Analyzer CIS | 检查 Kubernetes 部署清单上的配置 |
Code Risk Analyzer 材料清单 (BOM) | 列出包和映像中包含的所有依赖关系 |
Mend Unified Agent (UA) | 扫描开放式源代码组件以查找漏洞 |
存储库合规性 | 检查分支保护规则的设置 |
阶段描述
setup
: 运行脚本以完成在管道运行上下文外部完成的设置任务。 这些任务将在整个管道运行时持续存在。 例如,设置外部环境,设置分支保护规则,执行运行状况检查,检查环境或初始化外部服务。test
: 运行单元测试,包括在代码库上运行的所有测试以及部署前时间。static-scan
: 运行静态代码分析器工具。peer-review
: 运行脚本以检查拉取请求是否已复审并具有最小数量的所需核准。dynamic-scan
: 在应用程序上运行动态扫描。containerize
: 创建应用程序所需的工件,例如 Docker 映像,RPM 和 Java 归档 (JARS) 文件。scan-artifact
: 扫描工件,例如,使用 Container Registry Vulnerability Advisor for Docker 映像。sign-artifact
: 对工件进行签名。release
: 通过将工件标记为可供部署,向库存添加工件。deploy
: 将工件部署到环境,例如测试和开发,登台和生产。acceptance-test
: 对已部署的工件运行测试。 您还可以在此阶段中包含部署后测试。verify-artifact
: 运行脚本以检查在 CI 管道中签名的工件是否具有有效特征符。finish
: 此阶段是可定制的阶段,并且始终执行,而不考虑管道状态。