0Pricing
Go Academy · Lektion

CLI-Tools verteilen

Cross-Compilation, goreleaser und Homebrew-Taps

CLI-Tools verteilen ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

go install für die lokale Verteilung

go install github.com/user/tool@latest kompiliert die Binärdatei und installiert sie in $GOPATH/bin. Benutzer benötigen eine installierte Go-Version.

Cross-Kompilierung

Go unterstützt Cross-Kompilierung nativ. Setzen Sie GOOS und GOARCH, um verschiedene Zielbetriebssysteme festzulegen:

GOOS=linux  GOARCH=amd64 go build -o myapp-linux-amd64
GOOS=darwin GOARCH=arm64 go build -o myapp-darwin-arm64
GOOS=windows GOARCH=amd64 go build -o myapp-windows-amd64.exe

Build-Flags für Releases

Entfernen Sie Debug-Informationen und deaktivieren Sie CGO, um kleinere, statische Binärdateien zu erstellen:

CGO_ENABLED=0 go build -ldflags="-s -w" -o myapp

Versionsinformationen einbetten

Fügen Sie Build-Zeit-Informationen mit ldflags ein:

var version = "dev"
var commit  = "none"
// Build: go build -ldflags="-X main.version=1.2.3 -X main.commit=abc1234"

GoReleaser

GoReleaser automatisiert Cross-Kompilierung, Paketierung (tar.gz, .zip), die Generierung von Prüfsummen und das Hochladen von Releases zu GitHub. Konfigurieren Sie GoReleaser in .goreleaser.yaml.

# .goreleaser.yaml
builds:
  - env: [CGO_ENABLED=0]
    goos: [linux, darwin, windows]
    goarch: [amd64, arm64]

Homebrew-Tap

Veröffentlichen Sie eine Homebrew-Formel, damit Benutzer von macOS/Linux die Anwendung mit brew install installieren können. GoReleaser kann die Formel automatisch generieren.

GitHub-Actions-CI/CD

Verwenden Sie eine GitHub Action, um bei jedem Push eines Tags zu bauen und ein Release zu veröffentlichen. GoReleaser bietet eine offizielle GitHub Action.

- name: Run GoReleaser
  uses: goreleaser/goreleaser-action@v5
  with: { version: latest, args: release --clean }
  env: { GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" }

Verteilung über Docker

Paketieren Sie die CLI als Docker-Image für Benutzer, die Container bevorzugen. Verwenden Sie einen Multi-Stage-Build, um das finale Image klein zu halten.

FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o myapp

FROM scratch
COPY --from=build /app/myapp /myapp
ENTRYPOINT ["/myapp"]

go:embed für Ressourcen

Betten Sie statische Dateien (Vorlagen, Konfigurationsschemas) mit //go:embed in die Binärdatei ein, sodass sie vollständig eigenständig ist.

//go:embed templates/*
var templates embed.FS

Versionierte Module

Veröffentlichen Sie Ihr CLI-Modul gemäß der Go-Modulversionierung. Ab v2 muss der Importpfad /v2 enthalten und der Modulpfad in go.mod übereinstimmen.

Abwärtskompatibilität

Befolgen Sie semver. Minor-Releases dürfen Flags hinzufügen, aber keine vorhandenen Flags entfernen oder umbenennen. Breaking Changes erfordern eine Erhöhung der Major-Version.

Kurzer Test

Wie erstellen Sie auf einem macOS-Rechner eine statische Go-Binärdatei für Linux?

Zusammenfassung: CLI-Tools verteilen

Wichtige Punkte:

  • Cross-Kompilierung mit GOOS/GOARCH; CGO_ENABLED=0 für statische Binärdateien
  • GoReleaser für eine automatisierte Release-Pipeline
  • Version mit -ldflags "-X main.version=..." einfügen
  • go:embed für eigenständige Binärdateien mit eingebetteten Ressourcen

Häufig gestellte Fragen

Ist die Lektion „CLI-Tools verteilen“ kostenlos?

Ja — der vollständige Text von „CLI-Tools verteilen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „CLI-Tools verteilen“?

Cross-Compilation, goreleaser und Homebrew-Taps Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Go Academy zu starten?

Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „CLI-Tools verteilen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?

Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Cobra-Grundlagen
  2. Flags und persistente Flags
  3. Unterbefehle und Befehlsgruppen
  4. CLI-Tools verteilen
← Zurück zu Go Academy