Skip to content

Implement SVG support for Web #2040

Implement SVG support for Web

Implement SVG support for Web #2040

Workflow file for this run

name: Android
on:
push:
branches:
- main
pull_request:
jobs:
build:
runs-on: macos-12
strategy:
matrix:
working-directory: [example, fabricexample]
timeout-minutes: 55
concurrency:
group: android-example-${{ matrix.working-directory }}-${{ github.ref }}
cancel-in-progress: true
steps:
- name: checkout
uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions/setup-node@v3
with:
node-version: 16
cache: 'yarn'
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: '11'
- name: Install NDK
uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r21d
- name: Set ANDROID_NDK
run: echo "ANDROID_NDK=$ANDROID_HOME/ndk-bundle" >> $GITHUB_ENV
- name: Install root node dependencies
run: yarn
- name: Download Skia Binary Artifacts
uses: dawidd6/action-download-artifact@v2
with:
workflow: "build-skia.yml"
repo: shopify/react-native-skia
path: artifacts
branch: main
- name: Copy Artifacts to libs folder
run: yarn workflow-copy-libs
- name: Copy Skia Headers
run: yarn copy-skia-headers
- name: SDKs - accept licenses
run: y | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
- name: Install Package
working-directory: package
run: yarn install
- name: Install example app node dependencies
working-directory: ${{ matrix.working-directory }}
run: yarn
- name: Cache hermes build
uses: actions/cache@v3
env:
cache-name: cache-rn-hermes-engine
with:
path: ${{ matrix.working-directory }}/node_modules/react-native
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.working-directory }}-${{ hashFiles('**/react-native/package.json') }}
- name: Cache android libraries
uses: actions/cache@v3
env:
cache-name: cache-rn
with:
path: ${{ matrix.working-directory }}/android/app/build
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.working-directory }}-${{ hashFiles('**/react-native/package.json') }}
- name: Build Android app
working-directory: ${{ matrix.working-directory }}/android
run: ./gradlew assembleDebug
- name: Cache apk
uses: actions/cache/save@v3
env:
cache-name: cache-apk
with:
path: ${{ matrix.working-directory }}/android/app/build/outputs/apk/debug/app-debug.apk
key: apk-${{ github.sha }}
test:
needs: build
runs-on: macos-12
strategy:
matrix:
working-directory: [example, fabricexample]
concurrency:
group: android-example-${{ matrix.working-directory }}-${{ github.ref }}
cancel-in-progress: true
steps:
- name: checkout
uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions/setup-node@v3
with:
node-version: 16
cache: 'yarn'
- name: Install root dependencies
run: yarn bootstrap
- name: Restore APK
id: cache-apk
uses: actions/cache/restore@v3
with:
path: ${{ matrix.working-directory }}/android/app/build/outputs/apk/debug/app-debug.apk
key: apk-${{ github.sha }}
- name: SKDs - download required images
run: $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "system-images;android-30;default;x86_64"
- name: Emulator - Create
run: $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager create avd -n Pixel_API_30 --device 'Nexus 5X' --package "system-images;android-30;default;x86_64" --sdcard 512M
- name: Emulator - Boot
run: $ANDROID_HOME/emulator/emulator -memory 4096 -avd Pixel_API_30 -wipe-data -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim &
- name: ADB Wait For Device
run: adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;'
timeout-minutes: 10
- name: Reverse TCP
working-directory: ${{ matrix.working-directory }}
run: yarn android-reverse-tcp
- name: Start Package Manager
working-directory: ${{ matrix.working-directory }}
run: E2E=true yarn start &
- name: Check APK existence
uses: andstor/file-existence-action@v2
with:
files: ${{ matrix.working-directory }}/android/app/build/outputs/apk/debug/app-debug.apk
fail: true
- name: Install APK
run: adb install -r ${{ matrix.working-directory }}/android/app/build/outputs/apk/debug/app-debug.apk
# - name: Set up environment
# run: echo "PACKAGE_NAME=${{ env.PACKAGE_NAME }}" >> $GITHUB_ENV
- name: Launch APK
env:
PACKAGE_NAME: ${{ matrix.working-directory == 'fabricexample' && 'com.fabricexample' || 'com.rnskia' }}
run: adb shell monkey -p ${{ env.PACKAGE_NAME }} 1
# On fabric, the system fonts are slightly different
# so wont run the paragraph tests there for now
- name: Run e2e Tests
working-directory: package
run: |
if [ "${{ matrix.working-directory }}" = "example" ]; then
CI=true yarn e2e
elif [ "${{ matrix.working-directory }}" = "fabricexample" ]; then
CI=true yarn e2e --testPathIgnorePatterns Paragraphs
fi
- uses: actions/upload-artifact@v2
if: failure()
with:
path: package/src/__tests__/snapshots/
name: ${{ matrix.working-directory }}-snapshots-screenshots
- uses: actions/upload-artifact@v2
if: failure()
with:
path: docs/static
name: ${{ matrix.working-directory }}-docs-screenshots