Go Academy · Lektion

Distribuera CLI-verktyg

Korskompilering, goreleaser och homebrew-taps

Lektion 4 av 413 steg

Distribuera CLI-verktyg är en gratis lektion i Go Academy på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Go Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Go Academy innehåller totalt 4 lektioner.

go install för lokal distribution

go install github.com/user/tool@latest kompilerar och installerar binärfilen i $GOPATH/bin. Användarna måste ha Go installerat.

Korskompilering

Go har inbyggt stöd för korskompilering. Ange GOOS och GOARCH för att rikta dig mot olika operativsystem:

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

Byggflaggor för utgåvor

Ta bort felsökningsinformation och inaktivera CGO för mindre, statiska binärfiler:

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

Bädda in versionsinformation

Injicera information vid byggtid med ldflags:

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

GoReleaser

GoReleaser automatiserar korskompilering, paketering (tar.gz, .zip), generering av kontrollsummor och uppladdning av utgåvor till GitHub. Konfigurera i .goreleaser.yaml.

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

Homebrew-tap

Publicera en Homebrew-formel så att macOS-/Linux-användare kan installera med brew install. GoReleaser kan generera formeln automatiskt.

GitHub Actions CI/CD

Använd en GitHub Action för att bygga och publicera vid varje push av en tagg. GoReleaser har en officiell GitHub Action.

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

Distribution med Docker

Paketerar CLI-programmet som en Docker-avbildning för användare som föredrar containrar. Använd ett bygge i flera steg för att hålla den slutliga avbildningen liten.

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 tillgångar

Bädda in statiska filer (mallar, konfigurationsscheman) i binärfilen med //go:embed så att binärfilen blir helt fristående.

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

Versionshanterade moduler

Publicera CLI-modulen enligt Go-modulernas versionshantering. För v2+ måste importsökvägen innehålla /v2 och modulsökvägen i go.mod måste stämma överens.

Bakåtkompatibilitet

Följ semver. Mindre versionsuppdateringar får lägga till flaggor men får inte ta bort eller byta namn på befintliga flaggor. Bakåtinkompatibla ändringar kräver en höjning av huvudversionen.

Snabbkontroll

Hur bygger du en statisk Go-binärfil för Linux på en macOS-dator?

Sammanfattning: distribuera CLI-verktyg

Viktiga punkter:

  • Korskompilera med GOOS/GOARCH; CGO_ENABLED=0 för statiska binärfiler
  • GoReleaser för en automatiserad utgivningspipeline
  • Injicera versionen med -ldflags "-X main.version=..."
  • go:embed för fristående binärfiler med inbäddade tillgångar
Gratis att börja

Lär dig Go med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
51
Lektioner
203

Vanliga frågor

Är lektionen ”Distribuera CLI-verktyg” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Go Academy, inklusive ”Distribuera CLI-verktyg”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Go Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Distribuera CLI-verktyg”?

Korskompilering, goreleaser och homebrew-taps Ni övar på Go Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Go Academy?

Du behöver inga förkunskaper. Utbildningen i Go Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Distribuera CLI-verktyg”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Go Academy-lektionen?

Ja. Varje Go Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Grunderna i Cobra
  2. Flaggor och persistenta flaggor
  3. Underkommandon och kommandogrupper
  4. Distribuera CLI-verktyg
← Tillbaka till Go Academy