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 if: env.KEYSTORE_B64 != '' - 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 || '/opt/android-sdk' }} - 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: Upload release artifacts uses: actions/upload-artifact@v4 with: name: release path: release/artifacts/* - name: Create Forgejo release uses: https://git.eddydevink.nl/api/packages/eddy/actions/forgejo-release@v1 with: token: ${{ secrets.FORGEJO_TOKEN }} tag: ${{ github.ref_name }} title: ${{ github.ref_name }} files: release/artifacts/*