Go Academy · Oppitunti

CLI-työkalujen jakelu

Ristiinkääntäminen, goreleaser ja homebrew-tapit

Oppitunti 4/413 vaihetta

CLI-työkalujen jakelu on ilmainen Go Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Go Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Go Academy-kurssilla on yhteensä 4 oppituntia.

go install paikallista jakelua varten

go install github.com/user/tool@latest kääntää ohjelman ja asentaa binäärin hakemistoon $GOPATH/bin. Käyttäjällä on oltava Go asennettuna.

Ristikääntäminen

Go tukee ristikääntämistä suoraan. Aseta GOOS- ja GOARCH-muuttujat eri käyttöjärjestelmille kohdistamista varten:

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

Koontiliput julkaisuja varten

Poista virheenkorjaustiedot ja poista CGO käytöstä pienempiä, staattisia binäärejä varten:

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

Versiotietojen upottaminen

Lisää koontiajan tiedot ldflags-lipuilla:

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

GoReleaser

GoReleaser automatisoi ristikääntämisen, pakkaamisen (tar.gz, .zip), tarkistussummien luonnin ja julkaisujen lataamisen GitHubiin. Määritä asetukset tiedostossa .goreleaser.yaml.

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

Homebrew-tap

Julkaise Homebrew-kaava, jotta macOS/Linux-käyttäjät voivat asentaa ohjelman komennolla brew install. GoReleaser voi luoda kaavan automaattisesti.

GitHub Actions CI/CD

Käytä GitHub Actionia koontiin ja julkaisemiseen aina, kun tunniste työnnetään repositorioon. GoReleaserilla on virallinen GitHub Action.

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

Jakelu Dockerilla

Pakkaa CLI Docker-levykuvaksi käyttäjille, jotka suosivat kontteja. Käytä monivaiheista koontia, jotta lopullinen levykuva pysyy pienenä.

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 resursseja varten

Upota staattiset tiedostot (mallit ja asetusskeemat) binääriin komennolla //go:embed, jotta binääri on täysin itsenäinen.

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

Versioidut moduulit

Julkaise CLI-moduulisi Go-moduulien versionointikäytäntöjen mukaisesti. Versiosta v2 alkaen tuontipolun on sisällettävä /v2 ja go.mod-tiedoston moduulipolun on vastattava sitä.

Taaksepäin yhteensopivuus

Noudata semveriä. Pienet julkaisut voivat lisätä lippuja, mutta ne eivät saa poistaa tai nimetä olemassa olevia lippuja uudelleen. Rikkovat muutokset edellyttävät pääversion vaihtamista.

Pikatarkistus

Miten käännät staattisen Go-binaarin Linuxille macOS-koneella?

Kertaus: CLI-työkalujen jakelu

Keskeiset kohdat:

  • Ristikäännä GOOS/GOARCH-muuttujilla; käytä asetusta CGO_ENABLED=0 staattisia binäärejä varten
  • GoReleaser automatisoitua julkaisuprosessia varten
  • Upota versio komennolla -ldflags "-X main.version=..."
  • go:embed itsenäisiä, upotettuja resursseja sisältäviä binäärejä varten
Aloita maksutta

Opi Go tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”CLI-työkalujen jakelu” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Go Academy-oppimispolun 3 oppituntia, myös oppitunnin “CLI-työkalujen jakelu”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Go Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”CLI-työkalujen jakelu”?

Ristiinkääntäminen, goreleaser ja homebrew-tapit Harjoittelet Go Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Go Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Go Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”CLI-työkalujen jakelu”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Go Academy-oppitunnilla?

Kyllä. Jokainen Go Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Cobra-perusteet
  2. Liput ja pysyvät liput
  3. Alikomennot ja komentoryhmät
  4. CLI-työkalujen jakelu
← Takaisin: Go Academy