CI/CD の設定を確認する

CI/CD の前提条件

パイプラインで実行するチェックを構成するには、Checks アカウントと Google Cloud プロジェクトから主要な構成入力を取得します。

Target Checks アカウントとアプリ

CI/CD プラットフォームでチェックを実行する場合は、結果をチェック アカウントと、そのチェック アカウントに接続したアプリに割り当てる必要があります。これを行うには、Checks のアカウント IDアプリ ID が必要です。

アカウント ID については、アカウント設定ページをご覧ください。

アプリ ID については、アプリの設定ページをご覧ください。

認証

CI/CD などの自動化設定で Checks を使用する場合は、サービス アカウントを使用する必要があります。サービス アカウントの作成と構成の詳細については、CLI を認証するをご覧ください。

Checks CI/CD プラグインのいずれかを使用している場合は、認証情報の提供方法についてプラグインのドキュメントを参照してください。

CI/CD システム内で Checks CLI を使用する場合は、CI 環境変数を使用して JSON キーを構成することをおすすめします。次に例を示します。

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

CI/CD パイプラインで実行するチェックを構成する

チェックでは、次のアプローチがサポートされています。

  • CI/CD プラグインをチェックする: Checks は、GitHubfastlane など、複数の CI/CD プラットフォーム用の事前構築済みプラグインを提供します。詳しくは、サイド ナビゲーションをご覧ください。
  • Checks CLI: ワークフローが複雑なチームや、Checks の事前構築済みプラグインのないビルドシステムを使用しているチームは、CI/CD パイプラインで Checks CLI を使用できます。詳細については、Checks CLI を使用した設定Checks CLI を使用したユニバーサル設定をご覧ください。
  • Checks API: ワークフローを高度にカスタマイズしているチーム向けに、Checks は堅牢な REST API を提供しています。これを使用して、スキャンを開始したり、レポートを取得したり、独自の要件に合わせてエクスペリエンスを調整したりできます。詳細については、Checks API のドキュメントをご覧ください。

Checks CLI を使用したユニバーサル設定

CI/CD プラットフォームに Checks プラグインが存在しない場合は、Checks CLI を使用できます。Checks CLI は、スクリプト実行ワークフロー ステップをサポートする任意の CI/CD プラットフォームに、デベロッパーが直接スクリプト化できます。

Checks CLI は、次の処理を行うようにスクリプト化できます。

  • 特定の条件が満たされた場合にのみ、ゼロ以外のエラーコードを返します。たとえば、優先度の高い問題が見つかった場合にのみ、エラーコードで終了します。CLI はエラーコードを返しません。デベロッパーはスクリプト ステップでエラーコードを手動で返す必要があります。
  • 柔軟性を高めるために、すべてのデータを JSON に出力します。

Checks CI/CD GitHub Action ではなく、すべての commit で GitHub Actions で CLI を使用する例を次に示します。また、Checks で優先度の高い問題が見つかったときにエラーコードを生成するように、出力を変換しています。

name: Example workflow using Checks
run-name: ${ { github.actor } } is running Checks App Compliance GitHub Action
on: [push]
jobs:
  checks:
    runs-on: ubuntu-latest
    steps:
        uses: actions/checkout@v4
      - name: Checks App Compliance analysis
        run:
          echo 'Starting Checks App Compliance scan...'
          chmod +x ./checks
          ./checks report generate --binary-path=${CHECKS_BINARY_PATH} --app-id=${CHECKS_APP_ID} --account-id=${CHECKS_ACCOUNT_ID} --no-input --json  --wait-and-print-report > checks_results.json
          echo "Wrote App Compliance scan results to checks_results.json"
        env:
            # Replace all inputs with your configurations.
            CHECKS_CREDENTIALS: ${{ secrets.SERVICE_ACCOUNT_JSON }}
            CHECKS_APP_ID: "123456"
            CHECKS_ACCOUNT_ID: "654321"
            CHECKS_BINARY_PATH: "./app_release.apk"
      - name: Read JSON file
        uses: actions/github-script@v6
        with:
            script: |
                const fs = require('fs');
                const json = fs.readFileSync('./checks_results.json', 'utf8');
                const report = JSON.parse(json);

                console.log(`Generated report name: ${report.name}`);
                console.log(`Report console URL: ${report.resultsUri}`);

                const failingChecks = [];
                for (const check of report.checks) {
                    if (check.severity.toString() === 'PRIORITY' && check.state.toString() === 'FAILED') {
                        failingChecks.push(check);
                    }
                }

                if (failingChecks.length > 0) {
                    console.log(`${failingChecks.length} priority issue(s) detected: `);
                    for (const check of failingChecks) {
                        console.log(`Type: ${check.type}. Details: ${JSON.stringify(check)}`);
                    }
                    process.exit(1);
                }

フィードバック

このガイドに追加してほしい CI/CD ワークフローはありますか?checks-support@google.com までお知らせください。