diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..d1c1c65 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,74 @@ +name: Release + +on: + workflow_dispatch: + push: + tags: + - '**' + +jobs: + ci: + name: Release Build + runs-on: ubuntu-latest + steps: + - name: Checking out branch + uses: actions/checkout@v4 + + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: 17 + + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + + # This will decode the keystore from base 64 text representation that we have stored in secrets + # and generates and keystore file and gets stored in /android-app path + - name: Decode Keystore + env: + ENCODED_STRING: ${{ secrets.KEYSTORE_BASE_64 }} + RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }} + RELEASE_KEYSTORE_ALIAS: ${{ secrets.RELEASE_KEYSTORE_ALIAS }} + RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }} + + run: | + echo $ENCODED_STRING > keystore-b64.txt + mkdir -p keystore + base64 -d keystore-b64.txt > keystore/keystore.jks + + - name: Ensure gradlew execute flags + run: | + chmod +x ./gradlew + + - name: Build Release apk + env: + RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }} + RELEASE_KEYSTORE_ALIAS: ${{ secrets.RELEASE_KEYSTORE_ALIAS }} + RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }} + run: ./gradlew assembleRelease --stacktrace + + - name: Build Release bundle + env: + RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }} + RELEASE_KEYSTORE_ALIAS: ${{ secrets.RELEASE_KEYSTORE_ALIAS }} + RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }} + run: ./gradlew bundleRelease --stacktrace + + - name: Get release file aab path + id: releaseAab + run: echo "aabfile=$(find app/build/outputs/bundle/release/*.aab)" >> $GITHUB_OUTPUT + + - name: Get release file apk path + id: releaseApk + run: echo "apkfile=$(find app/build/outputs/apk/release/*.apk)" >> $GITHUB_OUTPUT + + - name: Create Draft Release + uses: softprops/action-gh-release@v2 + with: + files: | + ${{ steps.releaseApk.outputs.apkfile }} + ${{ steps.releaseAab.outputs.aabfile }} + draft: true + prerelease: true + generate_release_notes: true \ No newline at end of file