Skip to content

Add github actions

Add github actions #1

Workflow file for this run

name: Android
on:
push:
branches:
- main
pull_request:
jobs:
build:
runs-on: macos-12
strategy:
matrix:
working-directory: [package/example]
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
- 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: 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: Download Dawn Binary Artifacts
uses: dawidd6/action-download-artifact@v2
with:
workflow: "build-dawn.yml"
repo: wcandillon/react-native-webgpu
path: artifacts
branch: main
- name: Install Package
working-directory: package
run: yarn install --frozen-lockfile
- name: Copy Artifacts to libs folder
working-directory: package
run: yarn copy-artifacts
- name: SDKs - accept licenses
run: y | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
- 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