diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index c706306..33f6903 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -3,11 +3,15 @@ name: Release on: push: tags: - - 'v*' # Se activa solo con tags como v1.0.0, v2.1.3, etc. + - 'v*' jobs: build: runs-on: ubuntu-latest + # ← cada job corre dentro de esta imagen + container: + image: golang:1.22-alpine + strategy: matrix: include: @@ -28,16 +32,11 @@ jobs: suffix: "" steps: + - name: Checkout uses: actions/checkout@v4 with: - fetch-depth: 0 # necesario para git describe - - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: '1.22' - cache: true + fetch-depth: 0 - name: Compilar env: @@ -45,23 +44,22 @@ jobs: GOARCH: ${{ matrix.goarch }} CGO_ENABLED: 0 run: | - # Nombre del binario: app-linux-amd64, app-windows-amd64.exe, etc. BINARY_NAME="app-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.suffix }}" - + mkdir -p dist + go build \ -ldflags="-w -s \ -X main.version=${{ gitea.ref_name }} \ - -X main.commit=${{ gitea.sha }} \ - -X main.buildDate=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \ + -X main.commit=${{ gitea.sha }}" \ -o "dist/${BINARY_NAME}" \ ./cmd/main.go - - name: Comprimir artefacto + - name: Comprimir run: | cd dist BINARY_NAME="app-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.suffix }}" - if [ "${{ matrix.goos }}" = "windows" ]; then + apk add --no-cache zip zip "${BINARY_NAME%.exe}.zip" "${BINARY_NAME}" else tar -czf "${BINARY_NAME}.tar.gz" "${BINARY_NAME}" @@ -76,45 +74,43 @@ jobs: release: runs-on: ubuntu-latest - needs: build # espera que todos los builds terminen + needs: build + container: + image: alpine:3.19 steps: + - name: Instalar dependencias + run: apk add --no-cache git + - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Descargar todos los artefactos + - name: Descargar artefactos uses: actions/download-artifact@v4 with: path: dist/ merge-multiple: true - - name: Generar changelog desde commits - id: changelog + - name: Generar changelog run: | - # Obtener tag anterior PREV_TAG=$(git tag --sort=-version:refname | sed -n '2p') - if [ -z "$PREV_TAG" ]; then - CHANGES=$(git log --pretty=format:"- %s (%h)" | head -20) + git log --pretty=format:"- %s (%h)" | head -20 > changelog.txt else - CHANGES=$(git log "${PREV_TAG}..${{ gitea.ref_name }}" \ - --pretty=format:"- %s (%h)") + git log "${PREV_TAG}..${{ gitea.ref_name }}" \ + --pretty=format:"- %s (%h)" > changelog.txt fi - - # Guardar en archivo para el siguiente paso - echo "${CHANGES}" > changelog.txt - echo "prev_tag=${PREV_TAG}" >> $GITEA_OUTPUT + cat changelog.txt - name: Crear checksums run: | cd dist - sha256sum *.tar.gz *.zip 2>/dev/null > checksums.txt || \ - sha256sum *.tar.gz > checksums.txt + sha256sum * > checksums.txt cat checksums.txt - - name: Crear Release en Gitea + - name: Crear Release uses: https://gitea.com/actions/gitea-release-action@v1 with: token: ${{ secrets.RELEASE_TOKEN }} @@ -123,5 +119,4 @@ jobs: body_path: changelog.txt files: | dist/*.tar.gz - dist/*.zip dist/checksums.txt \ No newline at end of file