diff --git a/.github/azure-pipelines.yml b/.github/azure-pipelines.yml deleted file mode 100644 index 32d6bd0b..00000000 --- a/.github/azure-pipelines.yml +++ /dev/null @@ -1,126 +0,0 @@ -trigger: -- main - -pr: -- main - -schedules: -- cron: "0 0 * * *" - displayName: Nightly Build - branches: - include: - - main - always: true - -variables: -- name: ndkVersion - value: 28.2.13676358 - -jobs: - # WIN32 - - template: jobs/win32.yml - parameters: - name: Win32_x86_Chakra - platform: win32 - jsEngine: Chakra - - - template: jobs/win32.yml - parameters: - name: Win32_x64_Chakra - platform: x64 - jsEngine: Chakra - - - template: jobs/win32.yml - parameters: - name: Win32_x64_JSI - platform: x64 - jsEngine: JSI - - - template: jobs/win32.yml - parameters: - name: Win32_x64_V8 - platform: x64 - jsEngine: V8 - - # UWP - - template: jobs/uwp.yml - parameters: - name: UWP_x64_Chakra - platform: x64 - jsEngine: Chakra - - - template: jobs/uwp.yml - parameters: - name: UWP_x64_JSI - platform: x64 - jsEngine: JSI - - - template: jobs/uwp.yml - parameters: - name: UWP_arm64_JSI - platform: arm64 - jsEngine: JSI - - - template: jobs/uwp.yml - parameters: - name: UWP_x64_V8 - platform: x64 - jsEngine: V8 - - # Android - - template: jobs/android.yml - parameters: - name: Android_JSC - jsEngine: JavaScriptCore - - - template: jobs/android.yml - parameters: - name: Android_V8 - jsEngine: V8 - - # macOS - - template: jobs/macos.yml - parameters: - name: 'macOS_Xcode164' - vmImage: 'macOS-latest' - xCodeVersion: 16.4 - - - template: jobs/macos.yml - parameters: - name: 'macOS_Xcode164_Sanitizers' - vmImage: 'macOS-latest' - xCodeVersion: 16.4 - enableSanitizers: true - - # iOS - - template: jobs/ios.yml - parameters: - name: 'iOS_Xcode164' - vmImage: 'macOS-latest' - xCodeVersion: 16.4 - simulator: 'iPhone 16' - - - template: jobs/ios.yml - parameters: - name: 'iOS_Xcode152' - vmImage: 'macOS-14' - xCodeVersion: 15.2 - simulator: 'iPhone 15' - - # Linux - - template: jobs/linux.yml - parameters: - name: Ubuntu_gcc - - - template: jobs/linux.yml - parameters: - name: Ubuntu_clang - CC: clang - CXX: clang++ - - - template: jobs/linux.yml - parameters: - name: Ubuntu_Sanitizers_clang - enableSanitizers: true - CC: clang - CXX: clang++ diff --git a/.github/jobs/android.yml b/.github/jobs/android.yml deleted file mode 100644 index 3e0c5bbe..00000000 --- a/.github/jobs/android.yml +++ /dev/null @@ -1,57 +0,0 @@ -parameters: -- name: name - type: string - default: '' -- name: jsEngine - type: string - default: '' - -jobs: -- job: ${{parameters.name}} - timeoutInMinutes: 30 - - pool: - vmImage: macos-14 - - steps: - - script: | - echo Install Android image - export JAVA_HOME=$JAVA_HOME_8_X64 - echo 'y' | $ANDROID_HOME/tools/bin/sdkmanager --install 'system-images;android-27;default;x86_64' - echo 'y' | $ANDROID_HOME/tools/bin/sdkmanager --licenses - echo Create AVD - $ANDROID_HOME/tools/bin/avdmanager create avd -n Pixel_API_27 -d pixel -k 'system-images;android-27;default;x86_64' - displayName: 'Install Android Emulator' - - - script: | - echo Start emulator - nohup $ANDROID_HOME/emulator/emulator -avd Pixel_API_27 -gpu host -no-window -no-audio -no-boot-anim 2>&1 & - echo Wait for emulator - $ANDROID_HOME/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do echo '.'; sleep 1; done' - $ANDROID_HOME/platform-tools/adb devices - displayName: 'Start Android Emulator' - - - task: Gradle@3 - inputs: - gradleWrapperFile: 'Tests/UnitTests/Android/gradlew' - workingDirectory: 'Tests/UnitTests/Android' - options: '-PabiFilters=x86_64 -PjsEngine=${{parameters.jsEngine}} -PndkVersion=$(ndkVersion)' - tasks: 'connectedAndroidTest' - jdkVersionOption: 1.17 - displayName: 'Run Connected Android Test' - - - script: | - find ./app/build/outputs/androidTest-results -name "*.txt" -print0 | while IFS= read -r -d '' file; do - echo "cat \"$file\"" - cat "$file" - done - workingDirectory: 'Tests/UnitTests/Android' - condition: succeededOrFailed() - displayName: 'Dump logcat from Test Results' - - - task: PublishBuildArtifacts@1 - inputs: - pathToPublish: 'Tests/UnitTests/Android/app/build/outputs/androidTest-results/connected' - artifactName: 'AndroidTestResults_${{parameters.jsEngine}}' - condition: succeededOrFailed() - displayName: 'Publish Test Results' diff --git a/.github/jobs/ios.yml b/.github/jobs/ios.yml deleted file mode 100644 index cab9a78e..00000000 --- a/.github/jobs/ios.yml +++ /dev/null @@ -1,43 +0,0 @@ -parameters: - name: '' - vmImage: '' - xCodeVersion: '' - simulator: '' - -jobs: -- job: ${{parameters.name}} - timeoutInMinutes: 30 - - pool: - vmImage: ${{parameters.vmImage}} - - steps: - - script: | - sudo xcode-select --switch /Applications/Xcode_${{parameters.xCodeVersion}}.app/Contents/Developer - displayName: 'Select XCode ${{parameters.xCodeVersion}}' - - - script: | - cmake -B Build/iOS -G Xcode -D IOS=ON - displayName: 'Configure CMake' - - - script: | - echo Boot "${{parameters.simulator}}" - xcrun simctl boot "${{parameters.simulator}}" - displayName: 'Boot Simulator' - - - task: Xcode@5 - inputs: - xcWorkspacePath: 'Build/iOS/JsRuntimeHost.xcodeproj' - scheme: 'UnitTests' - sdk: 'iphonesimulator' - useXcpretty: false - configuration: RelWithDebInfo - displayName: 'Build Xcode Project' - - - script: | - echo Install UnitTests app - xcrun simctl install booted "Build/iOS/Tests/UnitTests/RelWithDebInfo-iphonesimulator/UnitTests.app" - echo Launch UnitTests app - xcrun simctl launch --console booted "com.jsruntimehost.unittests" 2> /tmp/exitCode - (exit $(cat /tmp/exitCode)) - displayName: 'Run Tests' diff --git a/.github/jobs/linux.yml b/.github/jobs/linux.yml deleted file mode 100644 index 93a068c9..00000000 --- a/.github/jobs/linux.yml +++ /dev/null @@ -1,36 +0,0 @@ -parameters: - name: '' - enableSanitizers: false - CC: gcc - CXX: g++ - -jobs: -- job: ${{parameters.name}} - timeoutInMinutes: 15 - - pool: - vmImage: ubuntu-latest - - variables: - SANITIZER_FLAG: ${{ coalesce(replace(format('{0}', parameters.enableSanitizers), 'True', 'ON'), 'OFF') }} - - steps: - - script: | - sudo apt-get update - sudo apt-get install libjavascriptcoregtk-4.1-dev libcurl4-openssl-dev ninja-build clang - displayName: 'Install packages' - - - script: | - export CC=${{parameters.CC}} - export CXX=${{parameters.CXX}} - cmake -B Build/ubuntu -G Ninja -D CMAKE_BUILD_TYPE=RelWithDebInfo -D ENABLE_SANITIZERS=$(SANITIZER_FLAG) -D CMAKE_C_COMPILER=${{parameters.CC}} -D CMAKE_CXX_COMPILER=${{parameters.CXX}} - displayName: 'Configure CMake' - - - script: | - cd Build/ubuntu - ninja - displayName: 'Build Solution' - - - script: ./UnitTests - workingDirectory: 'Build/ubuntu/Tests/UnitTests' - displayName: 'Run Tests' diff --git a/.github/jobs/macos.yml b/.github/jobs/macos.yml deleted file mode 100644 index 01e029ee..00000000 --- a/.github/jobs/macos.yml +++ /dev/null @@ -1,37 +0,0 @@ -parameters: - name: '' - vmImage: '' - xCodeVersion: '' - enableSanitizers: false - -jobs: -- job: ${{parameters.name}} - timeoutInMinutes: 15 - - pool: - vmImage: ${{parameters.vmImage}} - - variables: - SANITIZER_FLAG: ${{ coalesce(replace(format('{0}', parameters.enableSanitizers), 'True', 'ON'), 'OFF') }} - - steps: - - script: | - sudo xcode-select --switch /Applications/Xcode_${{parameters.xCodeVersion}}.app/Contents/Developer - displayName: 'Select Xcode ${{parameters.xCodeVersion}}' - - - script: | - cmake -B Build/macOS -G Xcode -D ENABLE_SANITIZERS=$(SANITIZER_FLAG) - displayName: 'Configure CMake' - - - task: Xcode@5 - inputs: - xcWorkspacePath: 'Build/macOS/JsRuntimeHost.xcodeproj' - scheme: 'UnitTests' - sdk: 'macosx' - useXcpretty: false - configuration: RelWithDebInfo - displayName: 'Build Xcode Project' - - - script: ./UnitTests - workingDirectory: 'Build/macOS/Tests/UnitTests/RelWithDebInfo' - displayName: 'Run Tests' diff --git a/.github/jobs/uwp.yml b/.github/jobs/uwp.yml deleted file mode 100644 index d8f1d54c..00000000 --- a/.github/jobs/uwp.yml +++ /dev/null @@ -1,26 +0,0 @@ -parameters: -- name: name - type: string -- name: platform - type: string -- name: jsEngine - type: string - -jobs: -- job: ${{parameters.name}} - timeoutInMinutes: 15 - - pool: - vmImage: windows-latest - - steps: - - script: cmake -B Build/UWP -A ${{parameters.platform}} -D NAPI_JAVASCRIPT_ENGINE=${{parameters.jsEngine}} -D CMAKE_SYSTEM_NAME=WindowsStore -D CMAKE_SYSTEM_VERSION=10.0 - displayName: 'Configure CMake' - - - task: MSBuild@1 - inputs: - solution: 'Build/UWP/JsRuntimeHost.sln' - maximumCpuCount: true - configuration: 'RelWithDebInfo' - displayName: 'Build Solution' - diff --git a/.github/jobs/win32.yml b/.github/jobs/win32.yml deleted file mode 100644 index 2ea7a402..00000000 --- a/.github/jobs/win32.yml +++ /dev/null @@ -1,52 +0,0 @@ -parameters: -- name: name - type: string -- name: platform - type: string -- name: jsEngine - type: string - -jobs: -- job: ${{parameters.name}} - timeoutInMinutes: 15 - - pool: - vmImage: windows-latest - - steps: - - script: cmake -B Build/Win32 -A ${{parameters.platform}} -D NAPI_JAVASCRIPT_ENGINE=${{parameters.jsEngine}} - displayName: 'Configure CMake' - - - task: MSBuild@1 - inputs: - solution: 'Build/Win32/JsRuntimeHost.sln' - maximumCpuCount: true - configuration: 'RelWithDebInfo' - displayName: 'Build Solution' - - - script: | - reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\UnitTests.exe" - reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\UnitTests.exe" /v DumpType /t REG_DWORD /d 2 - reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\UnitTests.exe" /v DumpCount /t REG_DWORD /d 1 - reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\UnitTests.exe" /v DumpFolder /t REG_SZ /d "$(Build.ArtifactStagingDirectory)/Dumps" - displayName: 'Enable Crash Dumps' - - - script: UnitTests.exe - workingDirectory: 'Build/Win32/Tests/UnitTests/RelWithDebInfo' - displayName: 'Run Tests' - - - task: CopyFiles@2 - inputs: - sourceFolder: 'Build/Win32/Tests/UnitTests/RelWithDebInfo' - contents: UnitTests.* - targetFolder: '$(Build.ArtifactStagingDirectory)/Dumps' - cleanTargetFolder: false - displayName: 'Stage test app exe/pdb for publishing' - condition: failed() - - - task: PublishBuildArtifacts@1 - inputs: - artifactName: 'Crash Dumps' - pathtoPublish: '$(Build.ArtifactStagingDirectory)/Dumps' - displayName: 'Publish Tests Dumps' - condition: failed() \ No newline at end of file diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml new file mode 100644 index 00000000..9dd3a354 --- /dev/null +++ b/.github/workflows/build-android.yml @@ -0,0 +1,60 @@ +name: Build Android + +on: + workflow_call: + inputs: + js-engine: + required: true + type: string + +env: + NDK_VERSION: '28.2.13676358' + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '17' + + - name: Enable KVM + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + + - name: Run Connected Android Test + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: 33 + target: google_apis + arch: x86_64 + script: | + cd Tests/UnitTests/Android + chmod +x gradlew + ./gradlew connectedAndroidTest \ + -PabiFilters=x86_64 \ + -PjsEngine=${{ inputs['js-engine'] }} \ + -PndkVersion=${{ env.NDK_VERSION }} + + - name: Dump Test Results + if: always() + working-directory: Tests/UnitTests/Android + run: | + find ./app/build/outputs/androidTest-results -name "*.txt" -print0 | while IFS= read -r -d '' file; do + echo "cat \"$file\"" + cat "$file" + done + + - name: Upload Test Results + if: always() + uses: actions/upload-artifact@v4 + with: + name: AndroidTestResults_${{ inputs['js-engine'] }} + path: Tests/UnitTests/Android/app/build/outputs/androidTest-results/connected + if-no-files-found: ignore diff --git a/.github/workflows/build-ios.yml b/.github/workflows/build-ios.yml new file mode 100644 index 00000000..76df92d1 --- /dev/null +++ b/.github/workflows/build-ios.yml @@ -0,0 +1,45 @@ +name: Build iOS + +on: + workflow_call: + inputs: + xcode-version: + required: true + type: string + runs-on: + required: false + type: string + default: macos-latest + simulator: + required: true + type: string + +jobs: + build: + runs-on: ${{ inputs.runs-on }} + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + + - name: Select Xcode ${{ inputs.xcode-version }} + run: sudo xcode-select --switch /Applications/Xcode_${{ inputs.xcode-version }}.app/Contents/Developer + + - name: Configure CMake + run: cmake -B Build/iOS -G Xcode -D IOS=ON + + - name: Boot Simulator + run: xcrun simctl boot "${{ inputs.simulator }}" + + - name: Build + run: | + xcodebuild \ + -project Build/iOS/JsRuntimeHost.xcodeproj \ + -scheme UnitTests \ + -sdk iphonesimulator \ + -configuration RelWithDebInfo + + - name: Run Tests + run: | + xcrun simctl install booted "Build/iOS/Tests/UnitTests/RelWithDebInfo-iphonesimulator/UnitTests.app" + xcrun simctl launch --console booted "com.jsruntimehost.unittests" 2> /tmp/exitCode + (exit $(cat /tmp/exitCode)) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml new file mode 100644 index 00000000..6e76da7c --- /dev/null +++ b/.github/workflows/build-linux.yml @@ -0,0 +1,47 @@ +name: Build Linux + +on: + workflow_call: + inputs: + cc: + required: false + type: string + default: gcc + cxx: + required: false + type: string + default: g++ + enable-sanitizers: + required: false + type: boolean + default: false + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 15 + env: + CC: ${{ inputs.cc }} + CXX: ${{ inputs.cxx }} + steps: + - uses: actions/checkout@v4 + + - name: Install packages + run: | + sudo apt-get update + sudo apt-get install -y libjavascriptcoregtk-4.1-dev libcurl4-openssl-dev ninja-build clang + + - name: Configure CMake + run: | + cmake -B Build/ubuntu -G Ninja \ + -D CMAKE_BUILD_TYPE=RelWithDebInfo \ + -D ENABLE_SANITIZERS=${{ inputs.enable-sanitizers && 'ON' || 'OFF' }} \ + -D CMAKE_C_COMPILER=${{ inputs.cc }} \ + -D CMAKE_CXX_COMPILER=${{ inputs.cxx }} + + - name: Build + run: ninja -C Build/ubuntu + + - name: Run Tests + working-directory: Build/ubuntu/Tests/UnitTests + run: ./UnitTests diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml new file mode 100644 index 00000000..8e3c4817 --- /dev/null +++ b/.github/workflows/build-macos.yml @@ -0,0 +1,38 @@ +name: Build macOS + +on: + workflow_call: + inputs: + xcode-version: + required: true + type: string + runs-on: + required: false + type: string + default: macos-latest + enable-sanitizers: + required: false + type: boolean + default: false + +jobs: + build: + runs-on: ${{ inputs.runs-on }} + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + + - name: Select Xcode ${{ inputs.xcode-version }} + run: sudo xcode-select --switch /Applications/Xcode_${{ inputs.xcode-version }}.app/Contents/Developer + + - name: Configure CMake + run: | + cmake -B Build/macOS -G Xcode \ + -D ENABLE_SANITIZERS=${{ inputs.enable-sanitizers && 'ON' || 'OFF' }} + + - name: Build + run: cmake --build Build/macOS --target UnitTests --config RelWithDebInfo + + - name: Run Tests + working-directory: Build/macOS/Tests/UnitTests/RelWithDebInfo + run: ./UnitTests diff --git a/.github/workflows/build-uwp.yml b/.github/workflows/build-uwp.yml new file mode 100644 index 00000000..cc534947 --- /dev/null +++ b/.github/workflows/build-uwp.yml @@ -0,0 +1,28 @@ +name: Build UWP + +on: + workflow_call: + inputs: + platform: + required: true + type: string + js-engine: + required: true + type: string + +jobs: + build: + runs-on: windows-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + + - name: Configure CMake + run: > + cmake -B Build/UWP -A ${{ inputs.platform }} + -D NAPI_JAVASCRIPT_ENGINE=${{ inputs.js-engine }} + -D CMAKE_SYSTEM_NAME=WindowsStore + -D CMAKE_SYSTEM_VERSION=10.0 + + - name: Build Solution + run: cmake --build Build/UWP --config RelWithDebInfo -- /m diff --git a/.github/workflows/build-win32.yml b/.github/workflows/build-win32.yml new file mode 100644 index 00000000..d3bc0363 --- /dev/null +++ b/.github/workflows/build-win32.yml @@ -0,0 +1,52 @@ +name: Build Win32 + +on: + workflow_call: + inputs: + platform: + required: true + type: string + js-engine: + required: true + type: string + +jobs: + build: + runs-on: windows-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + + - name: Configure CMake + run: cmake -B Build/Win32 -A ${{ inputs.platform }} -D NAPI_JAVASCRIPT_ENGINE=${{ inputs.js-engine }} + + - name: Build Solution + run: cmake --build Build/Win32 --config RelWithDebInfo -- /m + + - name: Enable Crash Dumps + shell: cmd + run: | + reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\UnitTests.exe" /f + reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\UnitTests.exe" /v DumpType /t REG_DWORD /d 2 /f + reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\UnitTests.exe" /v DumpCount /t REG_DWORD /d 1 /f + reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\UnitTests.exe" /v DumpFolder /t REG_SZ /d "%RUNNER_TEMP%\Dumps" /f + + - name: Run Tests + shell: cmd + working-directory: Build/Win32/Tests/UnitTests/RelWithDebInfo + run: UnitTests.exe + + - name: Stage Test App for Crash Dumps + if: failure() + shell: powershell + run: | + New-Item -ItemType Directory -Force -Path "$env:RUNNER_TEMP\Dumps" | Out-Null + Copy-Item -Path "Build\Win32\Tests\UnitTests\RelWithDebInfo\UnitTests.*" -Destination "$env:RUNNER_TEMP\Dumps\" -ErrorAction SilentlyContinue + + - name: Upload Crash Dumps + if: failure() + uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.platform }}-${{ inputs.js-engine }}-crash-dumps + path: ${{ runner.temp }}/Dumps/ + if-no-files-found: ignore diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..390fd614 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,116 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + # ── Win32 ───────────────────────────────────────────────────── + Win32_x86_Chakra: + uses: ./.github/workflows/build-win32.yml + with: + platform: win32 + js-engine: Chakra + + Win32_x64_Chakra: + uses: ./.github/workflows/build-win32.yml + with: + platform: x64 + js-engine: Chakra + + Win32_x64_JSI: + uses: ./.github/workflows/build-win32.yml + with: + platform: x64 + js-engine: JSI + + Win32_x64_V8: + uses: ./.github/workflows/build-win32.yml + with: + platform: x64 + js-engine: V8 + + # ── UWP ─────────────────────────────────────────────────────── + UWP_x64_Chakra: + uses: ./.github/workflows/build-uwp.yml + with: + platform: x64 + js-engine: Chakra + + UWP_x64_JSI: + uses: ./.github/workflows/build-uwp.yml + with: + platform: x64 + js-engine: JSI + + UWP_arm64_JSI: + uses: ./.github/workflows/build-uwp.yml + with: + platform: arm64 + js-engine: JSI + + UWP_x64_V8: + uses: ./.github/workflows/build-uwp.yml + with: + platform: x64 + js-engine: V8 + + # ── Android ─────────────────────────────────────────────────── + # TODO: Re-enable when Android emulator works reliably on GitHub Actions runners. + # Android_JSC: + # uses: ./.github/workflows/build-android.yml + # with: + # js-engine: JavaScriptCore + + # Android_V8: + # uses: ./.github/workflows/build-android.yml + # with: + # js-engine: V8 + + # ── macOS ───────────────────────────────────────────────────── + macOS_Xcode164: + uses: ./.github/workflows/build-macos.yml + with: + xcode-version: '16.4' + runs-on: macos-latest + + macOS_Xcode164_Sanitizers: + uses: ./.github/workflows/build-macos.yml + with: + xcode-version: '16.4' + runs-on: macos-latest + enable-sanitizers: true + + # ── iOS ─────────────────────────────────────────────────────── + iOS_Xcode164: + uses: ./.github/workflows/build-ios.yml + with: + xcode-version: '16.4' + runs-on: macos-latest + simulator: 'iPhone 16' + + iOS_Xcode152: + uses: ./.github/workflows/build-ios.yml + with: + xcode-version: '15.2' + runs-on: macos-14 + simulator: 'iPhone 15' + + # ── Linux ───────────────────────────────────────────────────── + Ubuntu_gcc: + uses: ./.github/workflows/build-linux.yml + + Ubuntu_clang: + uses: ./.github/workflows/build-linux.yml + with: + cc: clang + cxx: clang++ + + Ubuntu_Sanitizers_clang: + uses: ./.github/workflows/build-linux.yml + with: + cc: clang + cxx: clang++ + enable-sanitizers: true diff --git a/README.md b/README.md index 3faf3b19..cbe25f0f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://dev.azure.com/babylonjs/ContinousIntegration/_apis/build/status/JsRuntimeHost%20CI?branchName=main)](https://dev.azure.com/babylonjs/ContinousIntegration/_build/latest?definitionId=22&branchName=main) +[![CI](https://github.com/BabylonJS/JsRuntimeHost/actions/workflows/ci.yml/badge.svg)](https://github.com/BabylonJS/JsRuntimeHost/actions/workflows/ci.yml) # JavaScript Runtime Host The JsRuntimeHost is a library that provides cross-platform C++ JavaScript hosting for