Los servicios Go de producción necesitan una plantilla de pipeline de CI que bloquee la fusión hasta que pasen el formato, el análisis estático, las pruebas, la detección de carreras y los escaneos de vulnerabilidades.
Esta página es un punto de partida para copiar y pegar que los equipos pueden adaptar para GitHub Actions, GitLab CI o Buildkite.
# Divide las pruebas en repositorios grandesgo test -race -count=1 $(go list ./... | head -20)# Guarda los módulos en CI (setup-go se encarga en GitHub)GOMODCACHE=$RUNNER_TEMP/gomodcache go test ./...
Establece GOTOOLCHAIN=local o fija go-version explícitamente para reproducibilidad.
Race solo en la rama principal - Los PR fusionan carreras en producción. Solución: Requerir -race en cada trabajo de PR.
Advertencias de govulncheck ignoradas - Los equipos las silencian sin ruta de actualización. Solución: Clasifica por severidad; actualiza módulos o documenta el riesgo aceptado con fecha de caducidad.
Timeout predeterminado de golangci-lint de 1m - Los monorepos grandes fallan de forma inestable. Solución:--timeout=5m y división de módulos.
Omitir vet porque lint incluye govet - Se rompe cuando el trabajo de lint se omite. Solución: Mantén vet en el trabajo rápido o exige lint como verificación requerida.
Las pruebas de integración necesitan Docker - El trabajo solo pasa las pruebas unitarias. Solución: Separa el trabajo integration con servicios; aún así bloquea la fusión.
govulncheck@latest sin fijar - El comportamiento de la CI cambia silenciosamente. Solución: Fija la versión en el flujo de trabajo o en tools.go.
Versiones de Stack: Esta página fue escrita para Go 1.26.x (predeterminado Green Tea GC, modernizadores de go fix - verifica el parche en la compilación), chi (última versión - verifica en la compilación), gin (última versión - verifica en la compilación), echo (última versión - verifica en la compilación), google.golang.org/grpc (última versión - verifica en la compilación), sigs.k8s.io/controller-runtime (última versión - verifica en la compilación), kubebuilder (última versión - verifica en la compilación), tinygo (última versión - verifica los objetivos de la placa en la compilación), wazero (última versión - verifica en la compilación), y golangci-lint (última versión - verifica el conjunto de linters en la compilación).
Revisado por Chris St. John·Última actualización: 16 jul 2026