Dystrybucja narzędzi CLI
Kompilacja skrośna, goreleaser i tapy homebrew
Dystrybucja narzędzi CLI to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.
go install do lokalnej dystrybucji
go install github.com/user/tool@latest kompiluje plik binarny i instaluje go w katalogu $GOPATH/bin. Użytkownicy muszą mieć zainstalowane Go.
Kompilacja krzyżowa
Go natywnie obsługuje kompilację krzyżową. Należy ustawić GOOS i GOARCH, aby wskazać inne systemy operacyjne:
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.exeFlagi kompilacji na potrzeby wydania
Aby uzyskać mniejsze, statyczne pliki binarne, należy usunąć informacje debugowania i wyłączyć CGO:
CGO_ENABLED=0 go build -ldflags="-s -w" -o myappOsadzanie informacji o wersji
Informacje z czasu kompilacji należy wstrzyknąć za pomocą ldflags:
var version = "dev"
var commit = "none"
// Build: go build -ldflags="-X main.version=1.2.3 -X main.commit=abc1234"GoReleaser
GoReleaser automatyzuje kompilację krzyżową, pakowanie (tar.gz, .zip), generowanie sum kontrolnych oraz przesyłanie wydań do GitHub. Konfigurację należy umieścić w pliku .goreleaser.yaml.
# .goreleaser.yaml
builds:
- env: [CGO_ENABLED=0]
goos: [linux, darwin, windows]
goarch: [amd64, arm64]Repozytorium Homebrew
Należy opublikować formułę Homebrew, aby użytkownicy macOS/Linux mogli instalować aplikację za pomocą brew install. GoReleaser może automatycznie wygenerować tę formułę.
GitHub Actions CI/CD
Należy użyć GitHub Action do budowania i publikowania aplikacji po każdym wypchnięciu taga. GoReleaser ma oficjalną akcję GitHub.
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v5
with: { version: latest, args: release --clean }
env: { GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" }Dystrybucja za pomocą Dockera
Należy spakować CLI jako obraz Dockera dla użytkowników, którzy preferują kontenery. Warto użyć kompilacji wieloetapowej, aby zachować minimalny rozmiar końcowego obrazu.
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 do zasobów
Należy osadzić pliki statyczne (szablony, schematy konfiguracji) w pliku binarnym za pomocą //go:embed, aby był on w pełni samodzielny.
//go:embed templates/*
var templates embed.FSModuły wersjonowane
Moduł CLI należy publikować zgodnie z zasadami wersjonowania modułów Go. W przypadku wersji v2+ ścieżka importu musi zawierać /v2, a ścieżka modułu w pliku go.mod musi się z nią zgadzać.
Kompatybilność wsteczna
Należy stosować semver. Wydania minor mogą dodawać flagi, ale nie mogą usuwać ani zmieniać nazw istniejących flag. Zmiany łamiące kompatybilność wymagają zwiększenia głównego numeru wersji.
Szybki test
Jak skompilować statyczny plik binarny Go dla systemu Linux na komputerze z macOS?
Podsumowanie: dystrybucja narzędzi CLI
Najważniejsze informacje:
- Kompilacja krzyżowa za pomocą GOOS/GOARCH; CGO_ENABLED=0 dla statycznych plików binarnych
- GoReleaser do automatyzacji procesu publikowania wydań
- Wstrzykiwanie wersji za pomocą -ldflags "-X main.version=..."
- go:embed do tworzenia samodzielnych plików binarnych z osadzonymi zasobami
Często zadawane pytania
Czy lekcja „Dystrybucja narzędzi CLI” jest bezpłatna?
Tak — pełny tekst „Dystrybucja narzędzi CLI” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Dystrybucja narzędzi CLI”?
Kompilacja skrośna, goreleaser i tapy homebrew Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Go Academy?
Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Dystrybucja narzędzi CLI”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?
Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy Cobra
- Flagi i flagi trwałe
- Podpolecenia i grupy poleceń
- Dystrybucja narzędzi CLI