Go Academy · Les

CLI-tools distribueren

Cross-compilatie, goreleaser en Homebrew-taps

Les 4 van 413 stappen

CLI-tools distribueren is een gratis Go Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Go Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Go Academy bevat in totaal 4 lessen.

go install voor lokale distributie

go install github.com/user/tool@latest compileert het binaire bestand en installeert het in $GOPATH/bin. Gebruikers moeten Go hebben geïnstalleerd.

Kruiscompilatie

Go kan van nature kruiscompileren. Stel GOOS en GOARCH in om verschillende besturingssystemen als doel te kiezen:

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

Compilatieopties voor een release

Verwijder foutopsporingsinformatie en schakel CGO uit voor kleinere, statische binaire bestanden:

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

Versie-informatie inbouwen

Voeg informatie uit de bouwtijd toe met ldflags:

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

GoReleaser

GoReleaser automatiseert kruiscompilatie, het verpakken (tar.gz, .zip), het genereren van controlesommen en het uploaden van releases naar GitHub. Configureer dit in .goreleaser.yaml.

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

Homebrew-tap

Publiceer een Homebrew-formule, zodat macOS/Linux-gebruikers kunnen installeren met brew install. GoReleaser kan de formule automatisch genereren.

GitHub Actions CI/CD

Gebruik een GitHub Action om bij elke push van een tag te bouwen en een release te maken. GoReleaser heeft een officiële GitHub Action.

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

Distributie met Docker

Verpak de CLI als een Docker-image voor gebruikers die de voorkeur geven aan containers. Gebruik een build in meerdere fasen om de uiteindelijke image klein te houden.

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 voor bestanden

Sluit statische bestanden (sjablonen, configuratieschema's) met //go:embed in het binaire bestand in, zodat dit volledig zelfstandig is.

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

Modules met versies

Publiceer je CLI-module volgens de versieconventies van Go-modules. Voor v2+ moet het importpad /v2 bevatten en moet het modulepad in go.mod overeenkomen.

Achterwaartse compatibiliteit

Volg semver. Kleine releases mogen opties toevoegen, maar bestaande opties niet verwijderen of hernoemen. Wijzigingen die compatibiliteit verbreken, vereisen een verhoging van het hoofdversienummer.

Korte controle

Hoe bouw je op een macOS-machine een statisch Go-binair bestand voor Linux?

Samenvatting: CLI-tools distribueren

Belangrijkste punten:

  • Kruiscompileer met GOOS/GOARCH; CGO_ENABLED=0 voor statische binaire bestanden
  • GoReleaser voor een geautomatiseerd releaseproces
  • Voeg de versie toe met -ldflags "-X main.version=..."
  • go:embed voor zelfstandige binaire bestanden met ingebedde bestanden
Gratis beginnen

Leer Go met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
51
Lessen
203

Veelgestelde vragen

Is de les “CLI-tools distribueren” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Go Academy, waaronder “CLI-tools distribueren”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Go Academy bevat in totaal 4 lessen.

Wat leer ik in “CLI-tools distribueren”?

Cross-compilatie, goreleaser en Homebrew-taps Je oefent met Go Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Go Academy te beginnen?

Ervaring vooraf is niet nodig. Go Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “CLI-tools distribueren”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Go Academy?

Ja. Elke les over Go Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. De basis van Cobra
  2. Flags en persistente flags
  3. Subcommands en commandogroepen
  4. CLI-tools distribueren
← Terug naar Go Academy