Skip to content

Publish Release

Publish Release #86

Workflow file for this run

name: Publish Release
on:
workflow_dispatch:
inputs:
version:
description: "App version"
required: true
type: string
prerelease:
description: "Is pre-release"
type: boolean
required: false
default: false
concurrency:
group: ${{ github.workflow }}-release
cancel-in-progress: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARGO_TERM_COLOR: always
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v7
with:
lfs: true
- name: Set up JDK 21
uses: actions/setup-java@v5.6.0
with:
java-version: "21"
distribution: "temurin"
cache: gradle
- name: Read versions from files
id: versions
run: |
echo "rust=$(cat app/src/main/rust/RUST_VERSION)" >> $GITHUB_OUTPUT
echo "ndk=$(cat app/src/main/rust/NDK_VERSION)" >> $GITHUB_OUTPUT
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ steps.versions.outputs.rust }}
targets: aarch64-linux-android, x86_64-linux-android
- uses: Swatinem/rust-cache@v2
with:
workspaces: "./app/src/main/rust/"
- name: Compile Rust lib
run: |
wget -q "https://dl.google.com/android/repository/android-ndk-${{ steps.versions.outputs.ndk }}-linux.zip"
unzip -q "./android-ndk-${{ steps.versions.outputs.ndk }}-linux.zip"
make SOURCE_DATE_EPOCH=0 NDK_PATH="$(pwd)/android-ndk-${{ steps.versions.outputs.ndk }}/toolchains/llvm/prebuilt/linux-x86_64/bin" DEBUG=0 -C app/src/main/rust build_install
- name: Retrieve the secret and decode it to a file and Build App
env:
KEY_BASE64: ${{ secrets.KEY_BASE64 }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
STORE_PASSWORD: ${{ secrets.KEY_PASSWORD }}
run: |
echo $KEY_BASE64 | base64 --decode > app/key.jks
./gradlew assembleRelease
mkdir -p packages
# warning: do not use github.event syntax here
# https://stackoverflow.com/questions/71458189/github-action-workflow-call-does-not-use-up-to-date-input-values
mv app/build/outputs/apk/release/app-release.apk packages/gitnote-release-${{ inputs.version }}.apk
- name: Set prerelease flag
if: ${{ github.event.inputs.prerelease == 'true' }}
run: |
echo "PRERELEASE=--prerelease" >> $GITHUB_ENV
- name: Publish release
run: |
# delete tag/release if needed
gh release delete nightly --yes || true
git push --delete origin nightly || true
gh release delete ${{ inputs.version }} --yes || true
git push --delete origin ${{ inputs.version }} || true
git tag ${{ inputs.version }}
git push origin --tags
# https://cli.github.com/manual/gh_release_create
gh release create ${{ inputs.version }} --title "${{ inputs.version }}" \
--verify-tag ${{ env.PRERELEASE }} --generate-notes --target $GITHUB_SHA \
./packages/*