Conditions préalables pour la CI/CD
Pour configurer l'exécution des vérifications dans un pipeline, récupérez les principaux paramètres de configuration de votre compte Checks et de votre projet Google Cloud.
Compte et application Target Checks
Lorsque vous exécutez des vérifications dans votre plate-forme CI/CD, vous devez attribuer les résultats à un compte Checks et à une application que vous avez associée à ce compte Checks. Pour ce faire, vous aurez besoin de l'ID de compte et de l'ID d'application Checks.
Pour trouver votre ID de compte, accédez à la page Paramètres du compte.
Pour obtenir votre ID d'application, accédez à la page Paramètres de l'application.
Authentification
Un compte de service doit être utilisé lorsque vous utilisez des vérifications dans une configuration d'automatisation, telle que CI/CD. Pour savoir comment créer et configurer un compte de service, consultez Authentifier la CLI.
Si vous utilisez l'un des plug-ins CI/CD Checks, consultez la documentation du plug-in pour savoir comment fournir les identifiants.
Si vous utilisez l'interface de ligne de commande Checks dans votre système CI/CD, nous vous recommandons d'utiliser des variables d'environnement CI pour configurer votre clé JSON. Exemple :
CHECKS_CREDENTIALS=/my/path/to/serviceaccount.json
Configurer des vérifications à exécuter dans un pipeline CI/CD
Les vérifications sont compatibles avec les approches suivantes :
- Plugins CI/CD Checks : Checks fournit des plug-ins prédéfinis pour plusieurs plates-formes CI/CD, y compris GitHub et fastlane. Pour en savoir plus, consultez la barre de navigation latérale.
- Checks CLI : les équipes dont les workflows sont plus complexes ou qui utilisent un système de compilation sans plug-in Checks prédéfini peuvent utiliser Checks CLI dans leur pipeline CI/CD. Pour en savoir plus, consultez Configurer à l'aide de Checks CLI et Configuration universelle à l'aide de Checks CLI.
- API Checks : pour les équipes dont les workflows sont très personnalisés, Checks propose une API REST robuste. Utilisez-la pour lancer des analyses, récupérer des rapports et adapter l'expérience à vos besoins spécifiques. Pour en savoir plus, consultez la documentation de l'API Checks.
Configuration universelle à l'aide de la CLI Checks
Si aucun plug-in Checks n'existe pour votre plate-forme CI/CD, vous pouvez utiliser la CLI Checks. Les développeurs peuvent scripter directement la CLI Checks dans n'importe quelle plate-forme CI/CD compatible avec les étapes du workflow d'exécution de script.
La CLI Checks peut être scriptée pour :
- Ne renvoyez des codes d'erreur non nuls que lorsque certains critères sont remplis. Par exemple, quittez avec un code d'erreur uniquement si des problèmes de haute priorité sont détectés. Notez que l'interface de ligne de commande ne renverra jamais de code d'erreur. Le développeur doit renvoyer les codes d'erreur manuellement lors de l'étape de script.
- Sortez toutes ses données au format JSON pour plus de flexibilité.
Voici un exemple d'utilisation de l'interface de ligne de commande dans GitHub Actions à chaque commit, au lieu de l'action GitHub Checks CI/CD. Nous transformons également le résultat pour produire un code d'erreur lorsque Checks détecte des problèmes prioritaires :
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);
}
Commentaires
Vous avez un workflow CI/CD que vous aimeriez voir ajouté à ce guide ? N'hésitez pas à nous contacter à l'adresse checks-support@google.com.