From 118e4e5a867a42c0d79efcc3b2a4db188affedec Mon Sep 17 00:00:00 2001 From: "Max P." Date: Thu, 22 May 2025 10:20:07 +0200 Subject: [PATCH] feat(workflows): add matrix build and SHA256 generation for releases - Introduce matrix strategy for building and uploading binaries for multiple architectures (amd64, arm64). - Generate SHA256 checksum files for release binaries. - Upload both binaries and their corresponding SHA256 files as release assets for better integrity verification. --- .gitea/workflows/upload-assets.yml | 49 ++++++++++++++---------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/.gitea/workflows/upload-assets.yml b/.gitea/workflows/upload-assets.yml index b887b97..456a424 100644 --- a/.gitea/workflows/upload-assets.yml +++ b/.gitea/workflows/upload-assets.yml @@ -1,38 +1,27 @@ -# ======================== -# 📦 Upload Assets Template -# ======================== -# Dieser Workflow wird automatisch ausgelöst, wenn ein Release -# in Gitea veröffentlicht wurde (event: release.published). -# -# Er dient dem Zweck, Release-Artefakte (wie z. B. Binary-Dateien, -# Changelogs oder Build-Zips) nachträglich mit dem Release zu verknüpfen. -# -# Voraussetzung: Zwei Shell-Skripte liegen im Projekt: -# - .gitea/scripts/get-release-id.sh → ermittelt Release-ID per Tag -# - .gitea/scripts/upload-asset.sh → lädt Datei als Release-Asset hoch -# -# -------------------------------------- - name: Upload Assets on: release: - types: [published] # Nur bei Veröffentlichung eines Releases (nicht bei Entwürfen) + types: [published] jobs: upload-assets: runs-on: ubuntu-latest + strategy: + matrix: + include: + - target: linux + arch: amd64 + - target: linux + arch: arm64 + steps: - # 📥 Checke den Stand des Repos aus, exakt auf dem veröffentlichten Tag - # So ist garantiert, dass die Artefakte dem Zustand des Releases entsprechen. - uses: actions/checkout@v4 with: - ref: ${{ github.event.release.tag_name }} # z. B. "v1.2.3" - fetch-depth: 0 # vollständige Git-Historie (für z. B. git-cliff, logs etc.) + ref: ${{ github.event.release.tag_name }} + fetch-depth: 0 - # 🆔 Hole die Release-ID basierend auf dem Tag - # Die ID wird als Umgebungsvariable RELEASE_ID über $GITHUB_ENV verfügbar gemacht. - name: Get Release ID from tag run: .gitea/scripts/get-release-id.sh "${{ github.event.release.tag_name }}" @@ -40,8 +29,16 @@ jobs: with: deno-version: v2.x - - name: Build application - run: deno task build + - name: Build ${{ matrix.target }}-${{ matrix.arch }} + run: deno task build:${{ matrix.arch }} - - name: Upload CHANGELOG.md as RELEASE-NOTES.md - run: .gitea/scripts/upload-asset.sh ./dist/systemd-timer systemd-timer + - name: Generate SHA256 for ${{ matrix.target }}-${{ matrix.arch }} + run: | + FILE="./dist/systemd-timer-${{ matrix.target }}-${{ matrix.arch }}" + sha256sum "$FILE" > "$FILE.sha256" + + - name: Upload binary for ${{ matrix.target }}-${{ matrix.arch }} + run: .gitea/scripts/upload-asset.sh ./dist/systemd-timer-${{ matrix.target }}-${{ matrix.arch }} systemd-timer-${{ matrix.target }}-${{ matrix.arch }} + + - name: Upload SHA256 for ${{ matrix.target }}-${{ matrix.arch }} + run: .gitea/scripts/upload-asset.sh ./dist/systemd-timer-${{ matrix.target }}-${{ matrix.arch }}.sha256 systemd-timer-${{ matrix.target }}-${{ matrix.arch }}.sha256