Ir al contenido

Compilación

  • Go 1.26.4 o posterior
  • Docker (para compilar imágenes Docker)
  • golangci-lint (para el linting)
Ventana de terminal
# Clona el repositorio
git clone https://github.com/jmrplens/cs-routeros-bouncer.git
cd cs-routeros-bouncer
# Compila
CGO_ENABLED=0 go build -o cs-routeros-bouncer ./cmd/cs-routeros-bouncer

Con información de versión:

Ventana de terminal
CGO_ENABLED=0 go build -ldflags "-X github.com/jmrplens/cs-routeros-bouncer/internal/config.Version=1.4.5 -X github.com/jmrplens/cs-routeros-bouncer/internal/config.Commit=$(git rev-parse --short HEAD) -X github.com/jmrplens/cs-routeros-bouncer/internal/config.BuildDate=$(date -u +%Y-%m-%dT%H:%M:%SZ) -X github.com/crowdsecurity/go-cs-lib/version.Version=1.4.5" \
-o cs-routeros-bouncer ./cmd/cs-routeros-bouncer
Ventana de terminal
# Ejecuta todas las pruebas
go test ./...
# Con salida detallada
go test -v ./...
# Con cobertura
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out

Ejecuta un paquete concreto:

Ventana de terminal
go test -v ./internal/config/...
go test -v ./internal/routeros/...
go test -v ./internal/metrics/...
Ventana de terminal
# Instala golangci-lint
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
# Ejecuta el linter
golangci-lint run
# Ejecuta con corrección automática
golangci-lint run --fix
# Go vet
go vet ./...

El proyecto usa .golangci.yml para la configuración del linter.

WorkflowDisparadorPropósito
ci.ymlPush, PREjecuta linting, pruebas, análisis de docs y comprobaciones de build
docs.ymlCambios en docs, ejecución manualCompila y despliega el sitio de documentación de Astro
release.ymlPush de etiquetaCompila binarios e imágenes Docker, crea la release de GitHub
  1. Actualiza la versión en el código

  2. Crea y sube una etiqueta de git

    Ventana de terminal
    git tag v1.4.5
    git push origin v1.4.5
  3. GitHub Actions automáticamente:

    • Compila binarios para linux/amd64, linux/arm64, linux/arm/v7
    • Compila y publica imágenes Docker (multiarquitectura)
    • Crea una release de GitHub con los binarios adjuntos
  1. Crea una rama de funcionalidad

    Ventana de terminal
    git checkout -b feat/my-feature
  2. Haz los cambios y pruébalos

    Ventana de terminal
    go test ./...
    golangci-lint run
  3. Haz commit con un mensaje convencional

    Ventana de terminal
    git commit -m "feat: add new feature"
  4. Haz push y crea un PR