GitHub Action

L'action n'est pas encore sur le Marketplace. En attendant, faites pointer uses vers la copie de ce dépôt.

Workflow

Le plan doit inclure la fonctionnalité api. Stockez la clé dans SCANDAR_API_KEY. L'URL du serveur est https://scandar.dev.

name: Scandar
on:
  pull_request:
  push:
    branches: [main]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ./packages/scandar-action
        # After publication: OWNER/scandar-action@v1
        with:
          api-key: ${{ secrets.SCANDAR_API_KEY }}
          api-url: https://scandar.dev
          fail-on: high
          annotations: true
          comment-on-pr: true
          github-token: ${{ github.token }}

Entrées et sorties

  • api-key (obligatoire) — masquée par ::add-mask:: avant toute autre ligne de log.
  • api-url — URL de base du serveur Scandar. Utilisez https://scandar.dev.
  • fail-on — high par défaut.
  • working-directory — . par défaut.
  • repo — owner/name facultatif pour les règles d'ignorance.
  • annotations — true par défaut. Un ::error par alerte en échec, sur le chemin du lockfile.
  • comment-on-pr — un commentaire, créé ou mis à jour. Le marqueur est <!-- scandar-action -->.
  • continue-on-error-on-api-failure — false par défaut. À true, une panne réseau ou un HTTP 429/5xx sort avec 0. Un échec de politique sort toujours avec 1.

Sorties : passed, failing-count, report. Le résumé du job est écrit dans le résumé de l'étape.

Codes de sortie

  • 0 — réussi, ou API injoignable avec continue-on-error-on-api-failure à true.
  • 1 — une alerte a dépassé le seuil (ou un malware, ou une alerte exploitée, sauf si fail-on vaut none).
  • 2 — clé manquante, URL fictive ou aucun lockfile.
  • 3 — panne réseau ou API.

Forks

Une pull request venant d'un fork ne reçoit pas les secrets. L'action n'a alors pas de clé. C'est normal. Ne passez pas le workflow à pull_request_target pour contourner cela : cet événement s'exécute avec les secrets de la branche de base, dans un checkout qu'un contributeur externe peut influencer.

L'action ne lit que les noms de manifestes et de lockfiles. Elle n'installe pas les dépendances et n'exécute aucun fichier de la pull request. Les limites sont de 40 fichiers et 15 Mo. Les scores utilisent la portée unknown. Les explications restent désactivées : l'action n'envoie jamais explain=1.

Les autres systèmes de CI peuvent utiliser le CLI ou l'exemple curl.