name: Release on tag on: push: tags: - v* jobs: build: name: Build and release artifacts. runs-on: ubuntu-latest steps: - name: Harden Runner uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit - uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 # v4.2.2 with: distribution: 'zulu' java-version: '17' - name: Clone the repository. uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Get packages for the Flutter project. run: scripts/pub_get_all.sh - name: Update the flutter version file. run: scripts/update_flutter_version.sh - name: Static analysis. run: ./flutterw analyze - name: Unit tests. run: ./flutterw test - 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 --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: Create a release with the APK and App Bundle. uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5 # v1.14.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@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 with: name: appbundle path: outputs/app-play-release.aab release: name: Create beta release on Play Store. needs: [ build ] runs-on: ubuntu-latest steps: - name: Harden Runner uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 with: egress-policy: audit - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Get appbundle from artifacts. uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: name: appbundle - name: Release app 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