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: | mkdir -p android/keystore echo "${{ secrets.KEYSTORE_B64 }}" | base64 -d > android/keystore/sylda.jks - name: Write signing.properties run: | cat > android/signing.properties << 'PROPS' KEYSTORE_PATH=keystore/sylda.jks KEYSTORE_PASSWORD=${{ secrets.KEYSTORE_PASS }} KEY_ALIAS=${{ secrets.KEY_ALIAS }} KEY_PASSWORD=${{ 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: Verify version consistency run: bash tools/check_versions.sh - 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"