name: CI on: push: branches: - main pull_request: branches: - main jobs: lint: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Setup uses: ./.github/actions/setup - name: Lint files run: yarn lint - name: Typecheck files run: yarn typecheck test: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Setup uses: ./.github/actions/setup - name: Run unit tests run: yarn test --maxWorkers=2 --coverage build-library: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Setup uses: ./.github/actions/setup - name: Build package run: yarn prepare build-android: runs-on: ubuntu-latest env: TURBO_CACHE_DIR: .turbo/android steps: - name: Checkout uses: actions/checkout@v3 - name: Setup uses: ./.github/actions/setup - name: Cache turborepo for Android uses: actions/cache@v3 with: path: ${{ env.TURBO_CACHE_DIR }} key: ${{ runner.os }}-turborepo-android-${{ hashFiles('yarn.lock') }} restore-keys: | ${{ runner.os }}-turborepo-android- - name: Check turborepo cache for Android run: | TURBO_CACHE_STATUS=$(node -p "($(yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}" --dry=json)).tasks.find(t => t.task === 'build:android').cache.status") if [[ $TURBO_CACHE_STATUS == "HIT" ]]; then echo "turbo_cache_hit=1" >> $GITHUB_ENV fi - name: Install JDK if: env.turbo_cache_hit != 1 uses: actions/setup-java@v3 with: distribution: 'zulu' java-version: '17' - name: Finalize Android SDK if: env.turbo_cache_hit != 1 run: | /bin/bash -c "yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses > /dev/null" - name: Cache Gradle if: env.turbo_cache_hit != 1 uses: actions/cache@v3 with: path: | ~/.gradle/wrapper ~/.gradle/caches key: ${{ runner.os }}-gradle-${{ hashFiles('example/android/gradle/wrapper/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- - name: Build example for Android env: JAVA_OPTS: "-XX:MaxHeapSize=6g" run: | yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}" build-ios: runs-on: macos-14 env: TURBO_CACHE_DIR: .turbo/ios steps: - name: Checkout uses: actions/checkout@v3 - name: Setup uses: ./.github/actions/setup - name: Cache turborepo for iOS uses: actions/cache@v3 with: path: ${{ env.TURBO_CACHE_DIR }} key: ${{ runner.os }}-turborepo-ios-${{ hashFiles('yarn.lock') }} restore-keys: | ${{ runner.os }}-turborepo-ios- - name: Check turborepo cache for iOS run: | TURBO_CACHE_STATUS=$(node -p "($(yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}" --dry=json)).tasks.find(t => t.task === 'build:ios').cache.status") if [[ $TURBO_CACHE_STATUS == "HIT" ]]; then echo "turbo_cache_hit=1" >> $GITHUB_ENV fi - name: Cache cocoapods if: env.turbo_cache_hit != 1 id: cocoapods-cache uses: actions/cache@v3 with: path: | **/ios/Pods key: ${{ runner.os }}-cocoapods-${{ hashFiles('example/ios/Podfile.lock') }} restore-keys: | ${{ runner.os }}-cocoapods- - name: Install cocoapods if: env.turbo_cache_hit != 1 && steps.cocoapods-cache.outputs.cache-hit != 'true' run: | cd example/ios pod install env: NO_FLIPPER: 1 - name: Build example for iOS run: | yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}"