124 lines
4.8 KiB
YAML
124 lines
4.8 KiB
YAML
name: Release on tag
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- v*
|
|
|
|
# Declare default permissions as read only.
|
|
permissions: read-all
|
|
|
|
jobs:
|
|
release_github:
|
|
name: GitHub release
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
attestations: write
|
|
contents: write
|
|
id-token: write
|
|
steps:
|
|
- name: Harden Runner
|
|
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
|
|
with:
|
|
egress-policy: audit
|
|
|
|
# Building relies on the Android Gradle plugin,
|
|
# which requires a modern Java version (not the default one).
|
|
- name: Set up JDK for Android Gradle plugin
|
|
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: '21'
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
|
|
- name: Get Flutter packages
|
|
run: ./flutterw pub get
|
|
|
|
- name: Generate app localizations
|
|
run: ./flutterw gen-l10n
|
|
|
|
- name: Update Flutter version file
|
|
run: scripts/update_flutter_version.sh
|
|
|
|
- name: Build signed artifacts
|
|
# `KEY_JKS` should contain the result of:
|
|
# gpg -c --armor keystore.jks
|
|
# `KEY_JKS_PASSPHRASE` should contain the passphrase used for the command above
|
|
# The SkSL bundle must be produced with the same Flutter engine as the one used to build the artifact
|
|
# flutter build <subcommand> --bundle-sksl-path shaders.sksl.json
|
|
# do not bundle shaders for izzy/libre flavours, to avoid crashes in some environments:
|
|
# cf https://github.com/deckerst/aves/issues/388
|
|
# cf https://github.com/deckerst/aves/issues/398
|
|
run: |
|
|
echo "${{ secrets.KEY_JKS }}" > release.keystore.asc
|
|
gpg -d --passphrase "${{ secrets.KEY_JKS_PASSPHRASE }}" --batch release.keystore.asc > $AVES_STORE_FILE
|
|
rm release.keystore.asc
|
|
mkdir outputs
|
|
scripts/apply_flavor_play.sh
|
|
./flutterw build appbundle -t lib/main_play.dart --flavor play --bundle-sksl-path shaders.sksl.json
|
|
cp build/app/outputs/bundle/playRelease/*.aab outputs
|
|
./flutterw build apk -t lib/main_play.dart --flavor play --bundle-sksl-path shaders.sksl.json
|
|
cp build/app/outputs/apk/play/release/*.apk outputs
|
|
scripts/apply_flavor_izzy.sh
|
|
./flutterw build apk -t lib/main_izzy.dart --flavor izzy --split-per-abi
|
|
cp build/app/outputs/apk/izzy/release/*.apk outputs
|
|
scripts/apply_flavor_libre.sh
|
|
./flutterw build appbundle -t lib/main_libre.dart --flavor libre
|
|
cp build/app/outputs/bundle/libreRelease/*.aab outputs
|
|
./flutterw build apk -t lib/main_libre.dart --flavor libre --split-per-abi
|
|
cp build/app/outputs/apk/libre/release/*.apk outputs
|
|
rm $AVES_STORE_FILE
|
|
env:
|
|
AVES_STORE_FILE: ${{ github.workspace }}/key.jks
|
|
AVES_STORE_PASSWORD: ${{ secrets.AVES_STORE_PASSWORD }}
|
|
AVES_KEY_ALIAS: ${{ secrets.AVES_KEY_ALIAS }}
|
|
AVES_KEY_PASSWORD: ${{ secrets.AVES_KEY_PASSWORD }}
|
|
AVES_GOOGLE_API_KEY: ${{ secrets.AVES_GOOGLE_API_KEY }}
|
|
|
|
- name: Generate artifact attestation
|
|
uses: actions/attest-build-provenance@db473fddc028af60658334401dc6fa3ffd8669fd # v2.3.0
|
|
with:
|
|
subject-path: 'outputs/*'
|
|
|
|
- name: Create GitHub release
|
|
uses: ncipollo/release-action@440c8c1cb0ed28b9f43e4d1d670870f059653174 # v1.16.0
|
|
with:
|
|
artifacts: "outputs/*"
|
|
body: "[Changelog](https://github.com/${{ github.repository }}/blob/develop/CHANGELOG.md#${{ github.ref_name }})"
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Upload app bundle
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
with:
|
|
name: appbundle
|
|
path: outputs/app-play-release.aab
|
|
|
|
release_play:
|
|
name: Play Store beta release
|
|
needs: [ release_github ]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Harden Runner
|
|
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
|
|
with:
|
|
egress-policy: audit
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
|
|
- name: Get appbundle from artifacts
|
|
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
|
|
with:
|
|
name: appbundle
|
|
|
|
- name: Release to beta channel
|
|
uses: r0adkll/upload-google-play@935ef9c68bb393a8e6116b1575626a7f5be3a7fb # v1.1.3
|
|
with:
|
|
serviceAccountJsonPlainText: ${{ secrets.PLAYSTORE_ACCOUNT_KEY }}
|
|
packageName: deckers.thibault.aves
|
|
releaseFiles: app-play-release.aab
|
|
track: beta
|
|
status: completed
|
|
whatsNewDirectory: whatsnew
|