CLI-tools distribueren
Cross-compilatie, goreleaser en Homebrew-taps
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.exeCompilatieopties voor een release
Verwijder foutopsporingsinformatie en schakel CGO uit voor kleinere, statische binaire bestanden:
CGO_ENABLED=0 go build -ldflags="-s -w" -o myappVersie-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.FSModules 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
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
- De basis van Cobra
- Flags en persistente flags
- Subcommands en commandogroepen
- CLI-tools distribueren