Files
todotxt2remind/.gitea/workflows/release.yml
Paolo Donadeo d692fa5a4c
All checks were successful
Release Binaries / build (amd64, golang:1.24-alpine, linux/amd64, linux-amd64, apk add --no-cache upx) (release) Successful in 35s
Release Binaries / build (arm64, golang:1.24-alpine, linux/arm64, linux-arm64, apk add --no-cache upx zstd-static) (release) Successful in 44s
ci: add Gitea release workflow for AMD64/ARM64 binaries
Builds the Go binary on dedicated amd64/arm64 runners via Docker and
uploads both artifacts to the Gitea release.
2026-07-09 23:33:46 +02:00

70 lines
2.0 KiB
YAML

name: Release Binaries
on:
release:
types: [published]
jobs:
build:
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- arch: amd64
platform: linux/amd64
image: golang:1.24-alpine
runner: linux-amd64
upx_install: "apk add --no-cache upx"
- arch: arm64
platform: linux/arm64
image: golang:1.24-alpine
runner: linux-arm64
upx_install: "apk add --no-cache upx zstd-static"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build (${{ matrix.arch }})
run: |
set -o pipefail
# Crea il container senza avviarlo
CID=$(docker create \
--platform ${{ matrix.platform }} \
-w /src \
${{ matrix.image }} \
sleep infinity)
# Copia i sorgenti dentro con docker cp (funziona anche in DinD)
docker cp "${{ github.workspace }}/." "$CID:/src"
# Avvia ed esegui la build
docker start "$CID"
docker exec "$CID" sh -c "
${{ matrix.upx_install }}
export CGO_ENABLED=0
go build -trimpath -ldflags='-s -w' -o /src/dist/todotxt2remind .
upx /src/dist/todotxt2remind
" 2>&1 | cat
# Copia il binario fuori
docker cp "$CID:/src/dist/todotxt2remind" \
"${{ github.workspace }}/todotxt2remind-linux-${{ matrix.arch }}"
docker rm -f "$CID"
- name: Carica artefatto sulla release
env:
TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_ID: ${{ github.event.release.id }}
run: |
FILENAME="todotxt2remind-linux-${{ matrix.arch }}"
curl -s -X POST \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/${RELEASE_ID}/assets?name=${FILENAME}" \
-H "Authorization: token ${TOKEN}" \
-H "Content-Type: application/octet-stream" \
--data-binary "@${FILENAME}"