Skip to content

draft: test android build #4

draft: test android build

draft: test android build #4

Workflow file for this run

name: android-build
permissions:
contents: read
on:
push:
branches:
- main
pull_request:
types:
- opened
- reopened
- synchronize
concurrency:
group: '${{ github.workflow }}-${{ github.head_ref || github.run_id }}'
cancel-in-progress: true
jobs:
build-android:
name: 'build android ${{ matrix.arch }}'
runs-on: ubuntu-24.04
timeout-minutes: 90
strategy:
matrix:
arch: [aarch64, x86_64]
fail-fast: false
steps:
- name: Configure git
run: |
git config --global core.symlinks true
git config --global fetch.parallel 32
- name: Clone repository
uses: actions/checkout@v4
with:
fetch-depth: 5
submodules: false
- name: Clone submodule ./tests/util/std
run: git submodule update --init --recursive --depth=1 -- ./tests/util/std
- name: Cache Cargo home
uses: cirruslabs/cache@v4
with:
path: |
~/.cargo/.crates.toml
~/.cargo/.crates2.json
~/.cargo/bin
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git/db
key: 'cargo-home-android-${{ matrix.arch }}-${{ hashFiles(''Cargo.lock'') }}'
restore-keys: 'cargo-home-android-${{ matrix.arch }}-'
- uses: dsherret/rust-toolchain-file@v1
- name: Install Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x
- name: Install Android NDK
uses: nttld/setup-ndk@v1
with:
ndk-version: r27c
- name: Add Android targets
run: |
rustup target add ${{ matrix.arch }}-linux-android
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build
- name: Install gn
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
run: |
./tools/install_prebuilt.js gn
- name: Set up Android build environment
run: |
echo "ANDROID_NDK_ROOT=$ANDROID_NDK_HOME" >> $GITHUB_ENV
echo "NDK_HOME=$ANDROID_NDK_HOME" >> $GITHUB_ENV
# Add NDK toolchain to PATH
echo "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
# Set up CMake toolchain
echo "CMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake" >> $GITHUB_ENV
# Add gn to PATH
echo "$GITHUB_WORKSPACE/third_party/prebuilt/linux64" >> $GITHUB_PATH
- name: Build for Android
env:
# Build V8 from source since prebuilt binaries don't exist for Android
V8_FROM_SOURCE: 1
# Set API level
ANDROID_NDK_API_LEVEL: '24'
# Linkers
CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER: aarch64-linux-android24-clang
CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER: x86_64-linux-android24-clang
# Compilers for build scripts
CC_aarch64_linux_android: aarch64-linux-android24-clang
CXX_aarch64_linux_android: aarch64-linux-android24-clang++
AR_aarch64_linux_android: llvm-ar
CC_x86_64_linux_android: x86_64-linux-android24-clang
CXX_x86_64_linux_android: x86_64-linux-android24-clang++
AR_x86_64_linux_android: llvm-ar
# GN args for V8 build
EXTRA_GN_ARGS: 'android_ndk_api_level=24 use_jumbo_build=true'
run: |
cargo build --target ${{ matrix.arch }}-linux-android --locked
- name: Verify binary exists
run: |
ls -lh target/${{ matrix.arch }}-linux-android/debug/deno