Compare commits

...

5 commits

Author SHA1 Message Date
vodemn
6e3588a72e Version bump 2023-08-09 15:20:00 +00:00
Vadim
dafbc68288 Increased build job timeout 2023-08-09 17:06:47 +02:00
Vadim
bdb0442dd1 Fixed release jobs dependencies 2023-08-09 16:49:02 +02:00
Vadim
d41fa6fa84
ML-61 Download each artifact separately (#102)
* Download each artifact separately

* typo

* Updated setup-java action

* Extract merged native libs directly in GP release job
2023-08-09 16:39:41 +02:00
Vadim
b9412c7441
ML-61 Create Google Play release from Github actions (#101)
* Delete all artefacts after GP release

* Update create_release.yml

* Added release notes formatting

* Preserve release zip if GP release creation failed

* Create whatsnew folder
2023-08-09 12:24:12 +02:00
2 changed files with 77 additions and 34 deletions

View file

@ -3,6 +3,11 @@
# separate terms of service, privacy policy, and support # separate terms of service, privacy policy, and support
# documentation. # documentation.
# This workflow uses perl regex. For better syntaxis understading see these docs:
# https://perldoc.perl.org/perlrequick#Search-and-replace
# https://perldoc.perl.org/perlre#Other-Modifiers
name: Create new release name: Create new release
run-name: Release v${{ inputs.version }} run-name: Release v${{ inputs.version }}
@ -14,6 +19,10 @@ on:
description: "Version" description: "Version"
required: true required: true
type: string type: string
release-notes:
description: "Release notes"
required: true
type: string
env: env:
BUILD_ARGS: --release --flavor prod --dart-define cameraPreviewAspectRatio=240/320 -t lib/main_prod.dart BUILD_ARGS: --release --flavor prod --dart-define cameraPreviewAspectRatio=240/320 -t lib/main_prod.dart
@ -22,14 +31,13 @@ jobs:
build: build:
name: Build .apk & .aab name: Build .apk & .aab
runs-on: macos-11 runs-on: macos-11
timeout-minutes: 15 timeout-minutes: 30
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
submodules: recursive submodules: recursive
- uses: actions/setup-java@v2 - uses: actions/setup-java@v3
with: with:
distribution: "zulu" distribution: "zulu"
java-version: "11" java-version: "11"
@ -95,6 +103,21 @@ jobs:
name: m3_lightmeter_bundle name: m3_lightmeter_bundle
path: build/app/outputs/bundle/prodRelease/app-prod-release.aab path: build/app/outputs/bundle/prodRelease/app-prod-release.aab
generate-release-notes:
name: Generate release notes
runs-on: ubuntu-latest
steps:
- name: Generate release notes
run: |
echo ${{ inputs.release-notes }} > whatsnew-en-US.md
perl -i -pe 's/\s{1}(-{1})/\n$1/g' whatsnew-en-US.md
- name: Upload merged_native_libs.zip to artifacts
uses: actions/upload-artifact@v3
with:
name: whatsnew-en-US
path: whatsnew-en-US.md
update-version-in-repo: update-version-in-repo:
name: Update repo version name: Update repo version
needs: [build] needs: [build]
@ -121,18 +144,14 @@ jobs:
branch: ${{ github.ref_name }} branch: ${{ github.ref_name }}
unprotect_reviews: true unprotect_reviews: true
create-release: create-github-release:
name: Create Github release name: Create Github release
needs: [build, update-version-in-repo]
if: github.ref_name == 'main' if: github.ref_name == 'main'
needs: [build, generate-release-notes, update-version-in-repo]
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
contents: write contents: write
steps: steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Download apk - name: Download apk
uses: actions/download-artifact@v3 uses: actions/download-artifact@v3
with: with:
@ -141,26 +160,29 @@ jobs:
- name: Rename apk - name: Rename apk
run: mv app-prod-release.apk m3_lightmeter.apk run: mv app-prod-release.apk m3_lightmeter.apk
- name: Download release notes
uses: actions/download-artifact@v3
with:
name: whatsnew-en-US
- uses: ncipollo/release-action@v1.12.0 - uses: ncipollo/release-action@v1.12.0
with: with:
artifacts: "m3_lightmeter.apk" artifacts: "m3_lightmeter.apk"
skipIfReleaseExists: true skipIfReleaseExists: true
tag: "v${{ github.event.inputs.version }}" tag: "v${{ github.event.inputs.version }}"
bodyFile: "whatsnew-en-US.md"
- name: Delete no longer used apk artifact - name: Delete apk artifact
uses: geekyeggo/delete-artifact@v2 uses: geekyeggo/delete-artifact@v2
with: with:
name: m3_lightmeter_apk name: m3_lightmeter_apk
extract-merged-native-libs: create-google-play-release:
name: Extract merged native libraries name: Create Google Play release
needs: [build] if: github.ref_name == 'main'
needs: [build, generate-release-notes]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Download app bundle - name: Download app bundle
uses: actions/download-artifact@v3 uses: actions/download-artifact@v3
with: with:
@ -171,33 +193,54 @@ jobs:
unzip app-prod-release.aab unzip app-prod-release.aab
(cd base/lib && zip -r "$OLDPWD/merged_native_libs.zip" .) (cd base/lib && zip -r "$OLDPWD/merged_native_libs.zip" .)
- name: Download release notes
uses: actions/download-artifact@v3
with:
name: whatsnew-en-US
- name: Move release notes to a folder
run: |
mkdir whatsnew
mv whatsnew-en-US.md whatsnew
- name: Create Google Play release
id: create-google-play-release-step
uses: r0adkll/upload-google-play@v1.1.1
with:
serviceAccountJsonPlainText: ${{ secrets.GH_ACTIONS_SERVICE_ACCOUNT_JSON }}
packageName: com.vodemn.lightmeter
releaseFiles: app-prod-release.aab
track: production
status: draft
userFraction: 1.0
debugSymbols: merged_native_libs.zip
whatsNewDirectory: whatsnew
# https://docs.github.com/en/actions/learn-github-actions/expressions#failure-with-conditions
- name: Zip app bundle and merged_native_libs - name: Zip app bundle and merged_native_libs
if: ${{ failure() && steps.create-google-play-release-step.conclusion == 'failure' }}
run: zip m3_lightmeter_release.zip app-prod-release.aab merged_native_libs.zip run: zip m3_lightmeter_release.zip app-prod-release.aab merged_native_libs.zip
- name: Upload merged_native_libs.zip to artifacts - name: Upload release zip to artifacts
if: ${{ failure() && steps.create-google-play-release-step.conclusion == 'failure' }}
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: m3_lightmeter_release name: m3_lightmeter_release
path: m3_lightmeter_release.zip path: m3_lightmeter_release.zip
# TODO: this should be moved to `create-google-play-release` step when it is implemented - name: Delete app bundle & merged native libs artifacts
- name: Delete no longer used app bundle artifact if: ${{ always() }}
uses: geekyeggo/delete-artifact@v2 uses: geekyeggo/delete-artifact@v2
with: with:
name: m3_lightmeter_bundle name: m3_lightmeter_bundle
# TODO: Automate Google Play releases creation cleanup:
create-google-play-release: name: Cleanup
if: false if: ${{ always() }}
name: Create Google Play release needs: [create-github-release, create-google-play-release]
needs: [build, extract-merged-native-libs]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - name: Delete release notes artifact
uses: geekyeggo/delete-artifact@v2
with: with:
submodules: recursive name: whatsnew-en-US
- name: Download app bundle
uses: actions/download-artifact@v3
with:
name: m3_lightmeter_bundle

View file

@ -1,7 +1,7 @@
name: lightmeter name: lightmeter
description: A new Flutter project. description: A new Flutter project.
publish_to: "none" publish_to: "none"
version: 0.13.0+36 version: 0.13.1+37
environment: environment:
sdk: ">=3.0.0 <4.0.0" sdk: ">=3.0.0 <4.0.0"