Skip to content

ci: upload recordings to gcs #327

ci: upload recordings to gcs

ci: upload recordings to gcs #327

Workflow file for this run

name: E2E
on:
pull_request:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
e2e-android:
name: Android
runs-on: self-hosted
timeout-minutes: 45
steps:
- uses: actions/checkout@v2
# In case this is run on a runner without nix
# - uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@v2
# Caching
- uses: actions/cache@v2
with:
path: |
node_modules
ios/Pods
key: ${{ runner.os }}-deps-${{ hashFiles('**/yarn.lock', '**/Podfile.lock') }}
restore-keys: |
${{ runner.os }}-deps-
# Installations
- name: Install Node Modules and Pods
run: nix develop -c yarn install
env:
LANG: en_US.UTF-8
# Metro
- name: Start Metro
run: |
nix develop -c sh -c 'yarn start' &
echo "METRO_PID=$!" >> $GITHUB_ENV
# Builds
- run: nix develop -c yarn e2e:build android.emu.debug
# Start Tilt
- name: Tilt CI
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
retry_wait_seconds: 30
max_attempts: 3
command: nix develop -c sh -c 'cd dev && tilt ci'
- name: Tilt Server
run: |
lsof -ti:10350 | xargs kill -9 || true
nix develop -c sh -c 'cd dev && tilt up' &
echo "TILT_SERVER_PID=$!" >> $GITHUB_ENV
# Tests on Android Emulator
- name: Start Android Emulator
run: |
nix develop -c sh -c 'emulator -avd Pixel_API_34 -gpu swiftshader -wipe-data -no-boot-anim' &
nix develop -c adb wait-for-device
- name: Run Detox Tests on Android Emulator
uses: nick-fields/retry@v3
with:
timeout_minutes: 15
retry_wait_seconds: 1
max_attempts: 3
command: |
rm -rf android-recordings || true
nix develop -c tilt trigger dev-setup
nix develop -c tilt wait --timeout 5m --for=condition=Ready uiresources dev-setup
nix develop -c yarn e2e:test android.emu.debug -d --take-screenshots all --record-videos all --record-logs all --artifacts-location android-recordings
- name: Kill Android Emulator
if: always()
continue-on-error: true
run: nix develop -c adb emu kill
- uses: actions/upload-artifact@v4
if: always()
with:
name: android-recordings
path: android-recordings
# Upload recordings to GCS bucket
- uses: "google-github-actions/auth@v2"
if: always()
with:
credentials_json: "${{ secrets.BUILD_ARTIFACTS_BUCKET_KEY }}"
- uses: "google-github-actions/upload-cloud-storage@v2"
if: always()
with:
path: android-recordings
destination: gs://galoy-build-artifacts/android-recordings/${{ github.run_id }}
# Cleanup
- name: Terminate Metro
if: always()
continue-on-error: true
run: kill $METRO_PID
- name: Cleanup
if: always()
continue-on-error: true
run: |
kill $METRO_PID || true
kill $TILT_SERVER_PID || true
nix develop -c sh -c 'cd dev && tilt down' || true
docker rm -f $(docker ps -aq) || true
lsof -ti:10350,8080,8081 | xargs kill -9 || true
e2e-ios:
name: iOS
runs-on: self-hosted
timeout-minutes: 45
steps:
- uses: actions/checkout@v2
# In case this is run on a runner without nix
# - uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@v2
# Caching
- uses: actions/cache@v2
with:
path: |
node_modules
ios/Pods
key: ${{ runner.os }}-deps-${{ hashFiles('**/yarn.lock', '**/Podfile.lock') }}
restore-keys: |
${{ runner.os }}-deps-
# Installations
- name: Install Node Modules and Pods
run: nix develop -c yarn install
env:
LANG: en_US.UTF-8
# Metro
- name: Start Metro
run: |
nix develop -c sh -c 'yarn start' &
echo "METRO_PID=$!" >> $GITHUB_ENV
# Builds
- run: nix develop -c yarn e2e:build ios.sim.debug
# Start Tilt
- name: Tilt CI
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
retry_wait_seconds: 30
max_attempts: 3
command: nix develop -c sh -c 'cd dev && tilt ci'
- name: Tilt Server
run: |
lsof -ti:10350 | xargs kill -9 || true
nix develop -c sh -c 'cd dev && tilt up' &
echo "TILT_SERVER_PID=$!" >> $GITHUB_ENV
# Tests on iOS Simulator
- name: Run Detox Tests on iOS Simulator
uses: nick-fields/retry@v3
with:
timeout_minutes: 15
retry_wait_seconds: 1
max_attempts: 3
command: |
rm -rf ios-recordings || true
nix develop -c tilt trigger dev-setup
nix develop -c tilt wait --timeout 5m --for=condition=Ready uiresources dev-setup
nix develop -c yarn e2e:test ios.sim.debug -d -R 5 --take-screenshots all --record-videos all --record-logs all --artifacts-location ios-recordings
- run: killall Simulator
if: always()
continue-on-error: true
- uses: actions/upload-artifact@v4
if: always()
with:
name: ios-recordings
path: ios-recordings
# Upload recordings to GCS bucket
- uses: "google-github-actions/auth@v2"
if: always()
with:
credentials_json: "${{ secrets.BUILD_ARTIFACTS_BUCKET_KEY }}"
- uses: "google-github-actions/upload-cloud-storage@v2"
if: always()
with:
path: ios-recordings
destination: gs://galoy-build-artifacts/ios-recordings/${{ github.run_id }}
# Cleanup
- name: Cleanup
if: always()
continue-on-error: true
run: |
kill $METRO_PID || true
kill $TILT_SERVER_PID || true
nix develop -c sh -c 'cd dev && tilt down' || true
docker rm -f $(docker ps -aq) || true
lsof -ti:10350,8080,8081 | xargs kill -9 || true