Skip to content

TeamCity

CodeCharter in einem TeamCity-Build-Step.

Verwenden Sie einen Command Line-Build-Step mit einem Custom-Skript. Der Agent muss das .NET 9 SDK installiert haben (oder ein Docker-Wrapper-Image mit dem SDK nutzen). Das Skript unten läuft in Bash; für Windows-Agents Shebang und Runner-Typ entsprechend anpassen.

Liegt Ihr Repository auf GitHub und läuft nur der Build auf TeamCity, können Sie aus diesem Build zusätzlich einen gebrandeten CodeCharter-Check-Run und PR-Kommentar veröffentlichen, siehe Checks aus beliebigem CI veröffentlichen.

TeamCity-Build-Step (Command Line):

#!/bin/bash
set -e

# Download
curl -sSL -H "Authorization: Bearer %env.CODECHARTER_API_KEY%" \
    -o codecharter.tar.gz \
    https://codecharter.tools/api/v1/cli/linux-x64/1.0.12
mkdir -p codecharter-bin && tar -xzf codecharter.tar.gz -C codecharter-bin
chmod +x codecharter-bin/codecharter

# Run the analysis (console output)
codecharter-bin/codecharter analyze MySolution.sln \
    --fail-on error \
    --output console \
    2>&1 | tee codecharter.log

# Optionally publish as artifact
echo "##teamcity[publishArtifacts 'codecharter.log']"

Ersetzen Sie MySolution.sln durch den Pfad zu Ihrer .sln-, .slnx- oder .csproj-Datei. Für maschinenlesbare Reports ergänzen Sie --output json:codecharter.json oder --output sarif:codecharter.sarif und veröffentlichen diese Dateien statt (oder zusätzlich zu) dem Konsolen-Log als Artefakte.

Da das Skript mit set -e läuft, schlägt der Build fehl, wenn analyze einen Exit-Code ungleich null liefert: Exit-Code 1 bedeutet Findings auf oder über dem --fail-on-Level, 2 einen Usage-Fehler, 3 dass die Solution nicht geladen werden konnte, und 6 einen Lizenzfehler.

API-Key

In TeamCity: Project → Parameters → Environment variable CODECHARTER_API_KEY, "Password"-Type. Legen Sie ihn auf Projektebene an, damit alle Build-Konfigurationen darauf zugreifen können.

Die Analyse benötigt eine Lizenz. Ist CODECHARTER_API_KEY in der Build-Umgebung gesetzt, holt sich die CLI zu Beginn des Laufs automatisch eine kurzlebige Lizenz vom Portal; weitere Einrichtung ist nicht nötig. Ist keine gültige Lizenz verfügbar, beendet sich die CLI mit Exit-Code 6.

Caching

TeamCity hat keinen eingebauten Datei-Cache-Mechanismus, der dem GitHub-Actions- actions/cache entspricht. Das Verzeichnis .codecharter/cache/ neben Ihrer Solution, in dem die von codecharter restore heruntergeladenen Rule-Bundles liegen, wird auf einem sauberen Agent nicht automatisch zwischen Builds persistiert.

Um das CodeCharter-Cache-Verzeichnis zu cachen, benötigen Sie einen gepinnten, nicht-ephemeren Agent, der seinen Workspace zwischen Builds behält. Deaktivieren Sie dazu in der Build-Konfiguration die Option für einen sauberen Checkout, damit das Arbeitsverzeichnis erhalten bleibt.

Ohne einen persistenten Workspace lädt codecharter restore die Rule-Bundles bei jedem Build erneut herunter. Mit einem warmen Cache überspringt der Lauf diesen Download.

Self-Hosted Agents

Funktioniert ohne Anpassungen. Der Agent braucht Internetzugriff auf codecharter.tools, oder Sie spiegeln das Release-Archiv in ein lokales Artefakt-Repository. Beachten Sie, dass die CLI zur Laufzeit weiterhin das Portal kontaktiert, um über Ihren API-Key ihre kurzlebige Lizenz zu beziehen; für vollständig offline arbeitende Agents hinterlegen Sie stattdessen eine codecharter.license-Datei (zum Beispiel über die Option --license).