Skip to content

feat: Allow reusing call instances #3236

feat: Allow reusing call instances

feat: Allow reusing call instances #3236

name: React Native Dogfood Release
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
FIREBASE_TOKEN: ${{ secrets.FIREBASE_APP_DISTRIBUTION_TOKEN }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }}
APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY_ID }}
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }}
SENTRY_RN_AUTH_TOKEN: ${{ secrets.SENTRY_RN_AUTH_TOKEN }}
STREAM_API_KEY: ${{ vars.STREAM_DOGFOOD_API_KEY }}
STREAM_API_SECRET: ${{ secrets.STREAM_DOGFOOD_API_SECRET }}
STREAM_SDK_TEST_APP: ${{ secrets.STREAM_SDK_TEST_APP }}
STREAM_SDK_TEST_ACCOUNT_EMAIL: ${{ secrets.STREAM_SDK_TEST_ACCOUNT_EMAIL }}
STREAM_SDK_TEST_ACCOUNT_PASSWORD: ${{ secrets.STREAM_SDK_TEST_ACCOUNT_PASSWORD }}
STREAM_SDK_TEST_ACCOUNT_OTP_SECRET: ${{ secrets.STREAM_SDK_TEST_ACCOUNT_OTP_SECRET }}
on:
push:
paths:
- '.github/workflows/react-native-workflow.yml'
- 'sample-apps/react-native/dogfood/**'
- 'packages/client/**'
- 'packages/react-bindings/**'
- 'packages/react-native-sdk/**'
- '!**/docusaurus/**'
workflow_dispatch:
concurrency:
group: react-native-workflow-${{ github.ref }}
cancel-in-progress: true
jobs:
code_review:
name: Code Review
timeout-minutes: 20
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/rn-bootstrap
timeout-minutes: 15
env:
INSTALL_NODE: true
INSTALL_RN_DEPENDENCIES: true
- name: Lint source code
working-directory: sample-apps/react-native/dogfood
run: yarn lint:ci
- name: Lint fastlane
working-directory: sample-apps/react-native/dogfood
run: bundle exec fastlane rubocop
build_ios:
name: Build iOS
timeout-minutes: 60
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/rn-bootstrap
timeout-minutes: 20
env:
INSTALL_NODE: true
INSTALL_PODS: true
INSTALL_RN_DEPENDENCIES: true
INSTALL_IOS_PERMISSIONS: true
- name: Test RN SDK
run: yarn test:react-native:sdk
- name: Build
working-directory: sample-apps/react-native/dogfood
run: bundle exec fastlane build_ios
- name: Upload .ipa
uses: actions/upload-artifact@v3
with:
name: ipa
path: |
**/dogfood/dist/*.ipa
**/dogfood/dist/*.zip
test_ios:
name: Test iOS
needs: build_ios
timeout-minutes: 100
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/rn-bootstrap
timeout-minutes: 20
env:
INSTALL_NODE: true
INSTALL_PODS: true
INSTALL_PYTHON: true
INSTALL_MAESTRO: true
INSTALL_VIDEO_BUDDY: true
INSTALL_RN_DEPENDENCIES: true
INSTALL_IOS_PERMISSIONS: true
- name: Test
working-directory: sample-apps/react-native/dogfood
run: bundle exec fastlane test_ios
- uses: actions/upload-artifact@v3
if: failure()
with:
name: iOS Test Data
path: |
**/fastlane/recordings
**/fastlane/video-buddy-log.txt
~/.maestro/tests
deploy_ios:
name: Deploy iOS
needs: test_ios
timeout-minutes: 60
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/rn-bootstrap
timeout-minutes: 15
- name: Download .ipa
uses: actions/download-artifact@v3
with:
name: ipa
- name: Deploy
working-directory: sample-apps/react-native/dogfood
run: bundle exec fastlane deploy_ios
build_android:
name: Build Android
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/rn-bootstrap
timeout-minutes: 15
env:
INSTALL_NODE: true
INSTALL_JAVA: true
INSTALL_RN_DEPENDENCIES: true
- name: Test RN SDK
run: yarn test:react-native:sdk
- name: Build
working-directory: sample-apps/react-native/dogfood
run: bundle exec fastlane build_android
- name: Upload .apk
uses: actions/upload-artifact@v3
with:
name: apk
path: '**/dist/*.apk'
test_android:
name: Test Android
needs: build_android
timeout-minutes: 100
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/rn-bootstrap
timeout-minutes: 15
env:
INSTALL_NODE: true
INSTALL_FFMPEG: true
INSTALL_MAESTRO: true
INSTALL_VIDEO_BUDDY: true
INSTALL_ANDROID_EMULATOR: true
- name: Download .apk
uses: actions/download-artifact@v3
with:
name: apk
- name: Create AVD Snapshot
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 28
arch: x86_64
target: google_apis
profile: pixel_5
disable-animations: false
force-avd-creation: false
avd-name: test
ram-size: 8192M
disk-size: 2048M
emulator-boot-timeout: 1000
emulator-options: -no-window -no-boot-anim -no-audio -no-snapshot-load -gpu swiftshader_indirect
working-directory: sample-apps/react-native/dogfood
script: echo 'AVD snapshot is generated and will be cached for the future runs.'
- name: Test
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 28
arch: x86_64
target: google_apis
profile: pixel_5
disable-animations: true
force-avd-creation: false
avd-name: test
ram-size: 8192M
disk-size: 2048M
emulator-boot-timeout: 1000
emulator-options: -no-window -no-boot-anim -no-audio -no-snapshot-load -gpu swiftshader_indirect
working-directory: sample-apps/react-native/dogfood
script: bundle exec fastlane test_android
- uses: actions/upload-artifact@v3
if: failure()
with:
name: Android Test Data
path: |
**/fastlane/recordings
**/fastlane/video-buddy-log.txt
~/.maestro/tests
deploy_android:
name: Deploy Android
needs: test_android
timeout-minutes: 60
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/rn-bootstrap
timeout-minutes: 15
- name: Download .apk
uses: actions/download-artifact@v3
with:
name: apk
- name: Deploy
working-directory: sample-apps/react-native/dogfood
run: bundle exec fastlane deploy_android