Build system with RNTA for RN 0.73+ #1861
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/[email protected] | |
# - name: Setup CMake | |
# uses: jwlawson/[email protected] | |
# 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/[email protected] | |
# 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/[email protected] | |
- name: Setup CMake | |
uses: jwlawson/[email protected] | |
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/[email protected] | |
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/[email protected] | |
with: | |
submodules: 'true' | |
- name: Setup MSBuild | |
uses: microsoft/setup-msbuild@v2 | |
- name: Setup Node 20 | |
uses: actions/[email protected] | |
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: RNPermissions Patch test | |
run: Copy-Item -Path "RNPermissions.vcxproj" -Destination "Apps\BRNPlayground\node_modules\react-native-permissions\windows\RNPermissions\RNPermissions.vcxproj" -Force | |
working-directory: ./ | |
- 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.22621.0 -DCMAKE_UNITY_BUILD=true -D CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM=10.0.22621.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/[email protected] | |
- 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/[email protected] | |
- 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/[email protected] | |
- 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 }} |