Perimetry Cloud in Ihrer CI (GitHub Action)

Nach jedem Deployment ein Audit starten und den Job scheitern lassen, wenn die Punktzahl sinkt oder ein kritischer Befund auftaucht: GitHub Action, GitLab CI und andere.

Aktualisiert am

Ab dem Solo-Tarif kann Perimetry Cloud ein Deployment stoppen, das Ihre Domain unsicherer macht. Nach jedem Deployment startet Ihre CI ein Audit der Domain (oder liest das neueste), wartet auf das Ergebnis und lässt den Job scheitern, wenn die Punktzahl unter ein Minimum fällt, seit dem vorherigen Audit sinkt oder ein neuer kritischer Befund auftaucht. Eine lesbare Zusammenfassung erscheint auf der Seite des Jobs, und das Ergebnis wird als JSON in eine Datei geschrieben.

Das funktioniert mit der GitHub Action oder mit dem Befehl perimetry-ci in jeder anderen CI (GitLab, Bitbucket, Jenkins, CircleCI …).

Die GitHub Action ist als Enigmacker/perimetry-cloud-action verfügbar. Für die stärkste Garantie pinnen Sie sie auf einen vollständigen Commit-SHA statt auf @v1. Der Befehl perimetry-ci für andere CI-Tools ist noch nicht auf npm: Bis dahin kann die API allein ein Deployment absichern, siehe Jede andere CI.

Einrichtung auf GitHub

  1. Öffnen Sie in Perimetry Cloud Einstellungen, erstellen Sie einen API-Schlüssel namens „GitHub Actions“ und haken Sie Kann Audits starten an (lassen Sie es frei, wenn der Job nur das neueste Audit liest).
  2. Öffnen Sie in Ihrem GitHub-Repository Settings › Secrets and variables › Actions und fügen Sie den Schlüssel als Secret mit dem Namen PERIMETRY_API_KEY hinzu.
  3. Fügen Sie nach Ihrem Deployment-Schritt einen Schritt wie im Beispiel unten hinzu, mit Ihrer verifizierten Domain.
- name: Perimetry Cloud
  uses: Enigmacker/perimetry-cloud-action@v1
  with:
    api-key: ${{ secrets.PERIMETRY_API_KEY }}
    domain: example.com
    min-score: 80

Der Schlüssel stammt aus dem Secret und wird nie ausgegeben: GitHub blendet ihn in den Logs aus, und die Action übergibt ihn dem Befehl nur über die Umgebung.

Optionen

Eingabe Standard Was sie bewirkt
domain Die verifizierte Domain oder ihre ID.
mode run run startet ein Audit und wartet darauf; latest liest das neueste Audit (ein Schlüssel, der nur liest, genügt).
timeout-minutes 15 Wie lange auf das Audit gewartet wird.
min-score keiner Scheitert, wenn die Punktzahl unter diesem Wert liegt (0 bis 100).
fail-on-drop true Scheitert, wenn die Punktzahl niedriger ist als beim vorherigen Audit.
max-drop 0 Punkte, die die Punktzahl verlieren darf, bevor fail-on-drop scheitert.
fail-on-new critical Scheitert, wenn ein neuer Befund ab diesem Schweregrad auftaucht (critical, high, medium, low, info oder none).
fail-on-open none Scheitert, wenn ein offener Befund ab diesem Schweregrad besteht, ob neu oder nicht.
on-too-soon latest Wenn der Tarif noch kein weiteres Audit auf Anfrage erlaubt: das neueste Audit lesen oder fail.
lang en Sprache der Befundtitel in der Zusammenfassung (en oder fr).

Die Ausgaben sind passed, score, grade, previous-score, score-delta, new-findings, report-url und result-file (das Ergebnis als JSON), für die folgenden Schritte.

Was Sie sehen

Die Zusammenfassung des Jobs zeigt Punktzahl und Bewertung, die Änderung seit dem vorherigen Audit, die offenen Befunde nach Schweregrad, die neuen Befunde und die schwerwiegendsten offenen mit ihrer Behebung, gegebenenfalls warum die Prüfung gescheitert ist, und einen Link zum Bericht. Befundtitel zitieren, was Ihre Websites veröffentlichen: Sie werden als reiner Text angezeigt, nie als Markup.

Der Befehl endet mit Code 0, wenn die Prüfung besteht, 1, wenn sie scheitert, 2 bei einem Konfigurations- oder API-Fehler (falscher Schlüssel, unbekannte Domain) und 3, wenn das Audit nicht rechtzeitig fertig wurde (es läuft weiter, und sein Ergebnis steht dann auf der Seite der Domain).

GitLab CI

Fügen Sie den Schlüssel als maskierte CI/CD-Variable namens PERIMETRY_API_KEY hinzu und führen Sie das API-Beispiel des nächsten Abschnitts in einem Job der Stage .post aus (zum Beispiel mit dem Image alpine mit curl und jq).

Jede andere CI

Der lokale Server und der CI-Befehl werden bald auf npm veröffentlicht; bis dahin nutzen Sie den entfernten MCP-Endpunkt oder die API mit curl. Die API allein genügt, um das neueste Audit zu lesen und zu entscheiden (hier mit curl und jq, Scheitern unter 80):

score=$(curl -fsS -H "Authorization: Bearer $PERIMETRY_API_KEY" \
  https://app.perimetry.cloud/api/v1/domains/example.com | jq '.domain.score')
[ "$score" -ge 80 ] || { echo "Perimetry Cloud score $score is below 80"; exit 1; }

Gut zu wissen

  • Audits auf Anfrage folgen den Grenzen Ihres Tarifs: eines pro Stunde und Domain im Solo-Tarif und über die API eines alle 15 Minuten pro Domain. Bei mehreren Deployments innerhalb einer Stunde lesen die folgenden Jobs stattdessen das neueste Audit (oder scheitern, mit on-too-soon: fail).
  • Ein Audit dauert einige Minuten. Wird es nach dem Deployment gestartet, sieht es die neue Version Ihrer Website.
  • Jeder Aufruf zählt zum stündlichen Kontingent Ihres Tarifs; ein Job verbraucht etwa zehn.