Build system with RNTA for RN 0.73+ #1852
Workflow file for this run
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: 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-2019 | |
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 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 -G "Visual Studio 16 2019" -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 }} |