Distribuere CLI-verktøy
Kompilering på tvers av plattformer, goreleaser og homebrew-taps
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.exeByggflagg for utgivelser
Fjern feilsøkingsinformasjon og deaktiver CGO for mindre, statiske binærfiler:
CGO_ENABLED=0 go build -ldflags="-s -w" -o myappBygge 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.FSVersjonerte 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
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
- Grunnleggende om Cobra
- Flagg og permanente flagg
- Underkommandoer og kommandogrupper
- Distribuere CLI-verktøy