0Pricing
Go Academy · Ders

CLI Araçlarını Dağıtma

Çapraz derleme, goreleaser ve homebrew tap'leri

CLI Araçlarını Dağıtma, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Yerel dağıtım için go install

go install github.com/user/tool@latest, ikili dosyayı derler ve $GOPATH/bin dizinine yükler. Kullanıcıların Go'yu yüklemiş olması gerekir.

Çapraz derleme

Go, yerel olarak çapraz derlemeyi destekler. Farklı işletim sistemlerini hedeflemek için GOOS ve GOARCH değerlerini ayarlayın:

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

Sürüm için derleme bayrakları

Daha küçük, statik ikili dosyalar için hata ayıklama bilgilerini ayıklayın ve CGO'yu devre dışı bırakın:

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

Sürüm bilgilerini gömme

Derleme zamanı bilgilerini ldflags ile ekleyin:

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

GoReleaser

GoReleaser çapraz derlemeyi, paketlemeyi (tar.gz, .zip), sağlama toplamı oluşturmayı ve sürümleri GitHub'a yüklemeyi otomatikleştirir. .goreleaser.yaml dosyasında yapılandırın.

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

Homebrew tap'i

macOS/Linux kullanıcılarının brew install ile yükleyebilmesi için bir Homebrew formülü yayımlayın. GoReleaser formülü otomatik olarak oluşturabilir.

GitHub Actions CI/CD

Her etiket gönderiminde derleme ve sürüm yayımlama yapmak için bir GitHub Action kullanın. GoReleaser'ın resmî bir GitHub Action'ı vardır.

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

Docker dağıtımı

Kapsayıcıları tercih eden kullanıcılar için CLI'yi Docker görüntüsü olarak paketleyin. Son görüntüyü küçük tutmak için çok aşamalı derleme kullanın.

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"]

Varlıklar için go:embed

İkili dosyanın tamamen bağımsız olması için statik dosyaları (templates, yapılandırma şemaları) //go:embed ile ikili dosyaya gömün.

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

Sürümlü modüller

CLI modülünüzü Go modül sürümleme kurallarını izleyerek yayımlayın. v2+ için içe aktarma yolu /v2 içermeli ve go.mod modül yolu bununla eşleşmelidir.

Geriye dönük uyumluluk

semver kurallarını izleyin. İkincil sürümler bayraklar ekleyebilir ancak mevcut bayrakları kaldırmamalı veya yeniden adlandırmamalıdır. Uyumluluğu bozan değişiklikler için ana sürüm artırılmalıdır.

Hızlı Kontrol

macOS makinesinde Linux için statik bir Go ikili dosyasını nasıl derlersiniz?

Özet: CLI Araçlarını Dağıtma

Temel noktalar:

  • GOOS/GOARCH ile çapraz derleme yapın; statik ikili dosyalar için CGO_ENABLED=0
  • Otomatik sürüm işlem hattı için GoReleaser
  • -ldflags "-X main.version=..." ile sürümü ekleyin
  • Gömülü varlıklara sahip bağımsız ikili dosyalar için go:embed

Sıkça Sorulan Sorular

“CLI Araçlarını Dağıtma” dersi ücretsiz mi?

Evet — “CLI Araçlarını Dağıtma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“CLI Araçlarını Dağıtma” dersinde ne öğreneceğim?

Çapraz derleme, goreleaser ve homebrew tap'leri Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“CLI Araçlarını Dağıtma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Cobra Temelleri
  2. Bayraklar ve Kalıcı Bayraklar
  3. Alt Komutlar ve Komut Grupları
  4. CLI Araçlarını Dağıtma
← Go Academy Sayfasına Dön