prism-android/.github/workflows/release.yml

81 lines
2.5 KiB
YAML

name: Release
on:
workflow_dispatch:
inputs:
tag:
description: 'Release tag (example: v0.1.0)'
required: true
type: string
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v6
with:
ref: ${{ inputs.tag }}
fetch-depth: 0
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: '21'
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Verify tag matches VERSION
run: |
expected="v$(cat VERSION)"
if [ "$expected" != "${{ inputs.tag }}" ]; then
echo "Tag ${{ inputs.tag }} does not match VERSION ($expected)"
exit 1
fi
- name: Decode signing keystore
run: |
echo "${{ secrets.ANDROID_SIGNING_KEYSTORE_B64 }}" | tr -d '[:space:]' | base64 -d > "$RUNNER_TEMP/release.keystore"
- name: Build signed release artifacts
env:
ANDROID_SIGNING_STORE_FILE: ${{ runner.temp }}/release.keystore
ANDROID_SIGNING_STORE_PASSWORD: ${{ secrets.ANDROID_SIGNING_STORE_PASSWORD }}
ANDROID_SIGNING_KEY_ALIAS: ${{ secrets.ANDROID_SIGNING_KEY_ALIAS }}
ANDROID_SIGNING_KEY_PASSWORD: ${{ secrets.ANDROID_SIGNING_KEY_PASSWORD }}
run: ./gradlew assembleRelease --stacktrace
- name: Rename artifacts
run: |
mv app/build/outputs/apk/release/app-release.apk prism.apk
- name: Upload release artifacts
uses: actions/upload-artifact@v6
with:
name: prism-release-artifacts
path: |
prism.apk
- name: Resolve changelog path
id: changelog
run: |
VERSION=$(cat VERSION)
MAJOR=$(echo $VERSION | cut -d. -f1)
MINOR=$(echo $VERSION | cut -d. -f2)
PATCH=$(echo $VERSION | cut -d. -f3)
VCODE=$(( MAJOR * 10000 + MINOR * 100 + PATCH ))
echo "path=fastlane/metadata/android/en-US/changelogs/${VCODE}.txt" >> $GITHUB_OUTPUT
- name: Upload to release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ inputs.tag }}
name: Prism ${{ inputs.tag }}
body_path: ${{ steps.changelog.outputs.path }}
files: |
prism.apk
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}