GitHub Action

Die Action ist noch nicht auf dem Marketplace. Bis zur Veröffentlichung verweist uses auf die Kopie in diesem Repository.

Workflow

Der Plan braucht die Funktion api. Speichere den Schlüssel als SCANDAR_API_KEY. Die Server-URL ist 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 }}

Eingaben und Ausgaben

  • api-key (erforderlich) — wird vor jeder anderen Logzeile mit ::add-mask:: maskiert.
  • api-url — Basis-URL des Scandar-Servers. Nutze https://scandar.dev.
  • fail-on — Standard high.
  • working-directory — Standard ..
  • repo — optional owner/name für Ignorier-Regeln.
  • annotations — Standard true. Ein ::error pro fehlgeschlagener Advisory, am Lockfile-Pfad.
  • comment-on-pr — ein Kommentar, erstellt oder aktualisiert. Die Markierung ist <!-- scandar-action -->.
  • continue-on-error-on-api-failure — Standard false. Bei true endet ein Netzwerkfehler oder HTTP 429/5xx mit 0. Ein Policy-Fehler endet weiterhin mit 1.

Ausgaben: passed, failing-count, report. Die Job-Zusammenfassung landet in der Step-Zusammenfassung.

Exit-Codes

  • 0 — bestanden, oder die API war nicht erreichbar und continue-on-error-on-api-failure ist true.
  • 1 — eine Advisory hat die Schwelle überschritten (oder Malware oder eine ausgenutzte Advisory, außer fail-on ist none).
  • 2 — fehlender Schlüssel, Platzhalter-URL oder keine Lockfile.
  • 3 — Netzwerk- oder API-Fehler.

Forks

Ein Pull Request aus einem Fork erhält keine Secrets. Die Action hat dann keinen Schlüssel. Das ist so gewollt. Stelle den Workflow nicht auf pull_request_target um, um das zu umgehen: Dieses Ereignis läuft mit den Secrets des Basis-Branches in einem Checkout, den externe Mitwirkende beeinflussen können.

Die Action liest nur Manifest- und Lockfile-Namen. Sie installiert keine Abhängigkeiten und führt keine Dateien aus dem Pull Request aus. Die Grenzen sind 40 Dateien und 15 MB. Werte nutzen die Erreichbarkeit unknown. Erklärungen bleiben aus: Die Action sendet nie explain=1.

Andere CI-Systeme können die CLI oder das curl-Beispiel nutzen.