检查 CI/CD 设置

CI/CD 的前提条件

如需配置在流水线中运行的检查,请从您的 Checks 账号和 Google Cloud 项目中检索关键配置输入。

目标“检查”账号和应用

在 CI/CD 平台中运行检查时,您需要将结果分配给检查账号以及已与该检查账号相关联的应用。为此,您需要 Checks 账号 ID应用 ID

如需查看您的账号 ID,请访问您的账号设置页面

如需查看您的应用 ID,请访问应用设置页面

身份验证

在自动化设置(例如 CI/CD)中使用检查时,应使用服务账号。如需详细了解如何创建和配置服务账号,请参阅对 CLI 进行身份验证

如果使用 Checks CI/CD 插件,请参阅该插件的文档,了解如何提供凭据。

如果在 CI/CD 系统中使用 Checks CLI,建议使用 CI 环境变量来配置 JSON 密钥。例如:

CHECKS_CREDENTIALS=/my/path/to/serviceaccount.json

配置在 CI/CD 流水线中运行的检查

支票支持以下付款方式:

  • 检查 CI/CD 插件:Checks 为多个 CI/CD 平台(包括 GitHubfastlane)提供预构建的插件。如需了解详情,请参阅侧边导航栏。
  • Checks CLI:工作流较为复杂或使用没有 Checks 预构建插件的 build 系统的团队可以在其 CI/CD 流水线中使用 Checks CLI。如需了解详情,请参阅使用 Checks CLI 进行设置使用 Checks CLI 进行通用设置
  • Checks API:对于工作流程高度自定义的团队,Checks 提供强大的 REST API。您可以使用该 API 来启动扫描、检索报告,并根据您的独特要求量身定制体验。如需了解详情,请参阅 Checks API 文档

GitHub Actions

Checks App Compliance Scan GitHub Action 是一种从 GitHub 直接自动执行 Checks 分析的无缝方式。如需详细了解 GitHub Actions,请参阅 GitHub Actions 功能页面

使用入门

操作位于代码库中的 .github/workflows/ 目录内。首先在工作流目录中创建一个 checks.yml 文件。

我们建议在 .github/workflows/checks.yml 中进行以下配置,以运行“检查应用合规性”分析:

name: Example workflow using Checks
on:
  release:
    types: [published]
jobs:
  checks:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@4
      - name: Run Checks App Compliance analysis async
        uses: google-checks/checks-app-scan-github-action@latest
        with:
          account_id: "1234567890"
          app_id: "1234590"
          binary_path: "./example-app.apk"
          wait_for_report: true
          service_account_base64: ${{ secrets.SERVICE_ACCOUNT_JSON }}

这样一来,当稳定版和预发布版本发布时,系统将运行应用合规性分析,并在工作流运行日志中显示报告结果和网址(不会导致 build 失败)。

配置

与 CLI 类似,您可以配置 GitHub 操作以满足流程需求。使用 with 键设置自定义输入。

输入

名称 类型 是否必需 说明
account_id 字符串 检查检查设置页面中的账号 ID
app_id 字符串 检查应用 ID
binary_path 字符串 应用归档的路径:.apk、.aab 或 .ipa
版本 字符串 默认为 latest。检查要使用的 CLI 版本。它应采用 vX.Y.Z 格式,或者设置为 latest 以始终获取最新的 CLI 版本。
service_account_base64 字符串 服务账号的 base64 编码内容。请参阅使用服务账号进行身份验证检查,以生成服务账号并将 Base64 二进制 blob 存储为 Secret
generate_report 布尔值 默认为 true。如果为 false,则操作不会将 binary_path 上传到检查。此功能可用于测试身份验证和其他参数。
wait_for_report 布尔值 如果值为 false,则操作不会等待报告完成,流水线将继续运行。
severity_threshold 字符串 选择此选项后,系统只会报告指定级别或更高级别的漏洞。有效值包括:PRIORITY POTENTIAL OPPORTUNITY
fail_on 字符串 如果为 ALL,则在 severity_threshold 条件之后,如果存在任何失败的检查,操作将失败。默认情况下,它不会失败。

输出

该操作将写入 checks_results.json 文件。

使用 Checks App Compliance Scan GitHub 操作的示例

通过配置 Checks GitHub 操作的输入,您可以自定义 Checks 分析是应在后台运行还是作为测试套件的一部分运行。

配置检查以在每次提交时在后台运行分析,但不会使 build 失败

name: Example workflow using Checks
on: [push]
jobs:
  checks:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@4
      - name: Run Checks App Compliance analysis async
        uses: google-checks/checks-app-scan-github-action@latest
        with:
          account_id: "1234567890"
          app_id: "1234590"
          binary_path: "./example-app.apk"
          service_account_base64: ${{ secrets.SERVICE_ACCOUNT_JSON }}

配置检查,以便在分析发现优先级问题时使发布失败

name: Example workflow using Checks
on:
  release:
    types: [published]
jobs:
  checks:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@4
      - name: Run Checks App Compliance analysis and fail on issues
        uses: google-checks/checks-app-scan-github-action@latest
        with:
          account_id: "1234567890"
          app_id: "1234590"
          binary_path: "./example-app.apk"
          wait_for_report: true
          severity_threshold: PRIORITY
          fail_on: true
          service_account_base64: ${{ secrets.SERVICE_ACCOUNT_JSON }}

反馈

您是否有希望添加到本指南中的 CI/CD 工作流?请发送电子邮件至 checks-support@google.com 告知我们。