diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a819485917e..edbcb7f2e2a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,21 +47,18 @@ jobs: - name: Install dependencies run: |- sudo apt update - sudo apt install -y git openssh-client cmake build-essential \ - libreadline-dev libicu-dev zip python3 + yes | sdkmanager "cmake;3.22.1" & + sudo apt update && sudo apt install -y libicu-dev - uses: actions/checkout@v4.1.0 with: path: hermes - name: Build linux CLI run: |- - cmake -S hermes -B build_hdb -DHERMES_STATIC_LINK=ON -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS=-s -DCMAKE_C_FLAGS=-s \ - -DCMAKE_EXE_LINKER_FLAGS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" - cmake -S hermes -B build -DHERMES_STATIC_LINK=ON -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS=-s -DCMAKE_C_FLAGS=-s \ - -DCMAKE_EXE_LINKER_FLAGS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" \ - -DHERMES_ENABLE_DEBUGGER=False - cmake --build build_hdb --target hdb + #cmake -S hermes -B build_hdb -DHERMES_STATIC_LINK=ON -DCMAKE_BUILD_TYPE=Release \ + # -DCMAKE_CXX_FLAGS=-s -DCMAKE_C_FLAGS=-s \ + # -DCMAKE_EXE_LINKER_FLAGS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + cmake -S hermes -B build + #cmake --build build_hdb --target hdb cmake --build build --target check-hermes hermes hvm hbcdump hermesc - name: Create CLI tarball run: |- @@ -81,7 +78,7 @@ jobs: steps: - uses: maxim-lobanov/setup-xcode@v1.6.0 with: - xcode-version: 13.4.1 + xcode-version: 14.3.1 - uses: actions/checkout@v4.1.0 with: path: hermes @@ -109,7 +106,7 @@ jobs: name: macos-hermes path: output build-apple-runtime: - runs-on: macos-latest + runs-on: macos-12 env: TERM: dumb HERMES_WS_DIR: "/tmp/hermes" @@ -144,7 +141,7 @@ jobs: steps: - uses: maxim-lobanov/setup-xcode@v1.6.0 with: - xcode-version: 13.4.1 + xcode-version: 14.3.1 - uses: actions/checkout@v4.1.0 with: path: hermes @@ -156,7 +153,7 @@ jobs: cmake --build ./build cmake --build ./build --target check-hermes test-apple-runtime: - runs-on: macos-latest + runs-on: macos-12 needs: build-apple-runtime env: TERM: dumb @@ -199,7 +196,7 @@ jobs: -scheme ApplePlatformsIntegrationMobileTests working-directory: test/ApplePlatformsIntegrationTestApp package-apple-runtime: - runs-on: macos-latest + runs-on: macos-12 needs: - test-macos - test-apple-runtime @@ -489,70 +486,75 @@ jobs: cmake -S hermes -B build -G 'Visual Studio 16 2019' cmake --build build --target check-hermes -- -m /p:UseMultiToolTask=true -m /p:EnforceProcessCountAcrossBuilds=true test-e2e: - runs-on: ubuntu-20.04 - container: - image: reactnativecommunity/react-native-android:latest - env: - TERM: "dumb" - GRADLE_OPTS: '-Dorg.gradle.daemon=false' - # By default we only build ARM64 to save time/resources. For release/nightlies/prealpha, we override this value to build all archs. - ORG_GRADLE_PROJECT_reactNativeArchitectures: "arm64-v8a" - REACT_NATIVE_OVERRIDE_HERMES_DIR: /__w/hermes/hermes/hermes/ + runs-on: ubuntu-latest + env: + # By default we only build ARM64 to save time/resources. For release/nightlies/prealpha, we override this value to build all archs. + ORG_GRADLE_PROJECT_reactNativeArchitectures: "arm64-v8a" + ANDROID_NDK: /usr/local/lib/android/sdk/ndk/26.1.10909125 + HERMES_WS_DIR: /home/runner/work/hermes + REACT_NATIVE_OVERRIDE_HERMES_DIR: /home/runner/work/hermes/hermes steps: - - uses: actions/setup-node@v4.0.2 - - name: Setup dependencies - run: |- - (yes | sdkmanager "cmake;3.22.1" --verbose) || true - sudo apt update && sudo apt install -y openjdk-11-jdk - - uses: actions/checkout@v4.1.0 + - name: Install Node + uses: actions/setup-node@v4.0.2 + - name: Install JDK + uses: actions/setup-java@v3 with: - path: hermes - - name: Prepare RNTester + distribution: "temurin" + java-version: "17" + - name: Checkout Hermes + uses: actions/checkout@v4.1.0 + - name: Checkout React Native run: |- + cd "$HERMES_WS_DIR" git clone --depth=1 https://github.com/facebook/react-native cd react-native yarn install + pwd + find echo "console.log('Using Hermes: ' + (global.HermesInternal != null));" >> packages/rn-tester/js/RNTesterApp.android.js - - name: Run android tests - working-directory: react-native - run: | - ./gradlew -PreactNativeArchitectures=x86 :packages:rn-tester:android:app:installHermesRelease - && adb shell am start com.facebook.react.uiapp/.RNTesterActivity - && timeout 30s adb logcat -e "Using Hermes: true" -m 1 + - name: Run RNTester + uses: ReactiveCircus/android-emulator-runner@v2.30.1 + with: + api-level: 29 + ndk: 26.1.10909125 + cmake: 3.22.1 + script: | + cd ../react-native && ./gradlew -PreactNativeArchitectures=x86 :packages:rn-tester:android:app:installHermesRelease + adb shell am start com.facebook.react.uiapp/.RNTesterActivity + timeout 30s adb logcat -e "Using Hermes: true" -m 1 test-e2e-intl: - runs-on: ubuntu-20.04 - container: - image: reactnativecommunity/react-native-android:latest - env: - TERM: "dumb" - GRADLE_OPTS: '-Dorg.gradle.daemon=false' - # By default we only build ARM64 to save time/resources. For release/nightlies/prealpha, we override this value to build all archs. - ORG_GRADLE_PROJECT_reactNativeArchitectures: "arm64-v8a" - HERMES_WS_DIR: /__w/hermes/hermes/ + runs-on: ubuntu-latest + env: + # By default we only build ARM64 to save time/resources. For release/nightlies/prealpha, we override this value to build all archs. + ORG_GRADLE_PROJECT_reactNativeArchitectures: "arm64-v8a" + HERMES_WS_DIR: /home/runner/work/hermes + ANDROID_NDK: /usr/local/lib/android/sdk/ndk/26.1.10909125 steps: - - uses: actions/checkout@v4.1.0 - with: - path: hermes - - name: Setup dependencies + - name: Checkout Hermes + uses: actions/checkout@v4.1.0 + - name: Checkout Test262 run: |- - (yes | sdkmanager "cmake;3.22.1" --verbose) || true - # Check out test262 at a pinned revision to reduce flakiness + cd "$HERMES_WS_DIR" git clone https://github.com/tc39/test262 cd test262 git checkout 19da3ca0757248f7595ee09d532bb83dd438f2b5 - name: Build Hermes Compiler run: |- + cd "$HERMES_WS_DIR" cmake -S hermes -B ./build -DCMAKE_BUILD_TYPE=Release cmake --build ./build -j 4 --target hermesc - name: Run android tests - working-directory: hermes/android - run: ./gradlew :intltest:prepareTests && ./gradlew -Pabis=x86 :intltest:connectedAndroidTest + uses: ReactiveCircus/android-emulator-runner@v2.30.1 + with: + api-level: 29 + emulator-options: -timezone Europe/Paris -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + script: cd android && ./gradlew :intltest:prepareTests && ./gradlew -Pabis=x86 :intltest:connectedAndroidTest test-macos-test262: - runs-on: macos-latest + runs-on: macos-13 steps: - uses: maxim-lobanov/setup-xcode@v1.6.0 with: - xcode-version: 13.4.1 + xcode-version: 14.3.1 - uses: actions/checkout@v4.1.0 with: path: hermes