From 17d0ff122165c9f243c573c5c017b1a66be0d9cd Mon Sep 17 00:00:00 2001 From: vjrj Date: Thu, 16 Jul 2026 03:05:33 +0200 Subject: [PATCH] fix(release): port store publishing to Forgejo Actions (canonical remote is Forgejo) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git.comunes.org runs Forgejo Actions, not GitLab CI, so the tag-triggered signed-AAB build + fastlane Play upload now lives in .forgejo/workflows/release.yml (single job, no cross-job artifact passing). Removed the equivalent GitLab jobs; .gitlab-ci.yml keeps only the analyze/test gate. Play service account is reused from Ğ1nkgo. docs/release.md updated (Forgejo secrets). --- .forgejo/workflows/release.yml | 78 ++++++++++++++++++++++++++++++++++ .gitlab-ci.yml | 63 ++------------------------- docs/release.md | 20 +++++---- 3 files changed, 92 insertions(+), 69 deletions(-) create mode 100644 .forgejo/workflows/release.yml 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 <