Distribución de herramientas CLI
Compilación cruzada, goreleaser y taps de homebrew
Distribución de herramientas CLI es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
Distribución local con go install
go install github.com/user/tool@latest compila e instala el binario en $GOPATH/bin. Los usuarios necesitan tener Go instalado.
Compilación cruzada
Go realiza compilación cruzada de forma nativa. Establezca GOOS y GOARCH para seleccionar distintos sistemas operativos de destino:
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.exeFlags de compilación para versiones
Elimine la información de depuración y desactive CGO para obtener binarios estáticos más pequeños:
CGO_ENABLED=0 go build -ldflags="-s -w" -o myappInclusión de información de versión
Inyecte información durante la compilación con ldflags:
var version = "dev"
var commit = "none"
// Build: go build -ldflags="-X main.version=1.2.3 -X main.commit=abc1234"GoReleaser
GoReleaser automatiza la compilación cruzada, el empaquetado (tar.gz, .zip), la generación de sumas de comprobación y la carga de versiones en GitHub. Configure el proceso en .goreleaser.yaml.
# .goreleaser.yaml
builds:
- env: [CGO_ENABLED=0]
goos: [linux, darwin, windows]
goarch: [amd64, arm64]Tap de Homebrew
Publique una fórmula de Homebrew para que los usuarios de macOS/Linux puedan instalarla con brew install. GoReleaser puede generar la fórmula automáticamente.
CI/CD con GitHub Actions
Utilice una acción de GitHub para compilar y publicar una versión cada vez que se envíe una etiqueta. GoReleaser cuenta con una acción oficial de GitHub.
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v5
with: { version: latest, args: release --clean }
env: { GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" }Distribución mediante Docker
Empaquete la CLI como una imagen de Docker para los usuarios que prefieran los contenedores. Utilice una compilación de varias etapas para mantener mínima la imagen final.
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
Incluya archivos estáticos (plantillas, esquemas de configuración) en el binario con //go:embed para que este sea completamente independiente.
//go:embed templates/*
var templates embed.FSMódulos versionados
Publique el módulo de su CLI siguiendo el versionado de módulos de Go. A partir de v2, la ruta de importación debe incluir /v2 y la ruta del módulo en go.mod debe coincidir.
Compatibilidad con versiones anteriores
Siga semver. Las versiones menores pueden añadir flags, pero no deben eliminar ni cambiar el nombre de los existentes. Los cambios incompatibles requieren un incremento de la versión principal.
Comprobación rápida
¿Cómo se compila un binario estático de Go para Linux desde un equipo macOS?
Resumen: distribución de herramientas CLI
Puntos clave:
- Realice compilación cruzada con GOOS/GOARCH; utilice CGO_ENABLED=0 para obtener binarios estáticos
- GoReleaser para automatizar el proceso de publicación
- Inyecte la versión con -ldflags "-X main.version=..."
- go:embed para binarios independientes con recursos integrados
Preguntas frecuentes
¿La lección «Distribución de herramientas CLI» es gratis?
Sí — el texto completo de «Distribución de herramientas CLI» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Distribución de herramientas CLI»?
Compilación cruzada, goreleaser y taps de homebrew Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Distribución de herramientas CLI»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Fundamentos de Cobra
- Flags y flags persistentes
- Subcomandos y grupos de comandos
- Distribución de herramientas CLI