diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 77c42c00..70b9f996 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -11,79 +11,171 @@ env: EXPO_NO_TELEMETRY: 1 SENTRY_DISABLE_AUTO_UPLOAD: true jobs: - build: - name: build-for-android-base- + 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 ci + + - name: PreBuild Android + run: npx expo prebuild -p android --clean + + - 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 - restore-keys: | - ${{ runner.os }}-android-build - ci-${{ runner.os }}-android-build + path: | + ~/**/*android* + ~/*android* + ~/**/*gradle* + ~/*gradle* + **/node_modules + ./node_modules + **/android + ./android + key: ${{ runner.os }}-android-build-debug + restore-keys: | + ${{ runner.os }}-android-build-debug + ci-${{ runner.os }}-android-build-debug - uses: actions/setup-node@v4 with: - cache: npm - # cache-dependency-path: | - # ${{ env.GITHUB_WORKSPACE }}/package-lock.json + cache: npm - uses: actions/setup-java@v4 with: - distribution: temurin - java-version: '17' # The JDK version to make available on the path. - # ${{ env.GITHUB_WORKSPACE }}/**/*gradle* - # ${{ env.GITHUB_WORKSPACE }}/*gradle* + 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 + 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 - + - 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)")" + # run: echo "::set-output name=DEVICE_NAME::$(adb devices | grep emulator | cut -f1)" + + - name: Detox test + # uses: wixplosives/detox-action@v2 + 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 + # emulator-build: stable + script: npm run detox:test:android:ci + + - name: Build android APK - run: | - cd ./android && ./gradlew assembleRelease --no-daemon --stacktrace - find . -type f -name '*.apk' 2>/dev/null - cd ${{ env.GITHUB_WORKSPACE }} + 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 \ No newline at end of file + path: | + ~/**/*android* + ~/*android* + ~/**/*gradle* + ~/*gradle* + **/node_modules + ./node_modules + **/android + ./android + key: ${{ runner.os }}-android-build-debug