diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml new file mode 100644 index 0000000..558a89c --- /dev/null +++ b/.forgejo/workflows/release.yml @@ -0,0 +1,78 @@ +# Release automation for git.comunes.org (Forgejo Actions). +# +# Password-free: pushing a tag `v*` builds a signed AAB/APK and uploads it to +# Google Play's internal track via fastlane. All credentials come from repo +# secrets (Settings > Actions > Secrets), never typed: +# TANE_KEYSTORE_BASE64 base64 of the dedicated tane-upload.jks +# TANE_KEYSTORE_PASSWORD store password +# TANE_KEY_ALIAS tane-upload +# TANE_KEY_PASSWORD key password +# SUPPLY_JSON_KEY_DATA Google Play service-account JSON (reused from Ğ1nkgo) +# +# Build + deploy live in ONE job so the AAB never has to cross a job boundary. +# NOTE: `runs-on` must match a label your Forgejo runner registered with; adjust +# if the Comunes runner uses something other than `docker`. + +name: release + +on: + push: + tags: + - 'v*' + +jobs: + android: + runs-on: docker + container: + image: ghcr.io/cirruslabs/flutter:3.41.9 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Generate code (i18n + Drift) + working-directory: apps/app_seeds + run: | + flutter pub get + dart run slang + dart run build_runner build --delete-conflicting-outputs + + - name: Materialize signing material from secrets + working-directory: apps/app_seeds + env: + TANE_KEYSTORE_BASE64: ${{ secrets.TANE_KEYSTORE_BASE64 }} + TANE_KEYSTORE_PASSWORD: ${{ secrets.TANE_KEYSTORE_PASSWORD }} + TANE_KEY_ALIAS: ${{ secrets.TANE_KEY_ALIAS }} + TANE_KEY_PASSWORD: ${{ secrets.TANE_KEY_PASSWORD }} + run: | + echo "$TANE_KEYSTORE_BASE64" | base64 -d > "$GITHUB_WORKSPACE/tane-upload.jks" + cat > android/key.properties < CI/CD > Variables), set once: -# TANE_KEYSTORE_BASE64 base64 of the dedicated Tane upload keystore (.jks) -# TANE_KEYSTORE_PASSWORD store password -# TANE_KEY_ALIAS key alias (tane-upload) -# TANE_KEY_PASSWORD key password -# SUPPLY_JSON_KEY_DATA Google Play service-account JSON (raw file contents) -# Tag a commit (e.g. `git tag v0.1.0 && git push --tags`) to build + publish. -# --------------------------------------------------------------------------- - -# Build the signed release artifacts (AAB for Play, APK for sideload/QA). -build:android: - stage: build - rules: - - if: '$CI_COMMIT_TAG' - script: - - cd apps/app_seeds - - dart run slang - - dart run build_runner build --delete-conflicting-outputs - # Materialize the signing material from CI secrets (never in the repo). - - echo "$TANE_KEYSTORE_BASE64" | base64 -d > "$CI_PROJECT_DIR/tane-upload.jks" - - | - cat > android/key.properties <