Skip to content

Publish Release

Publish Release #53

Workflow file for this run

name: Publish Release
on:
release:
types: [published]
workflow_dispatch:
env:
JAVA_VERSION: 17
# https://github.com/android-actions/setup-android?tab=readme-ov-file#sdk-version-selection
CMDLINE_TOOLS_VERSION: 10406996 # 11.0
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: true
steps:
- name: Checkout 🛎️
uses: actions/checkout@v4
- name: Disable rustup auto-self-update
run: rustup set auto-self-update disable
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: ${{ env.JAVA_VERSION }}
- name: Setup Android SDK
uses: android-actions/setup-android@v3
with:
cmdline-tools-version: ${{ env.CMDLINE_TOOLS_VERSION }}
# Workaround: https://github.com/android-actions/setup-android/issues/461
- name: Access Android SDK build-tools
run: echo "$ANDROID_HOME/build-tools"/*/ | awk -F' ' '{ print $1 }' >> $GITHUB_PATH
- name: Build APKs
run: |
# Use the same build dir, this speeds up the build process
export REUSE_BUILD=1
./scripts/reproducible apk --release --split-per-abi
./scripts/reproducible apk --release
- name: Archive mappings
run: |
mv app/build/reproducible/mapping/{release,mapping}
tar -czvf mapping.tar.gz --directory=app/build/reproducible/mapping mapping
- name: Sign APKs
env:
KEYSTORE: ${{ secrets.KEYSTORE }}
KEYALIAS: ${{ secrets.KEYALIAS }}
KEYSTORE_PASS: ${{ secrets.KEYSTORE_PASS }}
KEYPASS: ${{ secrets.KEYPASS }}
run: |
echo "$KEYSTORE" | base64 -d - > keystore.p12
for name in armeabi-v7a-release arm64-v8a-release x86_64-release release; do
apksigner sign \
--ks ./keystore.p12 \
--ks-key-alias "$KEYALIAS" \
--ks-pass env:KEYSTORE_PASS \
--key-pass env:KEYPASS \
--v1-signing-enabled true \
--v2-signing-enabled true \
--v3-signing-enabled true \
--out "${name}.apk" \
"app/build/reproducible/flutter-apk/app-${name}.apk"
done
rm keystore.p12
- name: Upload Arifact armeabi-v7a
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: "armeabi-v7a-release.apk"
asset_name: stride-armeabi-v7a.apk
override: true
tag: ${{ github.ref }}
- name: Upload Arifact arm64-v8a
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: "arm64-v8a-release.apk"
asset_name: stride-arm64-v8a.apk
override: true
tag: ${{ github.ref }}
- name: Upload Arifact x86_64
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: "x86_64-release.apk"
asset_name: stride-x86_64.apk
override: true
tag: ${{ github.ref }}
- name: Upload Arifact Universal
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: "release.apk"
asset_name: stride.apk
override: true
tag: ${{ github.ref }}
- name: Upload Arifact Mapping
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: "mapping.tar.gz"
asset_name: mapping.tar.gz
override: true
tag: ${{ github.ref }}