CodeGuard

CLI als Standalone-Binary

Die CLI ohne Installer, für CI-Runner, Docker, Linux und macOS.

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")