Prerequisiti per CI/CD
Per configurare l'esecuzione dei controlli in una pipeline, recupera gli input di configurazione chiave dal tuo account Checks e dal progetto Google Cloud.
Controlla l'account e l'app di destinazione
Quando esegui i controlli nella tua piattaforma CI/CD, devi assegnare i risultati a un account Controlli e a un'app che hai collegato a quell'account Controlli. Per farlo, avrai bisogno dell'ID account e dell'ID app di Checks.
Per il tuo ID account, visita la pagina Impostazioni account.
Per il tuo ID app, visita la pagina Impostazioni app.
Autenticazione
Un service account deve essere utilizzato quando si utilizzano i controlli in una configurazione di automazione, come CI/CD. Per ulteriori informazioni su come creare e configurare un service account, vedi Autenticare la CLI.
Se utilizzi uno dei plug-in CI/CD di Checks, consulta la documentazione del plug-in per scoprire come fornire le credenziali.
Se utilizzi la CLI Checks all'interno del sistema CI/CD, ti consigliamo di utilizzare le variabili di ambiente CI per configurare la chiave JSON. Ad esempio:
CHECKS_CREDENTIALS=/my/path/to/serviceaccount.json
Configura i controlli da eseguire in una pipeline CI/CD
I controlli supportano i seguenti approcci:
- Plug-in CI/CD di controlli: controlli fornisce plug-in predefiniti per diverse piattaforme CI/CD, tra cui GitHub e fastlane. Per saperne di più, consulta la navigazione laterale.
- CLI Checks: i team con flussi di lavoro più complessi o che utilizzano un sistema di build senza un plug-in predefinito Checks possono utilizzare la CLI Checks nella pipeline CI/CD. Per maggiori dettagli, vedi Configurazione tramite l'interfaccia a riga di comando Checks e Configurazione universale tramite l'interfaccia a riga di comando Checks.
- API Checks: per i team con flussi di lavoro altamente personalizzati, Checks offre un'API REST solida. Utilizzalo per avviare scansioni, recuperare report e personalizzare l'esperienza in base alle tue esigenze specifiche. Per ulteriori informazioni, consulta la documentazione dell'API Checks.
Configurazione universale utilizzando l'interfaccia a riga di comando di Checks
Se non esiste un plug-in Controlli per la tua piattaforma CI/CD, puoi utilizzare la CLI Controlli. La CLI Checks può essere scritta direttamente dagli sviluppatori in qualsiasi piattaforma CI/CD che supporti i passaggi del workflow di esecuzione degli script.
La CLI Checks può essere utilizzata per:
- Restituisci codici di errore diversi da zero solo quando vengono soddisfatti determinati criteri, ad esempio, esci con un codice di errore solo se vengono rilevati problemi di alta priorità. Tieni presente che l'interfaccia a riga di comando non restituirà mai un codice di errore; lo sviluppatore deve restituire i codici di errore manualmente nel passaggio di scripting.
- Output di tutti i dati in formato JSON per una maggiore flessibilità.
Ecco un esempio di utilizzo della CLI in GitHub Actions a ogni commit, anziché dell'azione GitHub CI/CD Checks. Stiamo anche trasformando l'output per produrre un codice di errore quando i controlli rilevano problemi di priorità:
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
Hai un flusso di lavoro CI/CD che vorresti vedere aggiunto a questa guida? Comunicacelo all'indirizzo checks-support@google.com.