name: Android Release on: push: tags: - 'v*' jobs: build: runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 - name: set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: gradle - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Create Keystore env: KEYSTORE_B64: ${{ secrets.KEYSTORE_BASE64 }} run: echo "$KEYSTORE_B64" | base64 -d > app/release-key.jks - name: Build Release APK env: RELEASE_STORE_FILE: release-key.jks RELEASE_STORE_PASSWORD: ${{ secrets.RELEASE_STORE_PASSWORD }} RELEASE_KEY_ALIAS: ${{ secrets.RELEASE_KEY_ALIAS }} RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }} run: ./gradlew assembleRelease - name: Rename APK run: | mv app/build/outputs/apk/release/app-release.apk app/build/outputs/apk/release/MonthlyPaymentApp-${{ github.ref_name }}.apk - name: Create Release uses: softprops/action-gh-release@v2 with: files: app/build/outputs/apk/release/MonthlyPaymentApp-${{ github.ref_name }}.apk env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Update update.json after release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | TAG_NAME="${{ github.ref_name }}" VERSION_NAME="${TAG_NAME#v}" VERSION_CODE=$(grep 'versionCode' app/build.gradle.kts | head -n 1 | awk '{print $3}') git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git fetch origin main git checkout main cat < update.json { "versionCode": ${VERSION_CODE}, "versionName": "${VERSION_NAME}", "url": "https://github.com/oqba26/MonthlyPaymentApp/releases/download/${TAG_NAME}/MonthlyPaymentApp-${TAG_NAME}.apk", "releaseNotes": "بهبودهای پایداری و عملکرد همگام‌سازی", "isForceUpdate": false } EOF git add update.json git commit -m "auto-update update.json for release ${TAG_NAME}" || true git push origin main