name: Bump App Version on: workflow_dispatch: inputs: type: description: 'Bump type' required: true default: 'patch' type: choice options: - patch - minor - major releaseNote: description: 'Release Note' required: true type: string jobs: bump: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: 🏗 Bump App Version id: bump-app-version run: | newVersion=$(bash ./scripts/versionBump.sh $TYPE "$RELEASE_NOTES") echo "::newVersion::$newVersion" echo "newVersion=$newVersion" >> "$GITHUB_OUTPUT" env: TYPE: ${{ inputs.type }} RELEASE_NOTES: ${{ inputs.releaseNote }} - name: Git Add and Commit run: | git config --global user.name 'Yogesh Choudhary Paliyal' git config --global user.email 'yogeshpaliyal@users.noreply.github.com' git add . git commit -am "Github Actions: App version Bumped to ${{ steps.bump-app-version.outputs.newVersion }}" - name: Print newVersion run: echo "${{ steps.bump-app-version.outputs.newVersion }}" - name: Build Free Release AAB id: buildFreeRelease run: ./gradlew bundleFreeRelease - name: Build Pro Release AAB id: buildProRelease run: ./gradlew bundleProRelease - name: Sign Free AAB id: signPro uses: r0adkll/sign-android-release@fix/bundle-signing with: releaseDirectory: app/build/outputs/bundle/freeRelease signingKeyBase64: ${{ secrets.SIGNING_KEY_WITH_PRO }} alias: ${{ secrets.ALIAS }} keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} keyPassword: ${{ secrets.KEY_PASSWORD }} - name: Sign Pro AAB id: sign uses: r0adkll/sign-android-release@fix/bundle-signing with: releaseDirectory: app/build/outputs/bundle/proRelease signingKeyBase64: ${{ secrets.SIGNING_KEY_WITH_PRO }} alias: pro keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} keyPassword: ${{ secrets.KEY_PASSWORD }} - name: Push to protected branch uses: CasperWA/push-protected@v2 with: token: ${{ secrets.PUSH_TO_PROTECTED_BRANCH }} branch: master unprotect_reviews: true - name: Git push tag run: | git tag -a ${{ steps.bump-app-version.outputs.newVersion }} -m "Release version ${{ steps.bump-app-version.outputs.newVersion }}" git push origin ${{ steps.bump-app-version.outputs.newVersion }} - name: Rename aab names run: | mkdir -p app/build/outputs/bundle/release mv app/build/outputs/bundle/freeRelease/app-free-release.aab app/build/outputs/bundle/release/keypass-free-${{steps.bump-app-version.outputs.newVersion}}.aab mv app/build/outputs/bundle/proRelease/app-pro-release.aab app/build/outputs/bundle/release/keypass-pro-${{steps.bump-app-version.outputs.newVersion}}.aab - name: Create Release uses: ncipollo/release-action@v1.16.0 with: tag: "${{ steps.bump-app-version.outputs.newVersion }}" generateReleaseNotes: true commit: "master" artifacts: "app/build/outputs/bundle/release/*.aab" discussionCategory: "Release feedbacks" makeLatest: true - uses: snnaplab/universal-apk-generate-action@v1 id: apk-free-generate with: aab-path: 'app/build/outputs/bundle/release/keypass-free-${{steps.bump-app-version.outputs.newVersion}}.aab' keystore-base64: ${{ secrets.SIGNING_KEY_WITH_PRO }} keystore-password: ${{ secrets.KEY_STORE_PASSWORD }} key-alias: ${{ secrets.ALIAS }} key-password: ${{ secrets.KEY_PASSWORD }} - name: Upload free binaries to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: ${{ steps.apk-free-generate.outputs.apk-path }} asset_name: 'keypass-free-${{steps.bump-app-version.outputs.newVersion}}.apk' tag: ${{ steps.bump-app-version.outputs.newVersion }} overwrite: true - name: Remove universal directory run: rm -r /home/runner/work/snnaplab-universal-apk-generate-action - uses: snnaplab/universal-apk-generate-action@v1 id: apk-pro-generate with: aab-path: 'app/build/outputs/bundle/release/keypass-pro-${{steps.bump-app-version.outputs.newVersion}}.aab' keystore-base64: ${{ secrets.SIGNING_KEY_WITH_PRO }} keystore-password: ${{ secrets.KEY_STORE_PASSWORD }} key-alias: pro key-password: ${{ secrets.KEY_PASSWORD }} - name: Upload pro binaries to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: ${{ steps.apk-pro-generate.outputs.apk-path }} tag: ${{ steps.bump-app-version.outputs.newVersion }} asset_name: 'keypass-pro-${{ steps.bump-app-version.outputs.newVersion }}.apk' overwrite: true