Skip to content

Fix JitPack NDK environment variables #19

Fix JitPack NDK environment variables

Fix JitPack NDK environment variables #19

Workflow file for this run

name: Build and Release
on:
push:
branches: [ main ]
tags: [ 'v*' ]
pull_request:
branches: [ main ]
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-linux-android,armv7-linux-androideabi,i686-linux-android,x86_64-linux-android
- name: Install cargo-ndk
run: cargo install cargo-ndk
- name: Install Android NDK
run: |
echo "y" | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install "ndk;26.1.10909125"
echo "ANDROID_NDK_HOME=$ANDROID_HOME/ndk/26.1.10909125" >> $GITHUB_ENV
echo "ANDROID_NDK_ROOT=$ANDROID_HOME/ndk/26.1.10909125" >> $GITHUB_ENV
echo "$ANDROID_HOME/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
- name: Cache Cargo dependencies
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Auto-increment version
id: version
run: |
# Get current version from build.gradle
CURRENT_VERSION=$(grep "version = '" build.gradle | sed "s/.*version = '\(.*\)'.*/\1/")
echo "Current version: $CURRENT_VERSION"
# Extract base version (remove -alpha suffix)
BASE_VERSION=$(echo $CURRENT_VERSION | sed 's/-alpha//')
# Increment patch version
IFS='.' read -ra VERSION_PARTS <<< "$BASE_VERSION"
MAJOR=${VERSION_PARTS[0]}
MINOR=${VERSION_PARTS[1]}
PATCH=${VERSION_PARTS[2]}
NEW_PATCH=$((PATCH + 1))
NEW_VERSION="${MAJOR}.${MINOR}.${NEW_PATCH}-alpha"
echo "New version: $NEW_VERSION"
# Update build.gradle
sed -i "s/version = '$CURRENT_VERSION'/version = '$NEW_VERSION'/" build.gradle
# Set outputs
echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT
echo "tag=v$NEW_VERSION" >> $GITHUB_OUTPUT
- name: Commit version bump
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add build.gradle
git commit -m "Auto-bump version to ${{ steps.version.outputs.version }}" || exit 0
- name: Run Rust tests
run: cargo test --verbose
- name: Build Rust JNI library
run: ./gradlew buildRustJNI
env:
AWS_LC_SYS_NO_ASM_aarch64_linux_android: 1
AWS_LC_SYS_NO_ASM: 1
- name: Build Android AAR
run: ./gradlew assembleRelease
- name: Publish to GitHub Packages
run: ./gradlew publishReleasePublicationToGitHubPackagesRepository
env:
USERNAME: ${{ github.actor }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create and push tag
run: |
git tag ${{ steps.version.outputs.tag }}
git push origin ${{ steps.version.outputs.tag }}
git push origin main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload AAR artifact
uses: actions/upload-artifact@v4
with:
name: taskchampion-jni-aar
path: build/outputs/aar/*.aar
- name: Create Release
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v1
with:
files: |
build/outputs/aar/*.aar
draft: false
prerelease: true
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}