Mendistribusikan Alat CLI
Kompilasi silang, goreleaser, dan tap homebrew
Mendistribusikan Alat CLI adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
go install untuk distribusi lokal
go install github.com/user/tool@latest mengompilasi dan memasang biner ke dalam $GOPATH/bin. Pengguna perlu memasang Go.
Kompilasi silang
Go mendukung kompilasi silang secara bawaan. Atur GOOS dan GOARCH untuk menargetkan sistem operasi yang berbeda:
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.exeOpsi pembuatan untuk rilis
Hapus informasi penelusuran kesalahan dan nonaktifkan CGO untuk menghasilkan biner yang lebih kecil dan statis:
CGO_ENABLED=0 go build -ldflags="-s -w" -o myappMenyematkan informasi versi
Sisipkan informasi saat pembuatan dengan ldflags:
var version = "dev"
var commit = "none"
// Build: go build -ldflags="-X main.version=1.2.3 -X main.commit=abc1234"GoReleaser
GoReleaser mengotomatiskan kompilasi silang, pengemasan (tar.gz, .zip), pembuatan nilai pemeriksaan, dan pengunggahan rilis ke GitHub. Konfigurasikan di .goreleaser.yaml.
# .goreleaser.yaml
builds:
- env: [CGO_ENABLED=0]
goos: [linux, darwin, windows]
goarch: [amd64, arm64]Tap Homebrew
Terbitkan formula Homebrew agar pengguna macOS/Linux dapat memasangnya dengan brew install. GoReleaser dapat membuat formula tersebut secara otomatis.
CI/CD GitHub Actions
Gunakan GitHub Action untuk membangun dan merilis pada setiap pengiriman tag. GoReleaser memiliki GitHub Action resmi.
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v5
with: { version: latest, args: release --clean }
env: { GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" }Distribusi Docker
Kemas CLI sebagai image Docker bagi pengguna yang lebih memilih kontainer. Gunakan pembuatan bertahap agar image akhir tetap minimal.
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 untuk aset
Sematkan berkas statis (templates, skema konfigurasi) ke dalam biner dengan //go:embed agar biner sepenuhnya mandiri.
//go:embed templates/*
var templates embed.FSModul berversi
Terbitkan modul CLI Anda mengikuti pembuatan versi modul Go. Untuk v2+, jalur impor harus menyertakan /v2 dan jalur modul go.mod harus cocok.
Kompatibilitas ke belakang
Ikuti semver. Rilis minor boleh menambahkan opsi, tetapi tidak boleh menghapus atau mengganti nama opsi yang sudah ada. Perubahan yang merusak kompatibilitas memerlukan kenaikan versi mayor.
Pemeriksaan Singkat
Bagaimana cara membangun biner Go statis untuk Linux pada mesin macOS?
Ringkasan: Mendistribusikan Alat CLI
Poin-poin utama:
- Kompilasi silang dengan GOOS/GOARCH; CGO_ENABLED=0 untuk biner statis
- GoReleaser untuk alur rilis otomatis
- Sisipkan versi dengan -ldflags "-X main.version=..."
- go:embed untuk biner mandiri dengan aset yang disematkan
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mendistribusikan Alat CLI” gratis?
Ya — teks lengkap “Mendistribusikan Alat CLI” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mendistribusikan Alat CLI”?
Kompilasi silang, goreleaser, dan tap homebrew Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Mendistribusikan Alat CLI” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar Cobra
- Flag dan Flag Persisten
- Subperintah dan Grup Perintah
- Mendistribusikan Alat CLI