Project_SylDa/.forgejo/workflows/release.yml
eddy 2b7c2b8450 fix(release): replace missing forgejo-release action with direct Forgejo API calls
The forgejo-release@v1 action was never published to the Forgejo
packages registry, causing the release workflow to fail with a 404
when cloning the action. Replace it with curl calls to the Forgejo
API: POST /releases to create the release, then POST /assets for
each artifact file.
2026-08-03 14:23:20 +02:00

71 lines
2.4 KiB
YAML

name: Release
on:
push:
tags:
- 'v*'
workflow_dispatch:
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- name: Build firmware
run: pio run
- name: Copy firmware to Android assets
run: bash tools/copy_firmware.sh
- name: Decode keystore
run: echo "${{ secrets.KEYSTORE_B64 }}" | base64 -d > android/keystore/sylda.jks
- name: Write signing.properties
run: |
cat > android/signing.properties << 'PROPS'
storeFile=keystore/sylda.jks
storePassword=${{ secrets.KEYSTORE_PASS }}
keyAlias=${{ secrets.KEY_ALIAS }}
keyPassword=${{ secrets.KEY_PASS }}
PROPS
- name: Build release APK + AAB
working-directory: android
run: ./gradlew assembleRelease bundleRelease
env:
ANDROID_HOME: ${{ vars.ANDROID_HOME || '/home/linuxbrew/.linuxbrew/share/android-commandlinetools' }}
- name: Gather release artifacts
run: |
mkdir -p release/artifacts
cp android/app/build/outputs/apk/release/app-release.apk release/artifacts/
cp android/app/build/outputs/bundle/release/app-release.aab release/artifacts/
cp android/app/src/main/assets/firmware/*.bin release/artifacts/
cd release/artifacts
sha256sum * > checksums.txt
- name: Create Forgejo release
env:
FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }}
TAG: ${{ github.ref_name }}
run: |
API="https://git.eddydevink.nl/api/v1/repos/eddy/Project_SylDa/releases"
RELEASE=$(curl -s -X POST \
-H "Authorization: token $FORGEJO_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"tag_name\": \"$TAG\", \"name\": \"$TAG\"}" \
"$API")
RELEASE_ID=$(echo "$RELEASE" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo "Created release $TAG (id=$RELEASE_ID)"
for file in release/artifacts/*; do
name=$(basename "$file")
echo "Uploading $name..."
curl -s -X POST \
-H "Authorization: token $FORGEJO_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary "@$file" \
"$API/$RELEASE_ID/assets?name=$name" > /dev/null
done
echo "Release $TAG published with $(ls release/artifacts | wc -l) assets"