Skip to content

Performance: Ein-Pass-Analyse + Timeout + Parallelitaet (v1.0.1) #13

Performance: Ein-Pass-Analyse + Timeout + Parallelitaet (v1.0.1)

Performance: Ein-Pass-Analyse + Timeout + Parallelitaet (v1.0.1) #13

Workflow file for this run

# Builds a signed release APK and attaches it to the GitHub release
# whenever a version tag (v*) is pushed.
#
# Required repository secrets:
# SIGNING_KEYSTORE_BASE64 – base64 of signing/thor-release.jks
# SIGNING_STORE_PASSWORD – keystore password
# SIGNING_KEY_ALIAS – key alias (thor)
# SIGNING_KEY_PASSWORD – key password
name: Release
on:
push:
tags:
- "v*"
workflow_dispatch:
inputs:
tag:
description: "Release tag to build, e.g. v0.4.0"
required: true
type: string
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
env:
RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ env.RELEASE_TAG }}
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
- uses: gradle/actions/setup-gradle@v4
# Skip the whole signed build gracefully while the signing secrets
# are not configured yet (manual releases are used instead).
- name: Check signing secrets
id: signing
run: echo "available=${{ secrets.SIGNING_KEYSTORE_BASE64 != '' }}" >> "$GITHUB_OUTPUT"
- name: Decode keystore
if: steps.signing.outputs.available == 'true'
run: |
mkdir -p signing
echo "$SIGNING_KEYSTORE_BASE64" | base64 -d > signing/thor-release.jks
env:
SIGNING_KEYSTORE_BASE64: ${{ secrets.SIGNING_KEYSTORE_BASE64 }}
- name: Run unit tests
run: ./gradlew testDebugUnitTest
- name: Build signed release APK
if: steps.signing.outputs.available == 'true'
run: ./gradlew assembleRelease
env:
SIGNING_STORE_FILE: thor-release.jks
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
- name: Rename APK
if: steps.signing.outputs.available == 'true'
run: |
cp app/build/outputs/apk/release/app-release.apk \
ThorRomButler-${{ env.RELEASE_TAG }}.apk
- name: Create GitHub release
if: steps.signing.outputs.available == 'true'
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.RELEASE_TAG }}
files: ThorRomButler-${{ env.RELEASE_TAG }}.apk
generate_release_notes: true