feat: Codec Negotiation #5167
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: React Native Dogfood Release | |
env: | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
GOOGLE_APPLICATION_CREDENTIALS: '/home/runner/rn-samples-google-services.json' | |
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 }} | |
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 }} | |
RN_DOGFOOD_ANDROID_KEYSTORE: '/home/runner/stream-video-calls-rn.keystore' | |
RN_DOGFOOD_ANDROID_KEYSTORE_PASSWORD: ${{ secrets.RN_DOGFOOD_ANDROID_KEYSTORE_PASSWORD }} | |
RN_DOGFOOD_ANDROID_KEYSTORE_ALIAS: ${{ secrets.RN_DOGFOOD_ANDROID_KEYSTORE_ALIAS }} | |
RN_DOGFOOD_ANDROID_DEPLOY_SERVICE_ACCOUNT: '/home/runner/service-account.json' | |
FASTLANE_SKIP_UPDATE_CHECK: 1 | |
REACT_NATIVE_DOGFOOD_APP_ENVIRONMENT: 'demo' | |
on: | |
push: | |
tags: | |
- '@stream-io/video-react-native-dogfood-*' | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
- reopened | |
paths: | |
- '.github/workflows/react-native-workflow.yml' | |
- 'sample-apps/react-native/dogfood/**' | |
- 'packages/client/**' | |
- 'packages/react-bindings/**' | |
- 'packages/react-native-sdk/**' | |
- 'packages/video-filters-react-native/**' | |
- '!**.md' | |
workflow_dispatch: | |
concurrency: | |
group: react-native-workflow-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
code_review: | |
name: Code Lint, Unit Test and dogfood versioning | |
timeout-minutes: 20 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- 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 | |
- name: Test RN SDK (Unit tests only) | |
run: yarn test:react-native:sdk | |
build_ios: | |
name: Build iOS | |
timeout-minutes: 60 | |
needs: code_review | |
runs-on: macos-14 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/rn-bootstrap | |
timeout-minutes: 20 | |
env: | |
INSTALL_NODE: true | |
INSTALL_PODS: true | |
INSTALL_RN_DEPENDENCIES: true | |
- 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 | |
if: ${{ github.ref == 'refs/heads/main' }} | |
timeout-minutes: 100 | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- 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 | |
- 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: build_ios | |
timeout-minutes: 60 | |
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/use-vp8-on-ios' }} | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- 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 | |
needs: code_review | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/rn-bootstrap | |
timeout-minutes: 15 | |
env: | |
INSTALL_NODE: true | |
INSTALL_JAVA: true | |
INSTALL_RN_DEPENDENCIES: true | |
- name: Create Google Services JSON File | |
env: | |
DATA: ${{ secrets.GOOGLE_SERVICES_JSON_RN_SAMPLES_DEPLOYMENT }} | |
run: echo $DATA > ~/rn-samples-google-services.json | |
shell: bash | |
- name: Create Google Service Account for Play Store Deployment | |
env: | |
DATA: ${{ secrets.RN_DOGFOOD_ANDROID_DEPLOY_SERVICE_ACCOUNT_BASE64 }} | |
run: echo $DATA | base64 --decode | jq > ~/service-account.json | |
shell: bash | |
- name: Create Keystore Signing for Play Store Deployment | |
env: | |
DATA: ${{ secrets.RN_DOGFOOD_ANDROID_KEYSTORE_BASE64 }} | |
run: echo $DATA | base64 -d > ~/stream-video-calls-rn.keystore | |
shell: bash | |
- name: Build | |
working-directory: sample-apps/react-native/dogfood | |
run: bundle exec fastlane build_android_play_store | |
- name: Upload .apk | |
uses: actions/upload-artifact@v3 | |
with: | |
name: apk | |
path: '**/dist/*.apk' | |
- name: Upload .aab | |
uses: actions/upload-artifact@v3 | |
with: | |
name: aab | |
path: '**/dist/*.aab' | |
test_android: | |
name: Test Android | |
needs: build_android | |
timeout-minutes: 100 | |
if: ${{ github.ref == 'refs/heads/main' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- 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: build_android | |
timeout-minutes: 60 | |
if: ${{ github.ref == 'refs/heads/main' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/rn-bootstrap | |
timeout-minutes: 15 | |
- name: Download .aab | |
uses: actions/download-artifact@v3 | |
with: | |
name: aab | |
- name: Create Google Service Account for Play Store Deployment | |
env: | |
DATA: ${{ secrets.RN_DOGFOOD_ANDROID_DEPLOY_SERVICE_ACCOUNT_BASE64 }} | |
run: echo $DATA | base64 --decode | jq > ~/service-account.json | |
shell: bash | |
- name: Deploy | |
working-directory: sample-apps/react-native/dogfood | |
run: bundle exec fastlane deploy_android_play_store |