feat: add CI/CD pipelines — firmware + Android build, automated release
This commit is contained in:
parent
3debc3b31d
commit
044629e6ef
2 changed files with 119 additions and 0 deletions
64
.forgejo/workflows/release.yml
Normal file
64
.forgejo/workflows/release.yml
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install PlatformIO
|
||||
run: pip install platformio
|
||||
|
||||
- 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/*
|
||||
Loading…
Reference in a new issue