Skip to content

Update version and publish APK #10

Update version and publish APK

Update version and publish APK #10

name: Update version and publish APK
on:
workflow_dispatch:
inputs:
version:
description: "Version number (must be in x.y.z format)"
required: true
release_type:
description: "Type of release (release or preview)"
required: true
default: "preview"
type: choice
options:
- release
- preview
jobs:
update_version_and_publish:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Get updated version name and version code
run: |
# Extract version name from github inputs
BASE_VERSION="${{ github.event.inputs.version }}"
BRANCH_NAME="release/v${BASE_VERSION}"
git fetch --all
if git rev-parse --verify origin/${BRANCH_NAME} >/dev/null 2>&1; then
echo "Branch ${BRANCH_NAME} exists, checking out..."
git checkout ${BRANCH_NAME}
else
echo "Branch ${BRANCH_NAME} does not exist, creating..."
git checkout -b ${BRANCH_NAME}
fi
CURRENT_RC=$(git tag -l "v${BASE_VERSION}-rc*" | sort | tail -n 1)
if [[ -z "$CURRENT_RC" ]]; then
RC_SUFFIX="-rc01"
else
SUFFIX_NUMBER=$(echo $CURRENT_RC | grep -oP '(?<=-rc)\d+')
NEXT_SUFFIX=$(printf "%02d" $((10#$SUFFIX_NUMBER + 1)))
RC_SUFFIX="-rc${NEXT_SUFFIX}"
fi
# Version name with rc suffix
if [[ "${{ github.event.inputs.release_type }}" == "preview" ]]; then
VERSION_NAME="${BASE_VERSION}${RC_SUFFIX}"
else
VERSION_NAME="${BASE_VERSION}"
fi
# Get existing version code from build.gradle
VERSION_CODE=$(grep "versionCode" app/build.gradle.kts | awk '{print $3}' | tr -d '\n')
# Increment existing version code by 1
VERSION_CODE=$((VERSION_CODE + 1))
# Set environment variable for later use
echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV
echo "VERSION_CODE=$VERSION_CODE" >> $GITHUB_ENV
- name: Update app/build.gradle.kts updated version name and version code
run: |
echo "Updating version code to ${{ env.VERSION_CODE }} and version name to ${{ env.VERSION_NAME }}"
sed -i "s/versionCode = [0-9]\+/versionCode = ${{ env.VERSION_CODE }}/g" app/build.gradle.kts
sed -i "s/versionName = \"[^\"]*\"/versionName = \"${{ env.VERSION_NAME }}\"/g" app/build.gradle.kts
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3.0
bundler-cache: true
- name: Set Up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
validate-wrappers: true
gradle-home-cache-cleanup: true
- name: Decode keystore file
uses: timheuer/base64-to-file@v1
id: keystore
with:
fileName: 'keystore.jks'
encodedString: ${{ secrets.KEYSTORE }}
- name: Decode Play API credentials file
uses: timheuer/base64-to-file@v1
id: play_api_credentials
with:
fileName: 'play-api-credentials.json'
encodedString: ${{ secrets.PLAY_API_CREDENTIALS }}
- name: Build app
run: bundle exec fastlane build
if: ${{ github.event.inputs.release_type == 'preview' }}
env:
KEYSTORE: ${{ steps.keystore.outputs.filePath }}
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
- name: Build app and publish
run: bundle exec fastlane build
if: ${{ github.event.inputs.release_type == 'release' }}
env:
KEYSTORE: ${{ steps.keystore.outputs.filePath }}
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
PLAY_API_CREDENTIALS: ${{ steps.play_api_credentials.outputs.filePath }}
- name: Rename Files
run: |
mv app/build/outputs/apk/release/app-arm64-v8a-release.apk app/build/outputs/apk/release/nextplayer-v${{ env.VERSION_NAME }}-arm64-v8a.apk
mv app/build/outputs/apk/release/app-armeabi-v7a-release.apk app/build/outputs/apk/release/nextplayer-v${{ env.VERSION_NAME }}-armeabi-v7a.apk
mv app/build/outputs/apk/release/app-universal-release.apk app/build/outputs/apk/release/nextplayer-v${{ env.VERSION_NAME }}-universal.apk
mv app/build/outputs/apk/release/app-x86-release.apk app/build/outputs/apk/release/nextplayer-v${{ env.VERSION_NAME }}-x86.apk
mv app/build/outputs/apk/release/app-x86_64-release.apk app/build/outputs/apk/release/nextplayer-v${{ env.VERSION_NAME }}-x86_64.apk
- name: Commit and Push Changes
run: |
git config user.name "GitHub Actions"
git config user.email "[email protected]"
git add .
git commit -m "Release version ${{ env.VERSION_NAME }}" || echo "No changes to commit"
git config push.autoSetupRemote true
git push --set-upstream origin ${BRANCH_NAME}
- name: Create Draft Release
id: create_draft_release
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: app/build/outputs/apk/release/nextplayer*
draft: true
name: v${{ env.VERSION_NAME }}
generate_release_notes: true
prerelease: ${{ github.event.inputs.release_type == 'preview' }}
tag_name: v${{ env.VERSION_NAME }}