Skip to content

Fix / update scripts used for versions (#125) #58

Fix / update scripts used for versions (#125)

Fix / update scripts used for versions (#125) #58

Workflow file for this run

name: Release
on:
push:
tags:
- '*' # Push events to matching *, i.e. 1.0, 20.15.10
- "!test*"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test_js:
name: Testing JS
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Cache node dependencies
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install dependencies
run: yarn install
- name: Run JS tests
run: yarn test
test_android:
name: Testing Android
needs: test_js
runs-on: ubuntu-latest
defaults:
run:
working-directory: testApp
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Cache node dependencies
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install dependencies
run: yarn install
- name: Cache Gradle Wrapper
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
- name: Cache Gradle Dependencies
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-caches-
- name: Make Gradlew Executable
run: cd android && chmod +x ./gradlew
- name: Build Android App
run: |
npx react-native bundle --platform android --dev false --entry-file index.tsx --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
cd android && ./gradlew assembleDebug --no-daemon
- name: Upload Android App APK
uses: actions/upload-artifact@v4
with:
name: app-debug.apk
path: testApp/android/app/build/outputs/apk/debug/app-debug.apk
- name: Build Android Test
run: |
cd android && ./gradlew :app:assembleDebugAndroidTest --no-daemon
- name: Upload Android Test APK
uses: actions/upload-artifact@v4
with:
name: app-debug-androidTest.apk
path: testApp/android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk
# Authenticate Cloud SDK
- id: 'auth'
uses: 'google-github-actions/auth@v2'
with:
credentials_json: ${{ secrets.GCP_CREDENTIALS }}
- name: Setup Cloud SDK
uses: google-github-actions/setup-gcloud@v2
with:
project_id: ${{ secrets.FIREBASE_PROJECT_ID }}
- name: Run Instrumentation Tests in Firebase Test Lab
run: |
gcloud firebase test android run --type instrumentation \
--app android/app/build/outputs/apk/debug/app-debug.apk \
--test android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk \
--use-orchestrator \
--device model=MediumPhone.arm,version=33,locale=en,orientation=portrait \
--num-flaky-test-attempts=3
test_ios:
name: Testing iOS
needs: test_js
runs-on: macos-12
defaults:
run:
working-directory: testApp
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: 'https://registry.npmjs.org'
- name: Cache node dependencies
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install dependencies
run: yarn install
- name: Install pods
run: cd ios && pod install
- name: Run iOS Tests
run: |
cp index.tsx index.js
npx react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios/assets
rm index.js
cd ios && TEST=1 && RCT_NO_LAUNCH_PACKAGER=1 xcodebuild \
-workspace DidomiExample.xcworkspace \
-scheme DidomiExample \
-sdk iphonesimulator \
-destination "platform=iOS Simulator,name=iPhone 11" \
clean test
release:
name: Create Release
needs: [ test_ios, test_android ]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set Android SDK version as ENV
run: |
echo "android_sdk_version=$(sh .github/scripts/extract_android_sdk_version.sh)" >> $GITHUB_ENV
- name: Print Android SDK Version
run: |
echo "Android SDK version is: ${{ env.android_sdk_version }}"
- name: Set iOS SDK version as ENV
run: |
echo "ios_sdk_version=$(sh .github/scripts/extract_ios_sdk_version.sh)" >> $GITHUB_ENV
- name: Print iOS SDK Version
run: |
echo "iOS SDK version is: ${{ env.ios_sdk_version }}"
- name: Set React Native version as ENV
run: |
echo "rn_version=$(sh .github/scripts/extract_version.sh)" >> $GITHUB_ENV
- name: Print React Native Version
run: |
echo "React Native version is: ${{ env.rn_version }}"
- name: Create Release
uses: actions/github-script@v6
with:
github-token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} # Use custom token to trigger following workflows
script: |
github.rest.repos.createRelease({
owner: context.repo.owner,
repo: context.repo.repo,
name: "${{ env.rn_version }}",
tag_name: "${{ env.rn_version }}",
draft: false,
prerelease: false,
body: "- Update latest versions of native Android (${{ env.android_sdk_version }}) and iOS (${{ env.ios_sdk_version }}) sdks\n\nMore info: https://developers.didomi.io/cmp/mobile-sdk"
});