Merge pull request #2633 from spacedriveapp/eng-1828-migration-to-new… #6077
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: Mobile CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
paths: | |
- 'apps/mobile/**' | |
- '.github/workflows/mobile-ci.yml' | |
- 'core/**' | |
- 'crates/**' | |
- 'packages/assets/**' | |
- 'packages/client/**' | |
- 'packages/config/**' | |
workflow_dispatch: | |
env: | |
SPACEDRIVE_CUSTOM_APT_FLAGS: --no-install-recommends | |
SPACEDRIVE_CI: '1' | |
# From: https://github.com/rust-lang/rust-analyzer/blob/master/.github/workflows/ci.yaml | |
CARGO_INCREMENTAL: 0 | |
CARGO_NET_RETRY: 10 | |
RUST_BACKTRACE: short | |
RUSTUP_MAX_RETRIES: 10 | |
# Cancel previous runs of the same workflow on the same branch. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
js: | |
name: JS | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Node.js, pnpm and dependencies | |
uses: ./.github/actions/setup-pnpm | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build mobile JS | |
run: pnpm mobile export | |
# Disabled until I can figure out why our app on x86_64 crashes on startup. | |
# android: | |
# name: Android | |
# runs-on: macos-12 | |
# steps: | |
# - name: Checkout repository | |
# uses: actions/checkout@v4 | |
# | |
# - name: Setup Java JDK | |
# uses: actions/[email protected] | |
# with: | |
# java-version: '18' | |
# distribution: 'temurin' | |
# | |
# - name: Setup Node.js, pnpm and dependencies | |
# uses: ./.github/actions/setup-pnpm | |
# with: | |
# token: ${{ secrets.GITHUB_TOKEN }} | |
# | |
# - name: Setup System and Rust | |
# uses: ./.github/actions/setup-system | |
# with: | |
# token: ${{ secrets.GITHUB_TOKEN }} | |
# setup-arg: mobile | |
# | |
# - name: Setup Android SDK Tools | |
# uses: android-actions/[email protected] | |
# | |
# - name: Cache NDK | |
# uses: actions/cache@v3 | |
# with: | |
# path: ${{ env.ANDROID_HOME }}/ndk/26.1.10909125 | |
# key: ndk-26.1.10909125 | |
# | |
# - name: Install NDK | |
# run: echo "y" | sudo ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --install "ndk;26.1.10909125" | |
# | |
# - name: Cache Gradle | |
# uses: gradle/gradle-build-action@v2 | |
# | |
# - name: Build Android | |
# working-directory: ./apps/mobile/android | |
# run: chmod +x ./gradlew && ./gradlew assembleRelease -PreactNativeArchitectures=x86_64 --no-daemon | |
# | |
# - name: Cache AVD | |
# uses: actions/cache@v3 | |
# id: avd-cache | |
# with: | |
# path: | | |
# ~/.android/avd/* | |
# ~/.android/adb* | |
# key: avd-30 | |
# | |
# - name: Generate AVD Snapshot | |
# if: ${{ steps.avd-cache.outputs.cache-hit != 'true' }} | |
# uses: ReactiveCircus/[email protected] | |
# with: | |
# arch: x86_64 | |
# api-level: 30 | |
# target: google_apis | |
# ndk: 26.1.10909125 | |
# ram-size: 4096M | |
# emulator-boot-timeout: 12000 | |
# force-avd-creation: false | |
# emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
# disable-animations: false | |
# script: echo "Generated AVD snapshot." | |
# | |
# - name: Install Maestro | |
# run: | | |
# # workaround for https://github.com/mobile-dev-inc/maestro/issues/877 | |
# export MAESTRO_VERSION=1.21.3; curl -Ls "https://get.maestro.mobile.dev" | bash | |
# echo "$HOME/.maestro/bin" >> $GITHUB_PATH | |
# | |
# - name: Run Tests | |
# uses: ReactiveCircus/[email protected] | |
# with: | |
# arch: x86_64 | |
# api-level: 30 | |
# target: google_apis | |
# ndk: 26.1.10909125 | |
# ram-size: 4096M | |
# emulator-boot-timeout: 12000 | |
# force-avd-creation: false | |
# emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
# disable-animations: true | |
# script: | | |
# adb install -r apps/mobile/android/app/build/outputs/apk/release/app-release.apk | |
# adb wait-for-device | |
# ./apps/mobile/scripts/run-maestro-tests.sh android | |
ios: | |
name: iOS | |
runs-on: macos-14 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
# - name: Install Xcode | |
# uses: maxim-lobanov/setup-xcode@v1 | |
# with: | |
# xcode-version: latest-stable | |
- name: Setup System and Rust | |
uses: ./.github/actions/setup-system | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
setup-arg: mobile | |
- name: Setup Node.js, pnpm and dependencies | |
uses: ./.github/actions/setup-pnpm | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Generate iOS Project | |
working-directory: ./apps/mobile | |
run: pnpm expo prebuild --platform ios --no-install | |
# Hermes doesn't work with Cocoapods 1.15.0 | |
# https://forums.developer.apple.com/forums/thread/745518 | |
- name: Setup Cocoapods | |
uses: maxim-lobanov/setup-cocoapods@v1 | |
with: | |
version: latest | |
# - name: Cache Pods | |
# uses: actions/cache@v4 | |
# with: | |
# path: | | |
# ./apps/mobile/ios/Pods | |
# ~/Library/Caches/CocoaPods | |
# ~/.cocoapods | |
# key: pods-${{ hashFiles('./apps/mobile/ios/Podfile.lock') }} | |
# restore-keys: pods- | |
- name: Install Pods | |
working-directory: ./apps/mobile/ios | |
run: pod install --repo-update | |
- name: Build iOS | |
working-directory: ./apps/mobile/ios | |
run: xcodebuild -workspace ./Spacedrive.xcworkspace -scheme Spacedrive -configuration Release -sdk iphonesimulator -derivedDataPath build -arch "$(uname -m)" | |
- name: Install Maestro | |
run: | | |
curl -Ls "https://get.maestro.mobile.dev" | bash | |
brew tap facebook/fb | |
brew install facebook/fb/idb-companion | |
echo "${HOME}/.maestro/bin" >> $GITHUB_PATH | |
- name: Run Simulator | |
id: run_simulator | |
uses: futureware-tech/simulator-action@v3 | |
with: | |
model: 'iPhone 14' | |
os_version: 17.4 | |
erase_before_boot: false | |
- name: Run Tests | |
run: ./apps/mobile/scripts/run-maestro-tests.sh ios ${{ steps.run_simulator.outputs.udid }} |