126aa4695SNick Novitskiname: Android Client 226aa4695SNick Novitski 326aa4695SNick Novitskion: 4f312c993SNick Novitski workflow_dispatch: 5962569dbSBartłomiej Klocek schedule: 6962569dbSBartłomiej Klocek - cron: '20 5 * * 1,3,5' # 5:20 AM UTC time on every Monday, Wednesday and Friday 726aa4695SNick Novitski pull_request: 826aa4695SNick Novitski paths: 926aa4695SNick Novitski - .github/workflows/client-android.yml 1026aa4695SNick Novitski - secrets/** 1126aa4695SNick Novitski - android/** 1226aa4695SNick Novitski - fastlane/** 1326aa4695SNick Novitski - Gemfile.lock 1426aa4695SNick Novitski - yarn.lock 1526aa4695SNick Novitski push: 1646843043SBrent Vatne branches: [main, sdk-*] 1726aa4695SNick Novitski paths: 1826aa4695SNick Novitski - .github/workflows/client-android.yml 1926aa4695SNick Novitski - secrets/** 2026aa4695SNick Novitski - android/** 2126aa4695SNick Novitski - fastlane/** 2226aa4695SNick Novitski - Gemfile.lock 2326aa4695SNick Novitski - yarn.lock 2426aa4695SNick Novitski 2557852c41STomasz Sapetaconcurrency: 2657852c41STomasz Sapeta group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} 2757852c41STomasz Sapeta cancel-in-progress: true 2857852c41STomasz Sapeta 2926aa4695SNick Novitskijobs: 3026aa4695SNick Novitski build: 31*f2369006SKudo Chien # NOTE(kudo): [macos-temp] Temporarily use macos runner because the limited resource on linux runners does not allow to build Expo Go 32*f2369006SKudo Chien # runs-on: ubuntu-22.04 33*f2369006SKudo Chien runs-on: macos-13 34d566f199SKudo Chien env: 35*f2369006SKudo Chien ORG_GRADLE_PROJECT_reactNativeArchitectures: x86_64 36*f2369006SKudo Chien # [macos-temp] Increase JVM memory because macOS runners have more memory available 37*f2369006SKudo Chien # GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx3072m -XX:MaxMetaspaceSize=1024m" 38*f2369006SKudo Chien GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx4096m -XX:MaxMetaspaceSize=4096m" 3926aa4695SNick Novitski steps: 40cb915345STomasz Sapeta - name: Checkout 414af7344cSBartosz Kaszubowski uses: actions/checkout@v3 4226aa4695SNick Novitski with: 4326aa4695SNick Novitski submodules: true 44*f2369006SKudo Chien # [macos-temp] 45*f2369006SKudo Chien # - name: Cleanup GitHub Linux runner disk space 46*f2369006SKudo Chien # uses: ./.github/actions/cleanup-linux-disk-space 47d566f199SKudo Chien - name: Use JDK 11 484af7344cSBartosz Kaszubowski uses: actions/setup-java@v3 49d566f199SKudo Chien with: 50d566f199SKudo Chien distribution: 'temurin' 51d566f199SKudo Chien java-version: '11' 52cb915345STomasz Sapeta - name: Setup Ruby and install gems 53cb915345STomasz Sapeta uses: ruby/setup-ruby@v1 5426aa4695SNick Novitski with: 559828452cSNick Novitski bundler-cache: true 56c627e13dSDouglas Lowder ruby-version: 3.2.2 57fc12ed2dSBartosz Kaszubowski - name: ♻️ Restore caches 58fc12ed2dSBartosz Kaszubowski uses: ./.github/actions/expo-caches 59fc12ed2dSBartosz Kaszubowski id: expo-caches 6026aa4695SNick Novitski with: 61fc12ed2dSBartosz Kaszubowski yarn-workspace: 'true' 62fc12ed2dSBartosz Kaszubowski yarn-tools: 'true' 63fc12ed2dSBartosz Kaszubowski gradle: 'true' 6496634eeaSKudo Chien hermes-engine-aar: 'true' 65cb639b06SKudo Chien react-native-gradle-downloads: 'true' 66fc12ed2dSBartosz Kaszubowski - name: ➕ Add `bin` to GITHUB_PATH 67fc12ed2dSBartosz Kaszubowski run: echo "$(pwd)/bin" >> $GITHUB_PATH 68fc12ed2dSBartosz Kaszubowski - name: Yarn install 69fc12ed2dSBartosz Kaszubowski if: steps.expo-caches.outputs.yarn-workspace-hit != 'true' 70fc12ed2dSBartosz Kaszubowski run: yarn install --frozen-lockfile 71fc12ed2dSBartosz Kaszubowski - name: Decrypt secrets if possible 72fc12ed2dSBartosz Kaszubowski uses: ./.github/actions/expo-git-decrypt 73fc12ed2dSBartosz Kaszubowski with: 74fc12ed2dSBartosz Kaszubowski key: ${{ secrets.GIT_CRYPT_KEY_BASE64 }} 75962569dbSBartłomiej Klocek - name: Check which flavor to build 76962569dbSBartłomiej Klocek id: flavor 77962569dbSBartłomiej Klocek uses: dorny/paths-filter@v2 78962569dbSBartłomiej Klocek with: 791aabc453SBartłomiej Klocek # this action fails when base is not set on schedule event 801aabc453SBartłomiej Klocek base: ${{ github.ref }} 81962569dbSBartłomiej Klocek filters: | 82962569dbSBartłomiej Klocek versioned: 83962569dbSBartłomiej Klocek - android/versioned-abis/** 84962569dbSBartłomiej Klocek - android/versioned-react-native/** 85962569dbSBartłomiej Klocek - android/expoview/src/versioned/** 86962569dbSBartłomiej Klocek - android/expoview/src/main/java/versioned/** 87962569dbSBartłomiej Klocek - android/**/*.gradle 88cb915345STomasz Sapeta - name: Build APK 896aa6f0b9SNick Novitski env: 90962569dbSBartłomiej Klocek IS_VERSIONED_FLAVOR: ${{ github.event_name == 'schedule' || steps.flavor.outputs.versioned == 'true' }} 91*f2369006SKudo Chien BUILD_TYPE: Debug 926aa6f0b9SNick Novitski run: | 93962569dbSBartłomiej Klocek [[ "$IS_VERSIONED_FLAVOR" == "true" ]] && FLAVOR="Versioned" || FLAVOR="Unversioned" 94*f2369006SKudo Chien echo "Building: flavor[${FLAVOR}] type[${BUILD_TYPE}]" 95fc12ed2dSBartosz Kaszubowski fastlane android build build_type:$BUILD_TYPE flavor:$FLAVOR sign:false 96fc12ed2dSBartosz Kaszubowski - name: Upload APK artifact 974af7344cSBartosz Kaszubowski uses: actions/upload-artifact@v3 9826aa4695SNick Novitski with: 9926aa4695SNick Novitski name: android-apk 10026aa4695SNick Novitski path: android/app/build/outputs/apk 101cb915345STomasz Sapeta - name: Store daemon logs for debugging crashes 10226aa4695SNick Novitski if: failure() 1034af7344cSBartosz Kaszubowski uses: actions/upload-artifact@v3 10426aa4695SNick Novitski with: 10526aa4695SNick Novitski name: gradle-daemon-logs 10626aa4695SNick Novitski path: ~/.gradle/daemon 10773fa456fSTomasz Sapeta - name: Notify on Slack 10873fa456fSTomasz Sapeta uses: 8398a7/action-slack@v3 10946843043SBrent Vatne if: failure() && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-')) 11026aa4695SNick Novitski env: 11126aa4695SNick Novitski GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 11226aa4695SNick Novitski SLACK_WEBHOOK_URL: ${{ secrets.slack_webhook_android }} 11326aa4695SNick Novitski with: 1146c3ce96fSTomasz Sapeta channel: '#expo-android' 11573fa456fSTomasz Sapeta status: ${{ job.status }} 116f12bf82bSTomasz Sapeta fields: job,message,ref,eventName,author,took 11773fa456fSTomasz Sapeta author_name: Expo Go (Android) 118