Go Academy · leksjon

Distribuere CLI-verktøy

Kompilering på tvers av plattformer, goreleaser og homebrew-taps

Leksjon 4 av 413 trinn

Distribuere CLI-verktøy er en gratis leksjon i Go Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Go Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Go Academy inneholder totalt 4 leksjoner.

go install for lokal distribusjon

go install github.com/user/tool@latest kompilerer og installerer binærfilen i $GOPATH/bin. Brukerne må ha Go installert.

Krysskompilering

Go kan krysskompilere direkte. Angi GOOS og GOARCH for å målrette mot andre operativsystemer:

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

Byggflagg for utgivelser

Fjern feilsøkingsinformasjon og deaktiver CGO for mindre, statiske binærfiler:

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

Bygge inn versjonsinformasjon

Sett inn informasjon fra byggetidspunktet med ldflags:

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

GoReleaser

GoReleaser automatiserer krysskompilering, pakking (tar.gz, .zip), generering av kontrollsummer og opplasting av utgivelser til GitHub. Konfigurer i .goreleaser.yaml.

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

Homebrew-tap

Publiser en Homebrew-formel slik at macOS-/Linux-brukere kan installere med brew install. GoReleaser kan generere formelen automatisk.

GitHub Actions CI/CD

Bruk en GitHub Action til å bygge og utgi ved hver push av en tag. GoReleaser har en offisiell GitHub Action.

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

Docker-distribusjon

Pakk CLI-verktøyet som et Docker-image for brukere som foretrekker containere. Bruk et flertrinnsbygg for å holde det endelige imaget minimalt.

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 for ressurser

Bygg inn statiske filer (maler, konfigurasjonsskjemaer) i binærfilen med //go:embed, slik at binærfilen er fullstendig selvstendig.

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

Versjonerte moduler

Publiser CLI-modulen i tråd med versjonering av Go-moduler. For v2+ må importbanen inneholde /v2, og modulbanen i go.mod må stemme overens.

Bakoverkompatibilitet

Følg semver. Mindre utgivelser kan legge til flagg, men må ikke fjerne eller gi eksisterende flagg nye navn. Endringer som bryter kompatibiliteten, krever et hopp i hovedversjonen.

Hurtigsjekk

Hvordan bygger De en statisk Go-binærfil for Linux på en macOS-maskin?

Oppsummering: Distribusjon av CLI-verktøy

Viktige punkter:

  • Krysskompiler med GOOS/GOARCH; CGO_ENABLED=0 for statiske binærfiler
  • GoReleaser for en automatisert utgivelsespipeline
  • Sett inn versjonen med -ldflags "-X main.version=..."
  • go:embed for selvstendige binærfiler med innebygde ressurser
Gratis å komme i gang

Lær deg Go med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
51
Leksjoner
203

Ofte stilte spørsmål

Er leksjonen «Distribuere CLI-verktøy» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Go Academy, inkludert «Distribuere CLI-verktøy», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Go Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Distribuere CLI-verktøy»?

Kompilering på tvers av plattformer, goreleaser og homebrew-taps Du øver på Go Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Go Academy?

Ingen tidligere erfaring er nødvendig. Go Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Distribuere CLI-verktøy»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Go Academy-leksjonen?

Ja. Alle Go Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Grunnleggende om Cobra
  2. Flagg og permanente flagg
  3. Underkommandoer og kommandogrupper
  4. Distribuere CLI-verktøy
← Tilbake til Go Academy