Skip to content

ci: run Android test gate #4

ci: run Android test gate

ci: run Android test gate #4

Workflow file for this run

name: CI
on:
push:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
name: Android build gate
runs-on: ubuntu-24.04
timeout-minutes: 45
steps:
- name: Check out source
uses: actions/checkout@v7
with:
persist-credentials: false
- name: Install Linux native dependencies
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends --yes \
libc6-dev \
libasound2-dev \
libgl1-mesa-dev \
libx11-dev \
libxcursor-dev \
libxi-dev \
libxinerama-dev \
libxrandr-dev \
libxxf86vm-dev \
pkg-config
- name: Set up Go
uses: actions/setup-go@v7
with:
go-version-file: tests/fixtures/go.mod
cache-dependency-path: tests/fixtures/go.sum
- name: Set up JDK
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '17'
cache: gradle
cache-dependency-path: |
android/*.gradle
android/app/*.gradle
android/gradle.properties
android/gradle/libs.versions.toml
android/gradle/wrapper/gradle-wrapper.properties
- name: Set up Android SDK
uses: android-actions/setup-android@v4
with:
packages: >-
platform-tools
platforms;android-35
build-tools;35.0.0
ndk;26.3.11579264
cmake;3.22.1
# The package's dependency installer uses cmdline-tools/latest, while
# setup-android keeps command-line tools under their versioned directory.
- name: Expose Android command-line tools at the expected path
shell: bash
run: |
set -euo pipefail
export ANDROID_SDK_ROOT="${ANDROID_SDK_ROOT:-${ANDROID_HOME:?ANDROID_HOME is not set}}"
expected_dir="${ANDROID_SDK_ROOT}/cmdline-tools/latest"
if [[ ! -x "${expected_dir}/bin/apkanalyzer" ]]; then
if [[ -e "${expected_dir}" || -L "${expected_dir}" ]]; then
echo "${expected_dir} exists but does not contain apkanalyzer" >&2
exit 1
fi
tools_dir="$(dirname "$(dirname "$(command -v sdkmanager)")")"
test -x "${tools_dir}/bin/apkanalyzer"
ln -s "${tools_dir}" "${expected_dir}"
fi
- name: Install ebitenmobile
working-directory: tests/fixtures
shell: bash
run: |
set -euo pipefail
echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH"
ebiten_version="$(go list -m -f '{{.Version}}' github.com/hajimehoshi/ebiten/v2)"
go install "github.com/hajimehoshi/ebiten/v2/cmd/ebitenmobile@${ebiten_version}"
- name: Run test suite
shell: bash
run: |
set -euo pipefail
export ANDROID_SDK_ROOT="${ANDROID_SDK_ROOT:-${ANDROID_HOME:?ANDROID_HOME is not set}}"
export ANDROID_HOME="${ANDROID_SDK_ROOT}"
make test-android