Der Portal-Endpunkt POST /api/v1/ci/checks veröffentlicht ein Analyseergebnis
als gebrandeten CodeCharter-Check-Run und optional als persistenten
Pull-Request-Kommentar auf einem GitHub-Repository. Die
GitHub Action nutzt diesen Endpunkt intern, er ist
aber eine reguläre, per API-Schlüssel authentifizierte API: Sie können ihn
genauso aus Jenkins, TeamCity, Azure DevOps, GitLab oder einem einfachen
Shell-Skript aufrufen.
Zwei Dinge sind dabei zu trennen:
- Wo der Code gebaut wird, kann jedes CI-System sein.
- Wo der Check erscheint, ist immer GitHub: der Endpunkt postet über die CodeCharter App einen Check-Run auf ein GitHub-Repository. Liegt Ihr Repository nicht auf GitHub, gibt es nichts, worauf der Endpunkt posten könnte.
Voraussetzungen
- Die CodeCharter GitHub App ist auf dem GitHub-Account oder der Organisation installiert, der das Repository gehört, und die Installation ist mit Ihrem Portal-Konto verknüpft.
- Ein Portal-API-Schlüssel (erzeugen Sie ihn unter API Keys und legen Sie ihn als Secret ab, siehe API-Keys in Secrets).
- Ein aktives Abonnement auf dem Konto, dem der API-Schlüssel gehört.
Request
POST https://codecharter.tools/api/v1/ci/checks
Authorization: Bearer <Ihr API-Schlüssel>
Content-Type: application/json
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
repository |
string | ja | Vollständiger Repository-Name in der Form owner/repo. |
headSha |
string | ja | Commit-SHA, gegen den der Check-Run gemeldet wird. |
checkName |
string | nein | Anzeigename des Check-Runs. Standard ist CodeCharter. Darf nicht leer sein, wenn Sie ihn setzen. |
conclusion |
string | nein | success, failure oder neutral (Standard). Jeder andere Wert wird als neutral behandelt. |
title |
string | nein | Titel der Check-Run-Ausgabe. |
summary |
string | nein | Markdown-Text, der sowohl als Check-Zusammenfassung als auch als PR-Kommentar verwendet wird. |
annotations |
array | nein | Inline-Annotationen, siehe unten. |
pullNumber |
number | nein | Pull-Request-Nummer für den Kommentar. Bei Push-Builds weglassen. |
comment |
boolean | nein | true, um einen persistenten PR-Kommentar zu posten oder zu aktualisieren. Standard false; ohne positive pullNumber wirkungslos. |
commentKey |
string | nein | Unterscheidungsmerkmal für den persistenten Kommentar, siehe unten. |
Jeder Eintrag in annotations entspricht GitHubs Check-Annotation-Form:
| Feld | Typ | Beschreibung |
|---|---|---|
path |
string | Repository-relativer Dateipfad. |
startLine |
number | Erste Zeile des annotierten Bereichs (1-basiert). |
endLine |
number | Letzte Zeile des annotierten Bereichs (1-basiert). |
level |
string | failure, warning oder notice (Standard). Jeder andere Wert wird als notice behandelt. |
title |
string | Kurzer Titel, typischerweise der Regelname. |
message |
string | Lesbare Beschreibung des Findings. |
Beispiel
curl -X POST https://codecharter.tools/api/v1/ci/checks \
-H "Authorization: Bearer $CODECHARTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"repository": "acme/acme-web",
"headSha": "0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b",
"pullNumber": 42,
"conclusion": "failure",
"title": "3 Findings (1 Error)",
"summary": "## CodeCharter\n\n| Regel | Schweregrad | Anzahl |\n|---|---|---|\n| no-console-write | error | 1 |",
"comment": true,
"commentKey": "acme-web-main",
"annotations": [
{
"path": "src/Web/Program.cs",
"startLine": 12,
"endLine": 12,
"level": "failure",
"title": "no-console-write",
"message": "Console.WriteLine ist in Produktionscode nicht erlaubt."
}
]
}'
Antworten
| Status | Bedeutung |
|---|---|
200 |
Veröffentlicht. Body: {"status":"published"}. |
400 |
Validierung fehlgeschlagen: repository (in der Form owner/repo), headSha und checkName sind Pflicht und dürfen nicht leer sein. |
401 |
API-Schlüssel fehlt, ist ungültig oder abgelaufen. |
402 |
Ihr Abonnement ist nicht aktiv. |
409 |
Die CodeCharter GitHub App ist auf dem Account des Repository-Besitzers nicht installiert, oder die Installation ist nicht mit Ihrem Portal-Konto verknüpft. |
502 |
Das Portal konnte den Check nicht an GitHub übermitteln. Versuchen Sie es später erneut; tritt der Fehler dauerhaft auf, prüfen Sie die App-Installation auf GitHub. |
Fehlerantworten (400, 402, 409, 502) enthalten einen
Problem-Details-JSON-Body, dessen Feld detail die Ursache beschreibt.
Verhalten
- Check-Runs werden per Upsert gepflegt. Existiert auf demselben Commit
bereits ein Check-Run mit demselben
checkName, wird er aktualisiert statt dupliziert. Der veröffentlichte Check-Run ist immer im Zustandcompleted. - Höchstens 50 Annotationen werden pro Veröffentlichung angehängt; weitere
Einträge werden stillschweigend verworfen. Packen Sie die vollständige
Finding-Liste in
summary, wenn Sie sie brauchen. - Der PR-Kommentar ist persistent. Ist
commentauftruegesetzt undpullNumberangegeben, sucht das Portal nach einem bestehenden Kommentar mit einem versteckten, auscommentKeyabgeleiteten Marker und aktualisiert ihn; sonst wird ein neuer angelegt. Aufrufe mit demselbencommentKeyaktualisieren also immer denselben Kommentar, verschiedene Keys pflegen getrennte Kommentare (nützlich, wenn mehrere Jobs in denselben Pull Request berichten). OhnecommentKeygilt ein gemeinsamer Standard-Key.
Siehe auch
- CodeCharter GitHub App: App installieren und verknüpfen
- GitHub Actions: die fertige Integration, die diesen Endpunkt für Sie aufruft
- API-Keys in Secrets: den Schlüssel sicher im CI-System ablegen