Dernière revue: 2026-07-28
GitHub Actions
Lancez des analyses CodeCleared depuis GitHub Actions avec service token protégé, résolution du dépôt et gestion sûre des délais.
Objectif
Lancez une analyse CodeCleared depuis GitHub Actions pour le commit qui a déclenché le workflow. Ce flux résout d’abord le dépôt connecté, puis crée l’analyse avec son UUID.
Pour qui
Un administrateur de dépôt configure le workflow et le secret. Un owner d’organisation active le dépôt et fournit le jeton API / service token au moindre privilège.
Prérequis
Offre éligible avec accès API, dépôt connecté, et jeton stocké comme secret GitHub Actions nommé CODECLEARED_TOKEN. Remplacez https://api.example par l’URL de base API client.
Étapes
name: CodeCleared scan
on:
push:
branches: [main]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- name: Resolve, create, and wait
env:
API_BASE: https://api.example
TOKEN: ${{ secrets.CODECLEARED_TOKEN }}
REPOSITORY: ${{ github.repository }}
COMMIT: ${{ github.sha }}
run: |
set -euo pipefail
repo=$(curl --fail-with-body -sS -G "$API_BASE/v1/repositories/resolve" \
-H "Authorization: Bearer $TOKEN" --data-urlencode "fullName=$REPOSITORY")
repository_id=$(printf '%s' "$repo" | jq -r '.id')
scan=$(curl --fail-with-body -sS -X POST "$API_BASE/v1/scans" \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
--data "{\"repositoryId\":\"$repository_id\",\"commitHash\":\"$COMMIT\",\"branch\":\"${{ github.ref_name }}\"}")
scan_id=$(printf '%s' "$scan" | jq -r '.id')
curl --fail-with-body -sS "$API_BASE/v1/scans/$scan_id/wait?timeout=300&interval=10" \
-H "Authorization: Bearer $TOKEN"
Règles métier
Résolvez avec GET /v1/repositories/resolve?fullName=owner/repo. Créez avec POST /v1/scans en utilisant repositoryId (UUID) et commitHash ; branch, projectUnitId et scanTypes sont optionnels. L’attente vaut 300 secondes par défaut et ne peut dépasser 600 secondes.
Scénarios et cas limites
Fork ou dépôt renommé : résolvez la valeur réelle de github.repository et vérifiez qu’il est connecté. Wait expire : conservez l’ID d’analyse et demandez le statut plus tard ; ne supposez pas un échec. Pull request : choisissez délibérément le commit voulu — merge commit et head commit peuvent différer.
Limites
Ne loggez pas le token et ne l’embarquez pas dans le YAML. N’envoyez pas fullName ni commitSha à la création d’analyse. Un 402 indique un manque de crédits, de droit d’offre ou de licence MAU (seat_license_required), pas un JSON mal formé.
Erreurs courantes
- Token absent de l’environnement parce que le secret n’est pas disponible pour l’événement.
jqrenvoie un ID vide parce que la résolution du dépôt a échoué.- Répéter un 402 au lieu de revoir crédits, droits et licences.
Liens
- Connecter GitHub
- Scans API
- Gate CI CLI (BYOT) — à préférer quand le runner doit uploader un arbre Maven / deps privées
- Crédits et réponses 402