ci: fix workflows #2
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: 'E2E Tests' | ||
on: | ||
push: | ||
branches: | ||
- '**' | ||
jobs: | ||
build-android: | ||
name: Build Android | ||
runs-on: ubuntu-latest | ||
env: | ||
TURBO_CACHE_DIR: .turbo/android | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Setup Node.js | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version-file: .nvmrc | ||
- name: Enable corepack | ||
run: corepack enable | ||
- name: Install dependencies | ||
run: yarn install --immutable | ||
- name: Cache turborepo for Android | ||
uses: actions/cache@v4 | ||
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: Setup java | ||
if: env.turbo_cache_hit != 1 | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: 'temurin' # See 'Supported distributions' for available options | ||
java-version: '19' | ||
- name: Cache Gradle | ||
if: env.turbo_cache_hit != 1 | ||
uses: actions/cache@v4 | ||
with: | ||
path: | | ||
~/.gradle/wrapper | ||
~/.gradle/caches | ||
key: ${{ runner.os }}-gradle-${{ hashFiles('example/android/gradle/wrapper/gradle-wrapper.properties') }} | ||
restore-keys: | | ||
${{ runner.os }}-gradle- | ||
- name: Downloading Gradle Dependencies | ||
if: env.turbo_cache_hit != 1 | ||
run: | | ||
cd KeychainExample/android | ||
chmod +x gradlew | ||
./gradlew --max-workers 2 dependencies | ||
- name: Build Android Release | ||
env: | ||
JAVA_OPTS: '-XX:MaxHeapSize=6g' | ||
run: | | ||
yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}" | ||
yarn turbo run test:android:build --cache-dir="${{ env.TURBO_CACHE_DIR }}" | ||
- name: Upload Test APKs | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: test-apk | ||
path: KeychainExample/android/app/build/outputs/apk | ||
retention-days: 1 | ||
test-android: | ||
runs-on: ubuntu-latest | ||
needs: build-android | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
api-level: | ||
- 24 | ||
- 26 | ||
- 29 | ||
steps: | ||
- name: Enable KVM group perms | ||
run: | | ||
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 | ||
ls /dev/kvm | ||
- uses: actions/checkout@v4 | ||
- name: Setup Node.js | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version-file: .nvmrc | ||
- name: Enable corepack | ||
run: corepack enable | ||
- name: Install dependencies | ||
run: yarn install --immutable | ||
- name: Setup java | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: 'temurin' # See 'Supported distributions' for available options | ||
java-version: '19' | ||
- uses: actions/download-artifact@v4 | ||
with: | ||
name: test-apk | ||
path: KeychainExample/android/app/build/outputs/apk | ||
- name: Display structure of downloaded files | ||
run: ls -R KeychainExample/android/app/build/outputs/apk | ||
- name: Run Tests | ||
uses: reactivecircus/android-emulator-runner@v2 | ||
with: | ||
api-level: ${{ matrix.api-level }} | ||
disable-animations: true | ||
avd-name: TestingAVD | ||
script: | | ||
cd KeychainExample | ||
yarn test:android:run | ||
env: | ||
API_LEVEL: ${{ matrix.api-level }} | ||
build-ios: | ||
name: Build iOS | ||
needs: analyse | ||
runs-on: macos-13 | ||
env: | ||
TURBO_CACHE_DIR: .turbo/ios | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Setup Node.js | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version-file: .nvmrc | ||
- name: Enable corepack | ||
run: corepack enable | ||
- name: Install dependencies | ||
run: yarn install --immutable | ||
- name: setup-cocoapods | ||
uses: maxim-lobanov/setup-cocoapods@v1 | ||
with: | ||
podfile-path: KeychainExample/ios/Podfile.lock | ||
- name: Cache turborepo for iOS | ||
uses: actions/cache@v4 | ||
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@v4 | ||
with: | ||
path: | | ||
**/ios/Pods | ||
**/vendor/bundle | ||
key: ${{ runner.os }}-cocoapods-${{ hashFiles('KeychainExample/ios/Podfile.lock') }} | ||
restore-keys: | | ||
${{ runner.os }}-cocoapods- | ||
- name: Install Bundle | ||
if: env.turbo_cache_hit != 1 && steps.cocoapods-cache.outputs.cache-hit != 'true' | ||
run: | | ||
cd KeychainExample | ||
bundle install | ||
- name: Install Detox dependencies | ||
run: | | ||
cd KeychainExample | ||
brew tap wix/brew | ||
brew install applesimutils | ||
yarn detox clean-framework-cache | ||
yarn detox build-framework-cache | ||
- name: Xcode Version | ||
run: | | ||
xcodebuild -version | ||
xcrun simctl list | ||
- name: Build iOS Release | ||
run: | | ||
yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}" | ||
cd KeychainExample/ios && pod install && cd - | ||
yarn turbo run test:ios:build --cache-dir="${{ env.TURBO_CACHE_DIR }}" | ||
env: | ||
RCT_NEW_ARCH_ENABLED: 0 | ||
USE_HERMES: 1 | ||
- name: Test iOS Release | ||
run: | | ||
cd KeychainExample | ||
yarn test:ios:run |