IBM Cloud Docs
拉取请求管道

拉取请求管道

拉取请求管道对指定应用程序存储库的拉取请求运行一组合规性状态检查。

由于合规性状态检查失败,可能会阻止将拉取请求合并到主分支中的尝试。 针对主分支打开或更新拉取请求会触发拉取请求管道运行。 您可以在 定制脚本 中针对管道和测试运行自己的设置。

阶段和任务

下表列出了在 PR 管道中运行的任务。 此外,该表还提供了以下每个阶段的概述:

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

  • 简短描述: 提供阶段执行期间执行的操作的简明说明。

  • 允许定制: 这指示用户是否具有通过在 .pipeline-config.yaml 文件中插入定制脚本来修改或替换阶段的缺省行为的灵活性。

  • 默认参考实现:这表示DevSecOps管道是否为该阶段提供了预定义或默认实现。 值得注意的是,对于 unit-testssetup 等特定阶段,DevSecOps 管道不提供任何开箱即用的实施。 而是需要用户提供定制脚本或根据其应用程序需求定制的代码。

  • 证据收集: 指示阶段是否执行标准证据收集。 当 DevSecOps Pipeline 为某一阶段提供参考实现时,证据收集将开箱即用。 但是,如果 用户 选择修改或替换这些预定义阶段,那么他们必须确保其定制实现包含相应的证据收集。 在DevSecOps管道没有提供开箱即用实施的阶段,用户也要承担同样的责任,因为他们必须执行证据收集。 该列指示负责执行证据收集的实体 (用户/管道)。

  • 允许跳过 (适用于版本> = v10): 这指示用户是否可以通过在 .pipeline-config.yaml中将 skip 属性设置为 true 来选择退出运行此阶段。 但是,使用此功能时请务必谨慎,尤其是对于旨在收集证据的阶段。 跳过此类阶段可能会导致缺少构建的基本证据。

表 1. 管道顺序
任务或阶段 简短描述 .pipeline-config.yaml 中允许的定制 缺省参考实施 证据收集需求 跳过允许
start 设置管道环境。 NA
setup 设置构建和测试环境。 NA
detect-secrets 对应用程序代码运行检测密钥扫描。 NA
unit-tests 对应用程序代码运行单元测试和应用程序测试。 NA
compliance-checks 对应用程序存储库运行 Code Risk Analyzer 扫描和其他合规性检查。 NA
finish 合并管道状态。 NA

有关如何使用 .pipeline-config.yaml 文件来定制阶段的更多信息,请参阅 定制脚本管道参数

检测私钥扫描

IBM 检测私钥 工具可识别私钥在应用程序代码中可见的位置。 此处 提供了有关为扫描设置存储库的更多信息。

扫描并检查一致性检查

表 2. 合规性扫描和检查
扫描或检查 描述
Code Risk Analyzer 漏洞扫描 查找所有应用程序包依赖关系,容器基本映像和操作系统包的漏洞。 使用 Code Risk Analyzer 工具。
Code Risk Analyzer CIS 检查 在 Kubernetes 部署清单上运行 配置检查。 使用 Code Risk Analyzer 工具。
Code Risk Analyzer 材料清单 (BOM) 检查 用于捕获所有依赖关系的 pedigree 的指定存储库的 BOM。 将以不同的粒度收集此 BOM。 例如,BOM 捕获构建中使用的基本映像的列表,基本映像中的软件包的列表以及安装在基本映像上的应用程序软件包的列表。 BOM 充当分析结果的参考标准,并可能用于实施策略检测点。 使用 Code Risk Analyzer 工具。
Mend Unified Agent 漏洞扫描 Mend Unified Agent 扫描工具 扫描应用程序存储库的开放式源代码组件以查找易受攻击的库和源文件。 有关更多信息,请参阅 配置 Mend Unified Agent 扫描
存储库合规性检查 检查分支保护设置是否正确。

这些脚本在管道感知的所有应用程序存储库上运行。 要向这些扫描添加存储库,请使用安装阶段中提供的 pipelinectl 界面。

有关用户脚本阶段的预期输出的更多信息,请参阅 定制脚本

任务作业

表 3. 合规性扫描和检查
任务作业 描述
code-pr-start 克隆应用程序和 DevSecOps repos,并为 Git Repos and Issue Tracking repos 的状态检查设置初始挂起状态。
code-setup 用户定义的设置定制脚本的占位符,用户可以在该脚本中完成其管道设置。
code-detect-secrets 运行检测私钥扫描以识别私钥在应用程序代码中的可见位置。
code-unit-tests 用户定义的测试定制脚本的占位符,用户可以在该脚本中运行自己的测试。
code-pr-finish 运行所有必需的合规性检查,将结果注释到拉取请求,并在 Git Repos and Issue Tracking 存储库上设置结果。

将拉取请求与问题合并

您可以使用管理员权限将状态检查失败的拉取请求合并到存储库。 但是,这些拉取请求会注册 failure,从而生成失败任务的证据。 此结果包含在证据摘要和变更请求描述中,并影响 Security and Compliance Center上的最终合规性分数。

确保在公关管道中收集证据

公关管道支持证据收集和问题管理。 默认情况下,公关管道不会收集证据或打开任何问题,但用户可以选择使用该功能。 为了启用证据收集和问题管理,请将环境变量 collect-evidence-in-pr 设置为以下枚举之一:

  • none:(默认)将 collect-evidence-in-pr 设置为 none,以防止在 PR 管道中收集证据。
  • all: 将 collect-evidence-in-pr 设为 all 以收集所有证据,无论 PR 管道的状态如何。 问题将根据 collect-evidence 脚本打开、更新或关闭。
  • success: 将 collect-evidence-in-pr 设为 success 仅在整个 PR 管道成功运行时收集证据。 如果公关管道失败,证据将无法收集或发布到证据锁,问题管理也将无法进行。

注意:由于 PR 管道的运行频率通常很高,因此选择正确的 collect-evidence-in-pr 模式可以避免不必要的证据收集。 建议在开发阶段或预计会发生故障的情况下选择 success 模式,以防止在管道发生故障时收集证据。

如果 PR 管道触发了同步管道,则不支持 collect-evidence-in-pr 设置为 success 模式。 如果 PR 管道触发了异步管道,请将 collect-evidence-in-pr 设置为 all 以便收集证据。