diff --git a/.github/workflows/build_apk.yml b/.github/workflows/build_apk.yml index 89e431a..6caf335 100644 --- a/.github/workflows/build_apk.yml +++ b/.github/workflows/build_apk.yml @@ -64,6 +64,8 @@ env: BUILD_ARGS: --release --flavor ${{ inputs.flavor }} -t lib/main_${{ inputs.flavor }}.dart BUILD_APK_PATH: build/app/outputs/flutter-apk/app-${{ inputs.flavor }}-release.apk BUILD_AAB_PATH: build/app/outputs/bundle/${{ inputs.flavor }}Release/app-${{ inputs.flavor }}-release.aab + RELEASE_NOTES_ARTIFACT_NAME: release_notes_en_${{ inputs.version }} + RELEASE_NOTES_PATH: "assets/release_notes" jobs: build-android: @@ -109,6 +111,12 @@ jobs: - name: Increment build number & replace version number run: bash ./.github/scripts/increment_build_number.sh ${{ github.event.inputs.version }} + - name: Download release notes + uses: actions/download-artifact@v3 + with: + name: ${{ env.RELEASE_NOTES_ARTIFACT_NAME }} + path: ${{ env.RELEASE_NOTES_PATH }} + - name: Install Flutter uses: subosito/flutter-action@v2 with: diff --git a/.github/workflows/build_ipa.yml b/.github/workflows/build_ipa.yml index 602dd9e..88294ba 100644 --- a/.github/workflows/build_ipa.yml +++ b/.github/workflows/build_ipa.yml @@ -39,6 +39,8 @@ on: env: FLAVOR: "prod" + RELEASE_NOTES_ARTIFACT_NAME: release_notes_en_${{ inputs.version }} + RELEASE_NOTES_PATH: "assets/release_notes" jobs: build: @@ -104,6 +106,12 @@ jobs: - name: Increment build number & replace version number run: bash ./.github/scripts/increment_build_number.sh ${{ github.event.inputs.version }} + - name: Download release notes + uses: actions/download-artifact@v3 + with: + name: ${{ env.RELEASE_NOTES_ARTIFACT_NAME }} + path: ${{ env.RELEASE_NOTES_PATH }} + - name: Install Flutter uses: subosito/flutter-action@v2 with: diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index 0ada927..ae1ebdc 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -29,7 +29,9 @@ on: default: true env: - RELEASE_NOTES_FILE: release_notes_en_${{ inputs.version }} + RELEASE_NOTES_ARTIFACT_NAME: release_notes_en_${{ inputs.version }} + RELEASE_NOTES_FILE: release_notes_en_${{ inputs.version }}.md + RELEASE_NOTES_PATH: "assets/release_notes" jobs: run-integration-tests: @@ -38,9 +40,25 @@ jobs: uses: ./.github/workflows/run_integration_tests.yml secrets: inherit + generate-release-notes: + name: Generate release notes + needs: [run-integration-tests] + if: ${{ always() && !failure() && !cancelled() }} + runs-on: ubuntu-latest + steps: + - name: Generate release notes + run: | + echo ${{ inputs.release-notes }} > ${{ env.RELEASE_NOTES_FILE }} + perl -i -pe 's/\s{1}(-{1})/\n$1/g' ${{ env.RELEASE_NOTES_FILE }} + - name: Upload merged_native_libs.zip to artifacts + uses: actions/upload-artifact@v3 + with: + name: ${{ env.RELEASE_NOTES_ARTIFACT_NAME }} + path: ${{ env.RELEASE_NOTES_FILE }} + build-android: name: Build Android - needs: [run-integration-tests] + needs: [generate-release-notes] if: ${{ always() && !failure() && !cancelled() }} strategy: matrix: @@ -55,7 +73,7 @@ jobs: build-ios: name: Build iOS - needs: [run-integration-tests] + needs: [generate-release-notes] if: ${{ always() && !failure() && !cancelled() }} uses: ./.github/workflows/build_ipa.yml secrets: inherit @@ -63,24 +81,10 @@ jobs: stage-backend: false version: ${{ inputs.version }} - generate-release-notes: - name: Generate release notes - needs: [build-android, build-ios] - runs-on: ubuntu-latest - steps: - - name: Generate release notes - run: | - echo ${{ inputs.release-notes }} > ${{ env.RELEASE_NOTES_FILE }}.md - perl -i -pe 's/\s{1}(-{1})/\n$1/g' ${{ env.RELEASE_NOTES_FILE }}.md - - name: Upload merged_native_libs.zip to artifacts - uses: actions/upload-artifact@v3 - with: - name: ${{ env.RELEASE_NOTES_FILE }} - path: ${{ env.RELEASE_NOTES_FILE }}.md - create-github-release: name: Create Github release - needs: [generate-release-notes] + needs: [build-android, build-ios] + if: ${{ always() && !failure() && !cancelled() }} runs-on: ubuntu-latest permissions: contents: write @@ -95,10 +99,8 @@ jobs: - name: Download release notes uses: actions/download-artifact@v3 with: - name: ${{ env.RELEASE_NOTES_FILE }} - - - name: Move release notes to a folder - run: mv assets/release_notes/${{ env.RELEASE_NOTES_FILE }}.md ${{ env.RELEASE_NOTES_FILE }} + name: ${{ env.RELEASE_NOTES_ARTIFACT_NAME }} + path: ${{ env.RELEASE_NOTES_PATH }} - name: Commit changes run: | @@ -127,11 +129,12 @@ jobs: artifacts: "m3_lightmeter.apk" skipIfReleaseExists: true tag: "v${{ github.event.inputs.version }}" - bodyFile: "${{ env.RELEASE_NOTES_FILE }}.md" + bodyFile: "${{ env.RELEASE_NOTES_PATH }}/${{ env.RELEASE_NOTES_FILE }}" create-google-play-release: name: Create Google Play release - needs: [generate-release-notes] + needs: [build-android, build-ios] + if: ${{ always() && !failure() && !cancelled() }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -151,13 +154,13 @@ jobs: - name: Download release notes uses: actions/download-artifact@v3 with: - name: ${{ env.RELEASE_NOTES_FILE }} + name: ${{ env.RELEASE_NOTES_ARTIFACT_NAME }} - name: Move release notes to a folder run: | - mv assets/release_notes/${{ env.RELEASE_NOTES_FILE }}.md ${{ env.RELEASE_NOTES_FILE }} + mv ${{ env.RELEASE_NOTES_FILE }} whatsnew-en-US mkdir whatsnew - mv ${{ env.RELEASE_NOTES_FILE }} whatsnew + mv whatsnew-en-US whatsnew # https://unix.stackexchange.com/questions/13466/can-grep-output-only-specified-groupings-that-match' # https://stackoverflow.com/questions/74353311/github-workflow-unable-to-process-file-command-env-successfully @@ -182,7 +185,8 @@ jobs: upload-to-app-store: name: Upload to App Store - needs: [generate-release-notes] + needs: [build-android, build-ios] + if: ${{ always() && !failure() && !cancelled() }} runs-on: macos-13 steps: - uses: actions/checkout@v3 @@ -212,4 +216,4 @@ jobs: m3_lightmeter_apk m3_lightmeter_appbundle m3_lightmeter_ipa - ${{ env.RELEASE_NOTES_FILE }} + ${{ env.RELEASE_NOTES_ARTIFACT_NAME }}