Skip to content

Build system with RNTA for RN 0.73+ #1856

Build system with RNTA for RN 0.73+

Build system with RNTA for RN 0.73+ #1856

Workflow file for this run

name: PR Build
on:
pull_request:
branches:
- master
jobs:
# build-ios-android-rnta:
# runs-on: macos-latest
# strategy:
# matrix:
# platform: [ios, android]
# react-native-version: ['0.73']
# steps:
# - name: Checkout Repo
# uses: actions/checkout@v4.2.0
# - name: Setup CMake
# uses: jwlawson/actions-setup-cmake@v2.0.2
# with:
# cmake-version: '3.26.3'
# - name: Setup Ninja
# run: brew install ninja
# - name: Setup Watchman
# run: brew install watchman
# - name: Free space
# uses: ./.github/workflows/macos_freespace
# - name: Set React-Native version ${{ matrix.react-native-version }}
# run: npm run set-react-version -- ${{ matrix.react-native-version }}
# working-directory: ./Apps/BRNPlayground
# - name: NPM Install (BRNPlayground)
# run: npm install
# working-directory: ./Apps/BRNPlayground
#
# - name: Build Bundle
# run: npm run build:${{ matrix.platform }}
# working-directory: ./Apps/BRNPlayground
#
# - name: NPM Install (Binary Package)
# run: npm install
# working-directory: ./Package
# - name: Setup Java
# uses: actions/setup-java@v4.4.0
# with:
# distribution: 'temurin'
# java-version: '17'
# check-latest: true
# - name: Gulp ${{ matrix.platform }}
# run: npx gulp build${{ matrix.platform }}RNTA
# working-directory: ./Package
# env:
# JAVA_HOME: ${{ env.JAVA_HOME_11_X64 }}
android-ios-rnta:
runs-on: macos-latest
strategy:
matrix:
react-native-version: ['0.73', '0.74']
platform: ['android', 'ios']
steps:
- name: Checkout Repo
uses: actions/checkout@v4.2.0
- name: Setup CMake
uses: jwlawson/actions-setup-cmake@v2.0.2
with:
cmake-version: '3.26.3'
- name: Setup Ninja
run: brew install ninja
- name: Setup Watchman
run: brew install watchman
# - name: Free space
# uses: ./.github/workflows/macos_freespace
- name: Set React-Native version ${{ matrix.react-native-version }}
run: npm run set-react-version -- ${{ matrix.react-native-version }}
working-directory: ./Apps/BRNPlayground
- name: NPM Install (BRNPlayground)
run: npm install
working-directory: ./Apps/BRNPlayground
- name: Build Bundle ${{ matrix.platform }}
run: npm run build:${{ matrix.platform }}
working-directory: ./Apps/BRNPlayground
- name: NPM Install (Binary Package)
run: npm install
working-directory: ./Package
- name: Setup Java
uses: actions/setup-java@v4.4.0
with:
distribution: 'temurin'
java-version: '17'
check-latest: true
- name: Gulp build ${{ matrix.platform }}
run: npx gulp buildRNTA${{ matrix.platform }}
working-directory: ./Package
env:
JAVA_HOME: ${{ env.JAVA_HOME_11_X64 }}
# - name: Build iOS App
# if: ${{ matrix.platform == 'ios' }}
# run: |
# xcodebuild -sdk iphonesimulator -arch x86_64 -configuration Release -workspace BRNPlayground.xcworkspace -scheme ReactTestApp build CODE_SIGNING_ALLOWED=NO -archivePath ./playgroundSimulator.xcarchive archive
# working-directory: ./Apps/BRNPlayground/ios
- name: Display structure
run: ls -R
- name: Upload Assembled ${{ matrix.platform }} Folder
uses: actions/upload-artifact@v4
with:
name: 'Assembled-${{ matrix.platform }}${{ matrix.react-native-version }}'
path: Package/Assembled-iOSAndroid
- name: Upload Assembled ${{ matrix.platform }} BaseKit Folder
uses: actions/upload-artifact@v4
with:
name: 'Assembled-BaseKit-${{ matrix.platform }}${{ matrix.react-native-version }}'
path: Package/Assembled-BaseKit-iOSAndroid
- name: Cache XCFrameworks
uses: actions/cache@v2
if: ${{ matrix.platform == 'ios' }}
with:
path: Modules/@babylonjs/react-native-iosandroid/ios/libs
key: ${{ runner.os }}-xcframeworks-${{ github.sha }}
restore-keys: |
${{ runner.os }}-xcframeworks
- name: Upload APK
uses: actions/upload-artifact@v4
if: ${{ matrix.platform == 'android' }}
with:
name: 'AndroidAPK${{ matrix.react-native-version }}'
path: ./Apps/BRNPlayground/apk
- name: Upload iOS App
uses: actions/upload-artifact@v4
if: ${{ matrix.platform == 'ios' }}
with:
name: 'iOSApp${{ matrix.react-native-version }}'
path: Apps/BRNPlayground/ios/
build-typescript:
uses: ./.github/workflows/typescript.yml
with:
release-version: 0.0.${GITHUB_SHA::8}
windows-rnta:
runs-on: windows-2022
strategy:
matrix:
platform: [x64, ARM64]
config: [Debug, Release]
react-native-version: ['0.73', '0.74']
basekit: ['', '-BaseKit']
steps:
- name: Support longpaths
run: git config --system core.longpaths true
- name: Checkout Repo
uses: actions/checkout@v4.2.0
with:
submodules: 'true'
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Setup Node 20
uses: actions/setup-node@v4.0.4
with:
node-version: 20
- name: Install 10.0.18362.0 Windows SDK
run: |
$sdkVersion = '10.0.18362.0'
$installerUrl = "https://go.microsoft.com/fwlink/p/?linkid=2120843&clcid=0x409&Culture=en-US&country=US&Consent=0&callingAppTelemetryId=0&passive=false&dest=https://go.microsoft.com/fwlink/?linkid=2120843"
Invoke-WebRequest -Uri $installerUrl -OutFile 'winsdksetup.exe'
Start-Process -FilePath 'winsdksetup.exe' -ArgumentList "/features OptionId.WindowsDesktopSoftwareDevelopmentKit OptionId.WindowsSoftwareDevelopmentKit, /quiet" -Wait
- name: Install watchman
run: choco install watchman
working-directory: ./Apps/BRNPlayground
- name: Set React-Native version ${{ matrix.react-native-version }}
run: npm run set-react-version -- ${{ matrix.react-native-version }}
working-directory: ./Apps/BRNPlayground
- name: NPM Install RNTA
run: npm install
working-directory: ./Apps/BRNPlayground
- name: Build Windows Bundle
run: npm run build:windows
working-directory: ./Apps/BRNPlayground
- name: NPM Install Package
run: npm install
working-directory: ./Package
- name: NPM Generate Windows Project
run: npx install-windows-test-app
working-directory: ./Apps/BRNPlayground
- name: BabylonNative build directory
run: mkdir @babylonjs/react-native/Build/uwp_${{ matrix.platform }}
working-directory: ./Modules
- name: CMake BabylonNative
run: cmake -D CMAKE_SYSTEM_NAME=WindowsStore -D CMAKE_SYSTEM_VERSION=10.0.19041.0 -DCMAKE_UNITY_BUILD=true -D CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM=10.0.19041.0 -A ${{ matrix.platform == 'x86' && 'win32' || matrix.platform}} ${{ matrix.basekit == '-BaseKit' && '-DBASEKIT_BUILD=1' || matrix.basekit}} ./../../../react-native-windows/windows
working-directory: ./Modules/@babylonjs/react-native/Build/uwp_${{ matrix.platform }}
- name: Nuget restore
run: nuget restore BRNPlayground.sln
working-directory: ./Apps/BRNPlayground/windows
- name: Windows build BN ${{ matrix.platform }} ${{ matrix.config }}
run: MSBuild /p:Platform="${{ matrix.platform == 'x86' && 'win32' || matrix.platform}}" /p:Configuration="${{ matrix.config }}" /m ReactNativeBabylon.sln
working-directory: ./Modules/@babylonjs/react-native/Build/uwp_${{ matrix.platform }}
- name: Windows build BRN ${{ matrix.platform }} ${{ matrix.config }}
run: MSBuild /p:Platform="${{ matrix.platform == 'x86' && 'win32' || matrix.platform}}" /p:Configuration="${{ matrix.config }}" ${{ matrix.basekit == '-BaseKit' && '/p:BASEKIT_BUILD=1' || matrix.basekit}} /m BRNPlayground.sln
working-directory: ./Apps/BRNPlayground/windows
- name: Gulp build ${{ matrix.platform }}
run: npx gulp package${{ matrix.platform }}${{ matrix.config }}${{ matrix.basekit == '-BaseKit' && 'BaseKit' || matrix.basekit}}RNTA
working-directory: ./Package
- name: Display structure
run: ls -R
- name: Upload Assembled ${{ matrix.platform }} Folder
uses: actions/upload-artifact@v4
with:
name: 'Assembled${{ matrix.basekit }}-Windows${{ matrix.react-native-version }}-${{ matrix.platform }}${{ matrix.config }}'
path: Package/Assembled-Windows
- name: Upload Windows App
uses: actions/upload-artifact@v4
with:
name: 'WindowsApp${{ matrix.basekit }}${{ matrix.react-native-version }}-${{ matrix.platform }}${{ matrix.config }}'
path: Apps/BRNPlayground/windows/AppPackages/ReactTestApp
publish-react-native:
needs: [build-typescript, android-ios-rnta, windows-rnta]
runs-on: macos-latest
strategy:
matrix:
react-native-version: ['0.73', '0.74']
steps:
- name: Checkout Repo
uses: actions/checkout@v4.2.0
- name: NPM Install (Binary Package)
run: npm install
working-directory: ./Package
- name: Download Assembled Folder
uses: actions/download-artifact@v4
with:
name: 'Assembled'
path: Package/Assembled
- name: Display structure of downloaded Assembled and Assembled-Windows folders
run: ls -R
- name: Version & Publish Package @babylonjs/react-native
run: |
npm version --no-git-tag-version 10.0.0
npm publish --access public --dry-run
working-directory: ./Package/Assembled
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
publish-android-ios:
needs: [build-typescript, android-ios-rnta, windows-rnta]
runs-on: macos-latest
strategy:
matrix:
react-native-version: ['0.73', '0.74']
basekit: ['', '-BaseKit']
steps:
- name: Checkout Repo
uses: actions/checkout@v4.2.0
- name: NPM Install (Binary Package)
run: npm install
working-directory: ./Package
- name: Download Assembled${{ matrix.basekit }}-android ${{ matrix.react-native-version }} Folder
uses: actions/download-artifact@v4
with:
name: 'Assembled${{ matrix.basekit }}-android${{ matrix.react-native-version }}'
path: Package/Assembled
merge-multiple: true
- name: Download Assembled${{ matrix.basekit }}-ios ${{ matrix.react-native-version }} Folder
uses: actions/download-artifact@v4
with:
name: 'Assembled${{ matrix.basekit }}-ios${{ matrix.react-native-version }}'
path: Package/Assembled
merge-multiple: true
- name: Display structure of downloaded Assembled folder
run: ls -R
- name: Version & Publish Package @babylonjs/react-native${{ matrix.basekit }}-iosandroid
run: |
npm version --no-git-tag-version 10.0.0
npm publish --access public --dry-run
working-directory: ./Package/Assembled
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
publish-windows:
needs: [build-typescript, android-ios-rnta, windows-rnta]
runs-on: macos-latest
strategy:
matrix:
react-native-version: ['0.73', '0.74']
basekit: ['', '-BaseKit']
steps:
- name: Checkout Repo
uses: actions/checkout@v4.2.0
- name: NPM Install (Binary Package)
run: npm install
working-directory: ./Package
- name: Download Assembled${{ matrix.basekit }}-Windows ${{ matrix.react-native-version }} x64Debug Folder
uses: actions/download-artifact@v4
with:
name: 'Assembled${{ matrix.basekit }}-Windows${{ matrix.react-native-version }}-x64Debug'
path: Package/Assembled
merge-multiple: true
- name: Download Assembled${{ matrix.basekit }}-Windows ${{ matrix.react-native-version }} x64Release Folder
uses: actions/download-artifact@v4
with:
name: 'Assembled${{ matrix.basekit }}-Windows${{ matrix.react-native-version }}-x64Release'
path: Package/Assembled
merge-multiple: true
- name: Download Assembled${{ matrix.basekit }}-Windows ${{ matrix.react-native-version }} ARM64Debug Folder
uses: actions/download-artifact@v4
with:
name: 'Assembled${{ matrix.basekit }}-Windows${{ matrix.react-native-version }}-ARM64Debug'
path: Package/Assembled
merge-multiple: true
- name: Download Assembled${{ matrix.basekit }}-Windows ${{ matrix.react-native-version }} ARM64Release Folder
uses: actions/download-artifact@v4
with:
name: 'Assembled${{ matrix.basekit }}-Windows${{ matrix.react-native-version }}-ARM64Release'
path: Package/Assembled
merge-multiple: true
- name: Display structure of downloaded Assembled folder
run: ls -R
- name: Version & Publish Package @babylonjs/react-native${{ matrix.basekit }}-windows
run: |
npm version --no-git-tag-version 10.0.0
npm publish --access public --dry-run
working-directory: ./Package/Assembled
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}