Überprüft die CI/CD-Einrichtung

Voraussetzungen für CI/CD

Wenn Sie Prüfungen für die Ausführung in einer Pipeline konfigurieren möchten, rufen Sie wichtige Konfigurationseingaben aus Ihrem Checks-Konto und Ihrem Google Cloud-Projekt ab.

Zielkonto und ‑App für Prüfungen

Wenn Sie Prüfungen auf Ihrer CI/CD-Plattform ausführen, müssen Sie die Ergebnisse einem Checks-Konto und einer App zuweisen, die Sie mit diesem Konto verknüpft haben. Dazu benötigen Sie die Konto-ID und die App-ID für die Schecks.

Ihre Kontonummer finden Sie auf der Seite Kontoeinstellungen.

Ihre App-ID finden Sie auf der Seite App-Einstellungen.

Authentifizierung

Bei der Verwendung von Checks in einer Automatisierungseinrichtung wie CI/CD sollte ein Dienstkonto verwendet werden. Weitere Informationen zum Erstellen und Konfigurieren eines Dienstkontos finden Sie unter CLI authentifizieren.

Wenn Sie eines der Checks-CI/CD-Plug-ins verwenden, finden Sie in der Dokumentation des Plug-ins Informationen dazu, wie Sie die Anmeldedaten angeben.

Wenn Sie die Checks CLI in Ihrem CI/CD-System verwenden, empfiehlt es sich, CI-Umgebungsvariablen zum Konfigurieren Ihres JSON-Schlüssels zu verwenden. Beispiel:

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

Prüfungen konfigurieren, die in einer CI/CD-Pipeline ausgeführt werden sollen

Für Prüfungen werden die folgenden Ansätze unterstützt:

  • CI/CD-Plug-ins prüfen: Checks bietet vorgefertigte Plug-ins für verschiedene CI/CD-Plattformen, darunter GitHub und fastlane. Weitere Informationen finden Sie in der Seitenleiste.
  • Checks CLI: Teams mit komplexeren Workflows oder mit einem Build-System ohne integriertes Checks-Plug-in können die Checks CLI in ihrer CI/CD-Pipeline verwenden. Weitere Informationen finden Sie unter Einrichtung mit der Checks CLI und Universelle Einrichtung mit der Checks CLI.
  • Checks API: Für Teams mit stark angepassten Workflows bietet Checks eine robuste REST API. Sie können damit Scans starten, Berichte abrufen und die Nutzung an Ihre individuellen Anforderungen anpassen. Weitere Informationen finden Sie in der Dokumentation zur Checks API.

Universelle Einrichtung mit der Checks CLI

Wenn es für Ihre CI/CD-Plattform kein Checks-Plug-in gibt, können Sie die Checks-Befehlszeile verwenden. Die Checks CLI kann von Entwicklern direkt in jede CI/CD-Plattform eingebunden werden, die Workflow-Schritte zur Skriptausführung unterstützt.

Die Checks-Befehlszeile kann für folgende Aufgaben verwendet werden:

  • Geben Sie Fehlercodes ungleich null nur zurück, wenn bestimmte Kriterien erfüllt sind, z. B. wenn Probleme mit hoher Priorität gefunden wurden. Die CLI gibt niemals einen Fehlercode zurück. Der Entwickler muss Fehlercodes manuell im Scripting-Schritt zurückgeben.
  • Alle Daten werden zur besseren Flexibilität in JSON ausgegeben.

Hier ist ein Beispiel für die Verwendung der CLI in GitHub Actions bei jedem Commit anstelle der GitHub Action „Checks CI/CD“. Außerdem wird die Ausgabe so umgewandelt, dass ein Fehlercode ausgegeben wird, wenn bei Prüfungen Probleme mit hoher Priorität gefunden werden:

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);
                }

Feedback

Haben Sie einen CI/CD-Workflow, den Sie in diesem Leitfaden hinzufügen möchten? Bitte informieren Sie uns unter checks-support@google.com.