0Pricing
Go Academy · Aula

Distribuindo ferramentas de CLI

Compilação cruzada, goreleaser e taps do homebrew

Distribuindo ferramentas de CLI é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.

go install para distribuição local

go install github.com/user/tool@latest compila e instala o binário em $GOPATH/bin. Os usuários precisam ter o Go instalado.

Compilação cruzada

O Go faz compilação cruzada nativamente. Defina GOOS e GOARCH para direcionar a compilação a sistemas operacionais diferentes:

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

Sinalizadores de compilação para lançamento

Remova as informações de depuração e desative o CGO para obter binários menores e estáticos:

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

Incorporando informações de versão

Insira informações do momento da compilação com ldflags:

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

GoReleaser

O GoReleaser automatiza a compilação cruzada, o empacotamento (tar.gz, .zip), a geração de somas de verificação e o envio de lançamentos ao GitHub. Configure-o em .goreleaser.yaml.

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

Tap do Homebrew

Publique uma fórmula do Homebrew para que usuários de macOS/Linux possam instalar com brew install. O GoReleaser pode gerar a fórmula automaticamente.

CI/CD com GitHub Actions

Use uma ação do GitHub para compilar e publicar a cada envio de tag. O GoReleaser tem uma ação oficial do GitHub.

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

Distribuição com Docker

Empacote a CLI como uma imagem Docker para usuários que preferem contêineres. Use uma compilação em vários estágios para manter a imagem final mínima.

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 para recursos

Incorpore arquivos estáticos (templates, esquemas de configuração) ao binário com //go:embed para que ele seja totalmente independente.

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

Módulos versionados

Publique seu módulo CLI seguindo o versionamento de módulos do Go. A partir da v2, o caminho de importação deve incluir /v2, e o caminho do módulo em go.mod deve corresponder a ele.

Compatibilidade com versões anteriores

Siga o versionamento semântico. Os lançamentos menores podem adicionar sinalizadores, mas não devem remover nem renomear os existentes. Mudanças incompatíveis exigem o aumento da versão principal.

Verificação rápida

Como compilar um binário Go estático para Linux em uma máquina macOS?

Recapitulação: distribuição de ferramentas CLI

Pontos principais:

  • Faça compilação cruzada com GOOS/GOARCH; CGO_ENABLED=0 para binários estáticos
  • GoReleaser para automatizar o fluxo de lançamento
  • Injete a versão com -ldflags "-X main.version=..."
  • go:embed para binários independentes com recursos incorporados

Perguntas Frequentes

A aula “Distribuindo ferramentas de CLI” é grátis?

Sim — o texto completo de “Distribuindo ferramentas de CLI” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.

O que vou aprender em “Distribuindo ferramentas de CLI”?

Compilação cruzada, goreleaser e taps do homebrew Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Go Academy?

Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Distribuindo ferramentas de CLI”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Go Academy?

Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos do Cobra
  2. Flags e flags persistentes
  3. Subcomandos e grupos de comandos
  4. Distribuindo ferramentas de CLI
← Voltar para Go Academy