Skip to content

Release

Release #11

Workflow file for this run

name: New Release
run-name: 'Release ${{ github.event.inputs.version_number }}'
on:
push:
branches: [ "main" ]
workflow_dispatch:
inputs:
version_number:
description: 'Version Number (e.g., 1.0.0)'
required: true
type: string
default: '1.x.x'
prerelease:
description: 'Mark as pre-release'
required: true
type: boolean
default: false
jobs:
build:
name: Build and Publish APK
runs-on: ubuntu-latest
if: |
startsWith(github.event.head_commit.message, 'release') ||
github.event_name == 'workflow_dispatch'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Setup signing keystore
run: |
echo "${{ secrets.KEYSTORE_FILE }}" | base64 -d > app/release-key.keystore
env:
KEYSTORE_FILE: ${{ secrets.KEYSTORE_FILE }}
- name: Extract version from commit message
id: version
run: |
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
# Manual trigger - use input version
VERSION_NUMBER="${{ github.event.inputs.version_number }}"
echo "version_number=$VERSION_NUMBER" >> $GITHUB_OUTPUT
echo "tag_name=v$VERSION_NUMBER" >> $GITHUB_OUTPUT
echo "apk_name=swingmusic.v$VERSION_NUMBER.apk" >> $GITHUB_OUTPUT
echo "prerelease=${{ github.event.inputs.prerelease }}" >> $GITHUB_OUTPUT
else
# Push trigger - extract from commit message
COMMIT_MSG="${{ github.event.head_commit.message }}"
if [[ $COMMIT_MSG =~ release[[:space:]]+v?([0-9]+\.[0-9]+\.[0-9]+) ]]; then
VERSION_NUMBER="${BASH_REMATCH[1]}"
else
echo "Error: No valid version number found in commit message: $COMMIT_MSG"
echo "Expected format: 'release v1.0.0' or 'release 1.0.0'"
exit 1
fi
echo "version_number=$VERSION_NUMBER" >> $GITHUB_OUTPUT
echo "tag_name=v$VERSION_NUMBER" >> $GITHUB_OUTPUT
echo "apk_name=swingmusic.v$VERSION_NUMBER.apk" >> $GITHUB_OUTPUT
echo "prerelease=true" >> $GITHUB_OUTPUT
fi
- name: Build signed APK
run: ./gradlew assembleRelease -PversionCode=${{ github.run_number }} -PversionName="${{ steps.version.outputs.version_number }}"
env:
KEYSTORE_FILE: release-key.keystore
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEYSTORE_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
- name: Rename APK
run: |
mv app/build/outputs/apk/release/app-release.apk "app/build/outputs/apk/release/${{ steps.version.outputs.apk_name }}"
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ steps.version.outputs.tag_name }}
name: ${{ steps.version.outputs.tag_name }}
draft: true
prerelease: ${{ steps.version.outputs.prerelease }}
files: app/build/outputs/apk/release/${{ steps.version.outputs.apk_name }}
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}