This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build-for-android-production | |
on: | |
push: | |
branches: [main, dev] | |
pull_request: | |
# types: [opened, reopened] | |
# types: [opened, synchronize, edited, ready_for_review] | |
env: | |
EXPO_NO_TELEMETRY: 1 | |
SENTRY_DISABLE_AUTO_UPLOAD: true | |
CI: 1 | |
jobs: | |
build: | |
name: build-android-production | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Restore cached Cache | |
id: cache-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: | | |
~/**/*android* | |
~/*android* | |
~/**/*gradle* | |
~/*gradle* | |
**/node_modules | |
./node_modules | |
**/android | |
./android | |
key: ${{ runner.os }}-android-build | |
restore-keys: | | |
${{ runner.os }}-android-build | |
ci-${{ runner.os }}-android-build | |
- uses: actions/setup-node@v4 | |
with: | |
cache: npm | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: temurin | |
java-version: "17" | |
- uses: expo/expo-github-action@v8 | |
- name: Setup Android SDK | |
uses: android-actions/setup-android@v3 | |
with: | |
packages: platform-tools platforms;android-34 build-tools;33.0.1 build-tools;34.0.0 ndk;25.1.8937393 cmake;3.22.1 | |
- name: Install deps | |
run: npm i --force | |
- name: PreBuild Android | |
run: npx expo prebuild -p android --clean --npm | |
- name: make gradlew executable | |
run: chmod +x ./android/gradlew | |
- name: Build android APK | |
run: | | |
cd ./android && ./gradlew assembleRelease --no-daemon --stacktrace | |
find . -type f -name '*.apk' 2>/dev/null | |
cd ${{ env.GITHUB_WORKSPACE }} | |
shell: bash | |
- name: Save Cache | |
id: cache-save | |
uses: actions/cache/save@v4 | |
with: | |
path: | | |
~/**/*android* | |
~/*android* | |
~/**/*gradle* | |
~/*gradle* | |
**/node_modules | |
./node_modules | |
**/android | |
./android | |
key: ${{ runner.os }}-android-build | |
build-debug: | |
name: build-android-debug | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Enable KVM | |
run: | | |
mkdir -p /etc/udev/rules.d | |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
sudo udevadm control --reload-rules | |
sudo udevadm trigger --name-match=kvm | |
- name: Restore cached Cache | |
id: cache-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: | | |
~/**/*android* | |
~/*android* | |
~/**/*gradle* | |
~/*gradle* | |
**/node_modules | |
./node_modules | |
**/android | |
./android | |
key: ${{ runner.os }}-android-build-debug-new | |
restore-keys: | | |
${{ runner.os }}-android-build-debug-new | |
ci-${{ runner.os }}-android-build-debug-new | |
- uses: actions/setup-node@v4 | |
with: | |
cache: npm | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: temurin | |
java-version: "17" | |
- uses: expo/expo-github-action@v8 | |
- name: Setup Android SDK | |
uses: android-actions/setup-android@v3 | |
with: | |
packages: platform-tools platforms;android-34 build-tools;33.0.1 build-tools;34.0.0 ndk;25.1.8937393 cmake;3.22.1 | |
- name: Install deps | |
run: npm ci --force | |
- name: PreBuild Android | |
run: npx expo prebuild -p android --clean | |
- name: make gradlew executable | |
run: chmod +x ./android/gradlew | |
- name: Detox build | |
run: npm run detox:build:android | |
- name: Get device name | |
id: device-name | |
run: echo "::set-output name=DEVICE_NAME::$(node -e "console.log(require('./detox.config.js').devices.emulator.device.avdName)")" | |
- name: Detox test | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: 33 | |
arch: x86_64 | |
avd-name: ${{ steps.device-name.outputs.DEVICE_NAME }} | |
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
script: npm run detox:test:android:ci | |
- name: Save Cache | |
id: cache-save | |
uses: actions/cache/save@v4 | |
with: | |
path: | | |
~/**/*android* | |
~/*android* | |
~/**/*gradle* | |
~/*gradle* | |
**/node_modules | |
./node_modules | |
**/android | |
./android | |
key: ${{ runner.os }}-android-build-debug-new |