CLI als Standalone-Binary
Auf CI-Runnern, in Docker-Images und auf Linux- oder macOS-Devs ist der Standalone-CLI-Build der richtige Weg. Ein selbst-enthaltenes Binary, keine Runtime-Voraussetzung, ein einzelnes ZIP zum Auspacken.
Welcher Build für welche Plattform
| Datei | Für |
|---|---|
codeguard-X.Y.Z-cli-win-x64.zip |
Windows x64 |
codeguard-X.Y.Z-cli-linux-x64.zip |
Linux x64 (glibc-basiert) |
codeguard-X.Y.Z-cli-osx-x64.zip |
macOS Intel |
codeguard-X.Y.Z-cli-osx-arm64.zip |
macOS Apple Silicon |
Alle vier sind im Portal unter /downloads verfügbar.
Download und Auspacken
# Beispiel: Linux x64
curl -L -o codeguard.zip \
-H "Authorization: Bearer $CODEGUARD_API_KEY" \
https://codeguard.bochmann-software.com/api/v1/cli/latest/linux-x64
unzip codeguard.zip -d /opt/codeguard
chmod +x /opt/codeguard/codeguard
/opt/codeguard/codeguard --version
Auf macOS musst du beim ersten Start eventuell den Gatekeeper-Check durchklicken (Systemeinstellungen → Datenschutz → "Trotzdem öffnen") oder das Quarantäne-Attribut entfernen:
xattr -dr com.apple.quarantine /opt/codeguard
Wir lassen die Binaries vorerst nicht notarisieren. Wenn euch das auf macOS stört, sagt Bescheid, wir können den Schritt in den Release-Workflow einbauen.
In Docker
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /app
COPY . .
RUN dotnet build -c Release
FROM mcr.microsoft.com/dotnet/runtime:9.0
WORKDIR /app
RUN apt-get update && apt-get install -y unzip && rm -rf /var/lib/apt/lists/*
ARG CODEGUARD_API_KEY
RUN curl -sSL -H "Authorization: Bearer $CODEGUARD_API_KEY" \
-o codeguard.zip \
https://codeguard.bochmann-software.com/api/v1/cli/latest/linux-x64 \
&& unzip codeguard.zip -d /opt/codeguard \
&& rm codeguard.zip \
&& chmod +x /opt/codeguard/codeguard
ENV PATH="/opt/codeguard:${PATH}"
COPY --from=build /app/publish ./
RUN codeguard analyze . --output sarif --output-file codeguard.sarif
Caching in CI
Die ZIPs sind klein (5-10 MB). Wenn dein CI-Provider Caching unterstützt, cache das ausgepackte Verzeichnis statt die ZIP. Auspacken ist die teurere Operation als Download.
GitHub Actions cached automatisch wenn ihr die offizielle Action nutzt. Siehe GitHub Actions.
Versions-Pinning
Statt /latest/ könnt ihr eine konkrete Version pinnen:
https://codeguard.bochmann-software.com/api/v1/cli/1.4.0/linux-x64
Wir empfehlen das für reproduzierbare Builds. Siehe Versionierung.
PATH-Setup
Wenn ihr das CLI-Verzeichnis nicht im PATH habt, könnt ihr den vollen Pfad nutzen. Für persistentes PATH-Setup auf einer Workstation:
# Linux/macOS, in .bashrc oder .zshrc
export PATH="/opt/codeguard:$PATH"
# Windows
[Environment]::SetEnvironmentVariable("PATH",
"$env:PATH;C:\codeguard", "User")