diff --git a/.circleci/config.yml b/.circleci/config.yml index bd53ae23fbbbea..88db963b290c47 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -10,77 +10,4 @@ jobs: docker: - image: debian:bullseye steps: - - run: - name: Install Yarn - command: | - apt update - apt install -y wget git curl jq - - apt-get update - apt-get install -y ca-certificates curl gnupg - mkdir -p /etc/apt/keyrings - curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg - - NODE_MAJOR=18 - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list - apt-get update - - apt install -y nodejs - npm install --global yarn - - checkout - - run: - name: Yarn Install - command: yarn install - - when: - condition: - or: - - equal: [ main, << pipeline.git.branch >> ] - - matches: - pattern: /0\.[0-9]+[\.[0-9]+]?-stable/ - value: << pipeline.git.branch >> - steps: - - run: - name: "[Main or Stable] Create input for config to test everything" - command: | - mkdir -p /tmp/circleci/ - node ./scripts/circleci/pipeline_selection.js filter-jobs - - when: - condition: - not: - or: - - equal: [ main, << pipeline.git.branch >> ] - - matches: - pattern: /0\.[0-9]+[\.[0-9]+]?-stable/ - value: << pipeline.git.branch >> - steps: - - run: - name: "[PR Branch] Filter jobs" - command: | - if [[ -z "$CIRCLE_PULL_REQUEST" ]]; then - echo "Not in a PR. Can't filter properly outside a PR. Please open a PR so that we can run the proper CI tests." - echo "For safety, we run all the tests!" - mkdir -p /tmp/circleci/ - echo '{ "run_all": true }' > /tmp/circleci/pipeline_config.json - else - PR_NUMBER="${CIRCLE_PULL_REQUEST##*/}" - node ./scripts/circleci/pipeline_selection.js filter-jobs - fi - - run: - name: Create config - description: Generates a configuration on the fly, depending on the files that have been modified - command: | - node ./scripts/circleci/pipeline_selection.js create-configs - - store_artifacts: - path: .circleci/generated_config.yml - destination: generated_config.yml - - continuation/continue: - configuration_path: .circleci/generated_config.yml - -# our single workflow, that triggers the setup job defined above -workflows: - always-run: - jobs: - - choose_ci_jobs: - filters: - tags: - only: /.*/ + - run: echo "There is nothing here, just an empty job. Everything has been moved to GitHub Action" diff --git a/.circleci/configurations/executors.yml b/.circleci/configurations/executors.yml deleted file mode 100644 index 02d750b9773b28..00000000000000 --- a/.circleci/configurations/executors.yml +++ /dev/null @@ -1,52 +0,0 @@ -# ------------------------- -# EXECUTORS -# ------------------------- -executors: - nodelts: - <<: *defaults - docker: - - image: *nodelts_image - resource_class: "large" - nodeprevlts: - <<: *defaults - docker: - - image: *nodeprevlts_image - resource_class: "large" - # Executor with Node & Java used to inspect and lint - node-browsers-small: - <<: *defaults - docker: - - image: *nodelts_browser_image - resource_class: "small" - node-browsers-medium: - <<: *defaults - docker: - - image: *nodelts_browser_image - resource_class: "medium" - reactnativeandroid-xlarge: - <<: *android-defaults - resource_class: "xlarge" - reactnativeandroid-large: - <<: *android-defaults - resource_class: "large" - reactnativeios: - <<: *defaults - macos: - xcode: *xcode_version - resource_class: macos.m1.medium.gen1 - environment: - - RCT_BUILD_HERMES_FROM_SOURCE: true - reactnativeios-lts: - <<: *defaults - macos: - xcode: '14.3.1' - resource_class: macos.x86.medium.gen2 - environment: - - RCT_BUILD_HERMES_FROM_SOURCE: true - reactnative-visionos: - <<: *defaults - resource_class: macos.m1.medium.gen1 - macos: - xcode: '15.2' - environment: - - RCT_BUILD_HERMES_FROM_SOURCE: true diff --git a/.circleci/configurations/jobs.yml b/.circleci/configurations/jobs.yml deleted file mode 100644 index 7c9d5497e1bb29..00000000000000 --- a/.circleci/configurations/jobs.yml +++ /dev/null @@ -1,1213 +0,0 @@ -# ------------------------- -# JOBS -# ------------------------- -jobs: - # ------------------------- - # JOBS: Analyze PR - # ------------------------- - # Analyze pull request and raise any lint/flow issues. - # Issues will be posted to the PR itself via GitHub bots. - # This workflow should only fail if the bots fail to run. - analyze_pr: - executor: node-browsers-medium - steps: - - checkout - - run_yarn - - run: - name: Run linters against modified files (analysis-bot) - command: GITHUB_TOKEN="$PUBLIC_ANALYSISBOT_GITHUB_TOKEN_A""$PUBLIC_ANALYSISBOT_GITHUB_TOKEN_B" yarn lint-ci - - # ------------------------- - # JOBS: Analyze Code - # ------------------------- - analyze_code: - executor: node-browsers-small - steps: - - checkout - - run_yarn - - - run: - name: Lint code - command: scripts/circleci/exec_swallow_error.sh yarn lint --format junit -o ./reports/junit/eslint/results.xml - when: always - - - run: - name: Lint Java - command: scripts/circleci/exec_swallow_error.sh yarn lint-java --check - when: always - - - run: - name: Set server.max_workers=1 in .flowconfig - command: | - sed -i '/\[options\]/a server.max_workers=1' .flowconfig - when: always - - - run: - name: Check for errors in code using Flow (iOS) - command: yarn flow-check - when: always - - - run: - name: Check for errors in code using Flow (Android) - command: yarn flow-check - when: always - - - run: - name: Run TypeScript tests - command: yarn test-typescript - when: always - - - run: - name: Check license - command: ./scripts/circleci/check_license.sh - when: always - - - run: - name: Check formatting - command: yarn run format-check - when: always - - - store_test_results: - path: ./reports/junit - - # ------------------------- - # JOBS: Test JavaScript - # ------------------------- - test_js: - parameters: - executor: - type: executor - default: nodelts - run_disabled_tests: - type: boolean - default: false - executor: << parameters.executor >> - steps: - - checkout - - run_yarn - - run: - name: Install rsync - command: sudo apt update && sudo apt install rsync - - # ------------------------- - # Run JavaScript tests - - run: - name: "Run Tests: JavaScript Tests" - command: node ./scripts/run-ci-javascript-tests.js --maxWorkers 2 - - # Optionally, run disabled tests - - when: - condition: << parameters.run_disabled_tests >> - steps: - - run: echo "Failing tests may be moved here temporarily." - # ------------------------- - - - store_test_results: - path: ./reports/junit - - # ------------------------- - # JOBS: Build Android - # ------------------------- - build_android: - executor: reactnativeandroid-xlarge - parameters: - release_type: - description: The type of release to build. Must be one of "nightly", "release", "dry-run", "prealpha". - type: enum - enum: ["nightly", "release", "dry-run", "prealpha"] - default: "dry-run" - steps: - - checkout - - run_yarn - - run: - name: Set React Native Version - command: node ./scripts/releases/set-rn-artifacts-version.js --build-type << parameters.release_type >> - - - with_gradle_cache: - steps: - - run: - name: Build and publish all the Android Artifacts to /tmp/maven-local - command: | - if [[ << parameters.release_type >> == "dry-run" ]]; then - export ORG_GRADLE_PROJECT_reactNativeArchitectures="arm64-v8a" - else - export ORG_GRADLE_PROJECT_reactNativeArchitectures="armeabi-v7a,arm64-v8a,x86,x86_64" - fi - ./gradlew publishAllToMavenTempLocal - - - persist_to_workspace: - root: /root/react-native/ - paths: - - build/ - - .gradle/ - - packages/rn-tester/android/app/.cxx/ - - packages/rn-tester/android/app/build/ - - packages/react-native/sdks/download/ - - packages/react-native/sdks/hermes/ - - packages/react-native/ReactAndroid/.cxx/ - - packages/react-native/ReactAndroid/build/ - - packages/react-native/ReactAndroid/hermes-engine/.cxx/ - - packages/react-native/ReactAndroid/hermes-engine/build/ - - packages/react-native/ReactAndroid/src/main/jni/prebuilt/ - - packages/gradle-plugin/.gradle/ - - packages/gradle-plugin/react-native-gradle-plugin/build/ - - packages/gradle-plugin/settings-plugin/build/ - - packages/gradle-plugin/shared/build/ - - packages/react-native-codegen/lib/ - - # ------------------------- - # JOBS: Test Android - # ------------------------- - test_android: - executor: reactnativeandroid-xlarge - steps: - - checkout - - run_yarn - - run: - name: Set React Native Version to "dry-run" - # test_android executes only for dry-run builds. We need to bump the version for caching - # reasons otherwise we won't reuse the artifacts from the build_android job. - command: node ./scripts/releases/set-rn-artifacts-version.js --build-type "dry-run" - - attach_workspace: - at: . - - - with_gradle_cache: - steps: - - run: - name: Build & Test React Native using Gradle - command: ./gradlew build -PenableWarningsAsErrors=true - - - report_bundle_size: - platform: android - - - store_test_results: - path: ~/react-native/packages/gradle-plugin/react-native-gradle-plugin/build/test-results - - store_test_results: - path: ~/react-native/packages/gradle-plugin/settings-plugin/build/test-results - - store_test_results: - path: ~/react-native/packages/react-native/ReactAndroid/build/test-results - - - store_artifacts: - path: ~/react-native/packages/rn-tester/android/app/build/outputs/apk/ - destination: rntester-apk - - # ------------------------- - # JOBS: Test Android HelloWorld - # ------------------------- - test_android_helloworld: - executor: reactnativeandroid-large - parameters: - flavor: - default: "Debug" - description: The Android build type. Must be one of "Debug", "Release". - type: enum - enum: ["Debug", "Release"] - architecture: - default: "OldArch" - description: Which React Native architecture to use. Must be one of "NewArch", "OldArch". - type: enum - enum: [ "NewArch", "OldArch" ] - jsengine: - default: "Hermes" - description: Which JavaScript engine to use. Must be one of "Hermes", "JSC". - type: enum - enum: ["Hermes", "JSC"] - environment: - - LC_ALL: C.UTF8 - - PROJECT_NAME: "AndroidTemplateProject" - - YARN_ENABLE_IMMUTABLE_INSTALLS: false - - TARGET_ARCHITECTURE: "arm64-v8a" - steps: - - checkout_code_with_cache - - run_yarn - - attach_workspace: - at: . - - run: - name: Build codegen js scripts from flow -> JS - command: | - cd packages/react-native-codegen - yarn run build - - with_gradle_cache: - steps: - - run: - name: Build the Helloworld application for << parameters.flavor >> with Architecture set to << parameters.architecture >>, and using the << parameters.jsengine>> JS engine. - command: | - cd packages/helloworld/android - args=() - if [[ << parameters.architecture >> == "OldArch" ]]; then - args+=(--arch old) - fi - if [[ << parameters.jsengine >> == "JSC" ]]; then - args+=(--jsvm jsc) - fi - if [[ << parameters.flavor >> == "Release" ]]; then - args+=(--prod) - fi - yarn build android "${args[@]}" -P reactNativeArchitectures="$TARGET_ARCHITECTURE" - - store_artifacts: - path: /tmp/AndroidTemplateProject/android/app/build/outputs/apk/ - destination: template-apk - - # ------------------------- - # JOBS: Test iOS HelloWorld - # ------------------------- - test_ios_helloworld: - parameters: - flavor: - default: "Debug" - description: The Xcode build type. Must be one of "Debug", "Release". - type: enum - enum: ["Debug", "Release"] - architecture: - default: "OldArch" - description: Which React Native architecture to use. Must be one of "NewArch", "OldArch". - type: enum - enum: ["NewArch", "OldArch"] - jsengine: - default: "Hermes" - description: Which JavaScript engine to use. Must be one of "Hermes", "JSC". - type: enum - enum: ["Hermes", "JSC"] - use_frameworks: - default: "StaticLibraries" - description: Which kind of option we want to use for `use_frameworks!` - type: enum - enum: ["StaticLibraries", "DynamicFrameworks"] - ruby_version: - default: "2.6.10" - description: The version of ruby that must be used - type: string - podfile_lock_cache_key: - type: string - default: *helloworld_podfile_lock_cache_key - cocoapods_cache_key: - type: string - default: *helloworld_cocoapods_cache_key - executor: - description: The executor to use - default: reactnativeios - type: string - executor: << parameters.executor >> - environment: - - HERMES_WS_DIR: *hermes_workspace_root - - YARN_ENABLE_IMMUTABLE_INSTALLS: false - steps: - - checkout_code_with_cache - - run_yarn - - attach_workspace: - at: . - - *attach_hermes_workspace - - setup_ruby: - ruby_version: << parameters.ruby_version >> - - when: - condition: - equal: ["Hermes", << parameters.jsengine >>] - steps: - - run: - name: Set HERMES_ENGINE_TARBALL_PATH - command: | - BUILD_TYPE="<< parameters.flavor >>" - TARBALL_FILENAME=$(node ./packages/react-native/scripts/hermes/get-tarball-name.js --buildType "$BUILD_TYPE") - echo "export HERMES_ENGINE_TARBALL_PATH=$HERMES_WS_DIR/hermes-runtime-darwin/$TARBALL_FILENAME" >> $BASH_ENV - - with_xcodebuild_cache: - podfile_lock_path: packages/helloworld/ios/Podfile.lock - pods_build_folder: packages/helloworld/ios/Pods - cocoapods_cache_key: << parameters.cocoapods_cache_key >> - podfile_lock_cache_key: << parameters.podfile_lock_cache_key >> - steps: - - run: - name: Install iOS dependencies - Configuration << parameters.flavor >>; New Architecture << parameters.architecture >>; JS Engine << parameters.jsengine>> - command: | - cd packages/helloworld - args=() - if [[ << parameters.architecture >> == "OldArch" ]]; then - args+=(--arch old) - fi - if [[ << parameters.jsengine >> == "JSC" ]]; then - args+=(--jsvm jsc) - fi - if [[ << parameters.use_frameworks >> == "DynamicFrameworks" ]]; then - args+=(--frameworks dynamic) - fi - yarn bootstrap ios "${args[@]}" | cat - - run: - name: Build helloworld project - command: | - cd packages/helloworld - args=() - if [[ << parameters.flavor >> == "Release" ]]; then - args+=(--prod) - fi - yarn build ios "${args[@]}" | cat - yarn bundle ios "${args[@]}" | cat - - # ------------------------- - # JOBS: Test iOS RNTester - # ------------------------- - test_ios_rntester: - - parameters: - jsengine: - default: "Hermes" - description: Which JavaScript engine to use. Must be one of "Hermes", "JSC". - type: enum - enum: ["Hermes", "JSC"] - use_frameworks: - default: "StaticLibraries" - description: The dependency building and linking strategy to use. Must be one of "StaticLibraries", "DynamicFrameworks" - type: enum - enum: ["StaticLibraries", "DynamicFrameworks"] - architecture: - default: "NewArch" - description: "The React Native architecture to Test. RNTester has always Fabric enabled, but we want to run integration test with the old arch setup" - type: enum - enum: ["OldArch", "NewArch"] - ruby_version: - default: "2.6.10" - description: The version of ruby that must be used - type: string - run_unit_tests: - description: whether unit tests should run or not. - default: false - type: boolean - executor: - description: The executor to use - default: reactnativeios - type: string - executor: << parameters.executor >> - steps: - - checkout_code_with_cache - - run_yarn - - *attach_hermes_workspace - - # The macOS machine can run out of storage if Hermes is enabled and built from source. - # Since this job does not use the iOS Simulator, deleting it provides a quick way to - # free up space. - - run: - name: Delete iOS Simulators - background: true - command: sudo rm -rf /Library/Developer/CoreSimulator/Profiles/Runtimes/ - - setup_ruby: - ruby_version: << parameters.ruby_version >> - - when: - condition: << parameters.run_unit_tests >> - steps: - - prepare_ios_tests - - with_hermes_tarball_cache_span: - set_tarball_path: True - steps: - - with_xcodebuild_cache: - steps: - - run: - name: Install CocoaPods dependencies - command: | - - if [[ << parameters.jsengine >> == "JSC" ]]; then - export USE_HERMES=0 - fi - - if [[ << parameters.use_frameworks >> == "DynamicFrameworks" ]]; then - export USE_FRAMEWORKS=dynamic - fi - - if [[ << parameters.architecture >> == "NewArch" ]]; then - export RCT_NEW_ARCH_ENABLED=1 - fi - - cd packages/rn-tester - - bundle install - bundle exec pod install - - when: - condition: - # The run_ios_test will also build RNTester so we don't nee to build it - # here if we run tests - equal: [ false, << parameters.run_unit_tests >> ] - - steps: - - run: - name: Build RNTester - command: | - xcodebuild build \ - -workspace packages/rn-tester/RNTesterPods.xcworkspace \ - -scheme RNTester \ - -sdk iphonesimulator - - when: - condition: << parameters.run_unit_tests >> - steps: - - run_ios_tests - - # ------------------------- - # JOBS: Test visionOS RNTester - # ------------------------- - test_visionos_rntester: - - parameters: - jsengine: - default: "JSC" - description: Which JavaScript engine to use. Must be one of "Hermes", "JSC". - type: enum - enum: ["Hermes", "JSC"] - architecture: - default: "OldArch" - description: Which React Native architecture to use. Must be one of "OldArch", "NewArch". - type: enum - enum: ["NewArch", "OldArch"] - use_frameworks: - default: "StaticLibraries" - description: The dependency building and linking strategy to use. Must be one of "StaticLibraries", "DynamicFrameworks" - type: enum - enum: ["StaticLibraries", "DynamicFrameworks"] - ruby_version: - default: "2.6.10" - description: The version of ruby that must be used - type: string - run_unit_tests: - description: whether unit tests should run or not. - default: false - type: boolean - executor: - description: The executor to use - default: reactnative-visionos - type: string - executor: << parameters.executor >> - steps: - - checkout_code_with_cache - - run_yarn - - setup_ruby: - ruby_version: << parameters.ruby_version >> - - with_xcodebuild_cache: - steps: - - run: - name: "Install pods" - command: | - if [[ << parameters.architecture >> == "NewArch" ]]; then - export RCT_NEW_ARCH_ENABLED=1 - fi - - if [[ << parameters.jsengine >> == "JSC" ]]; then - export USE_HERMES=0 - fi - - if [[ << parameters.use_frameworks >> == "DynamicFrameworks" ]]; then - export USE_FRAMEWORKS=dynamic - fi - - cd packages/rn-tester - - bundle install - bundle exec pod install - - run: - name: "Build rn-tester" - command: | - xcodebuild build \ - -workspace packages/rn-tester/RNTesterPods.xcworkspace \ - -scheme RNTester-visionOS \ - -sdk xrsimulator - - # ------------------------- - # JOBS: Build Hermes - # ------------------------- - prepare_hermes_workspace: - docker: - - image: debian:bullseye - environment: - - HERMES_WS_DIR: *hermes_workspace_root - - HERMES_VERSION_FILE: "packages/react-native/sdks/.hermesversion" - - RCT_BUILD_HERMES_FROM_SOURCE: true - steps: - - run: - name: Install dependencies - command: | - apt update - - apt install -y wget git curl jq - - apt-get update - apt-get install -y ca-certificates curl gnupg - mkdir -p /etc/apt/keyrings - curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg - - NODE_MAJOR=18 - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list - apt-get update - - apt install -y nodejs - npm install --global yarn - - checkout - - setup_hermes_version - - get_react_native_version - - restore_cache: - key: *hermes_workspace_cache_key - - run_yarn - - run: - name: Download Hermes tarball - command: | - node packages/react-native/scripts/hermes/prepare-hermes-for-build $CIRCLE_PULL_REQUEST - cp packages/react-native/sdks/download/* $HERMES_WS_DIR/download/. - cp -r packages/react-native/sdks/hermes/* $HERMES_WS_DIR/hermes/. - - cat /tmp/hermes/hermesversion - - save_cache: - key: *hermes_workspace_cache_key - paths: - - /tmp/hermes/download/ - - /tmp/hermes/hermes/ - # Check if we already built the tarball - # if yes, we can skip the building and we can skip some jobs building - - restore_cache: - keys: - - *hermes_tarball_release_cache_key - - check_if_tarball_is_present: - flavor: Release - - restore_cache: - keys: - - *hermes_tarball_debug_cache_key - - check_if_tarball_is_present: - flavor: Debug - - restore_cache: - keys: - - *hermes_macosx_bin_release_cache_key - - check_if_osx_bin_is_present: - flavor: Release - - restore_cache: - keys: - - *hermes_macosx_bin_debug_cache_key - - check_if_osx_bin_is_present: - flavor: Debug - - restore_cache: - keys: - - *hermes_dsym_debug_cache_key - - check_if_dsym_are_present: - flavor: Debug - - restore_cache: - keys: - - *hermes_dsym_release_cache_key - - check_if_dsym_are_present: - flavor: Release - - persist_to_workspace: - root: *hermes_workspace_root - paths: - - download - - hermes - - hermes-runtime-darwin - - osx-bin - - dSYM - - hermesversion - - Release_tarball_present - - Debug_tarball_present - - Release_osx_bin - - Debug_osx_bin - - Release_dSYM - - Debug_dSYM - - persist_to_workspace: - root: /tmp - paths: - - react-native-version - - build_hermesc_linux: - docker: - - image: debian:bullseye - resource_class: "large" - steps: - - checkout_code_with_cache - - run: - name: Install dependencies - command: | - apt update - apt install -y git openssh-client cmake build-essential \ - libreadline-dev libicu-dev jq zip python3 - - *attach_hermes_workspace - - get_react_native_version - - restore_cache: - key: *hermes_linux_cache_key - - run: - name: Set up workspace - command: | - mkdir -p /tmp/hermes/linux64-bin - - run: - name: Build HermesC for Linux - command: | - if [ -f /tmp/hermes/linux64-bin/hermesc ]; then - echo 'Skipping; Clean "/tmp/hermes/linux64-bin" to rebuild.' - else - cd /tmp/hermes - cmake -S hermes -B build -DHERMES_STATIC_LINK=ON -DCMAKE_BUILD_TYPE=Release -DHERMES_ENABLE_TEST_SUITE=OFF \ - -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=True -DCMAKE_CXX_FLAGS=-s -DCMAKE_C_FLAGS=-s \ - -DCMAKE_EXE_LINKER_FLAGS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" - cmake --build build --target hermesc -j 4 - cp /tmp/hermes/build/bin/hermesc /tmp/hermes/linux64-bin/. - fi - - save_cache: - key: *hermes_linux_cache_key - paths: - - /tmp/hermes/linux64-bin/ - - /tmp/hermes/hermes/destroot/ - - store_artifacts_if_needed: - path: /tmp/hermes/linux64-bin/ - - persist_to_workspace: - root: /tmp/hermes/ - paths: - - linux64-bin - - build_hermesc_apple: - executor: reactnativeios - environment: - - HERMES_WS_DIR: *hermes_workspace_root - - HERMES_TARBALL_ARTIFACTS_DIR: *hermes_tarball_artifacts_dir - steps: - - *attach_hermes_workspace - - stop_job_if_apple_artifacts_are_there: - flavor: "All" - - checkout_code_with_cache - - get_react_native_version - - setup_hermes_workspace - - restore_cache: - key: *hermesc_apple_cache_key - - brew_install: - package: cmake - - run: - name: "Build HermesC Apple" - command: | - cd ./packages/react-native/sdks/hermes || exit 1 - . ./utils/build-apple-framework.sh - build_host_hermesc_if_needed - - save_cache: - key: *hermesc_apple_cache_key - paths: - - ./packages/react-native/sdks/hermes/build_host_hermesc - - persist_to_workspace: - root: ./packages/react-native/sdks/hermes/ - paths: - - build_host_hermesc - - build_apple_slices_hermes: - parameters: - slice_base_cache_key: - default: *hermes_apple_slices_cache_key - type: string - flavor: - default: "Debug" - description: The Hermes build type. Must be one of "Debug", "Release". - type: enum - enum: ["Debug", "Release"] - slice: - default: "iphoneos" - description: The Hermes Slice that this job has to build - type: enum - enum: ["macosx", "iphoneos", "iphonesimulator", "catalyst", "xros", "xrsimulator"] - executor: reactnativeios - environment: - - HERMES_WS_DIR: *hermes_workspace_root - - HERMES_TARBALL_ARTIFACTS_DIR: *hermes_tarball_artifacts_dir - - HERMES_OSXBIN_ARTIFACTS_DIR: *hermes_osxbin_artifacts_dir - steps: - - *attach_hermes_workspace - - stop_job_if_apple_artifacts_are_there: - flavor: << parameters.flavor >> - - checkout_code_with_cache - - get_react_native_version - - setup_hermes_workspace - - restore_cache: - key: *hermesc_apple_cache_key - - brew_install: - package: cmake - - restore_cache: - key: << parameters.slice_base_cache_key >>-<< parameters.slice >>-<< parameters.flavor >> - - run: - name: Build the Hermes << parameters.slice >> frameworks - command: | - cd ./packages/react-native/sdks/hermes || exit 1 - SLICE=<< parameters.slice >> - FLAVOR=<< parameters.flavor >> - FINAL_PATH=build_"$SLICE"_"$FLAVOR" - echo "Final path for this slice is: $FINAL_PATH" - - if [[ -d "$FINAL_PATH" ]]; then - echo "[HERMES] Skipping! Found the requested slice at $FINAL_PATH". - exit 0 - fi - - export RELEASE_VERSION=$(cat /tmp/react-native-version) - if [[ "$SLICE" == "macosx" ]]; then - echo "[HERMES] Building Hermes for MacOS" - export MAC_DEPLOYMENT_TARGET=10.13 - BUILD_TYPE="<< parameters.flavor >>" ./utils/build-mac-framework.sh - unset MAC_DEPLOYMENT_TARGET - else - echo "[HERMES] Building Hermes for iOS: $SLICE" - export IOS_DEPLOYMENT_TARGET=13.4 - BUILD_TYPE="<< parameters.flavor >>" ./utils/build-ios-framework.sh "$SLICE" - unset IOS_DEPLOYMENT_TARGET - fi - unset RELEASE_VERSION - - echo "Moving from build_$SLICE to $FINAL_PATH" - mv build_"$SLICE" "$FINAL_PATH" - - # check whether everything is there - if [[ -d "$FINAL_PATH/API/hermes/hermes.framework" ]]; then - echo "Successfully built hermes.framework for $SLICE in $FLAVOR" - else - echo "Failed to built hermes.framework for $SLICE in $FLAVOR" - exit 1 - fi - - if [[ -d "$FINAL_PATH/API/hermes/hermes.framework.dSYM" ]]; then - echo "Successfully built hermes.framework.dSYM for $SLICE in $FLAVOR" - else - echo "Failed to built hermes.framework.dSYM for $SLICE in $FLAVOR" - echo "Please try again" - exit 1 - fi - - save_cache: - key: << parameters.slice_base_cache_key >>-<< parameters.slice >>-<< parameters.flavor >> - paths: - - ./packages/react-native/sdks/hermes/build_<< parameters.slice >>_<< parameters.flavor >> - - build_hermes_macos: - parameters: - slice_base_cache_key: - default: *hermes_apple_slices_cache_key - type: string - flavor: - default: "Debug" - description: The Hermes build type. Must be one of "Debug", "Release". - type: enum - enum: ["Debug", "Release"] - executor: reactnativeios - environment: - - HERMES_WS_DIR: *hermes_workspace_root - - HERMES_TARBALL_ARTIFACTS_DIR: *hermes_tarball_artifacts_dir - steps: - - *attach_hermes_workspace - # Try to store the artifacts if they are already in the workspace - - store_hermes_apple_artifacts: - flavor: << parameters.flavor >> - - stop_job_if_apple_artifacts_are_there: - flavor: << parameters.flavor >> - - checkout_code_with_cache - - run_yarn - - get_react_native_version - - brew_install: - package: cmake - - setup_hermes_workspace - - restore_cache: - key: << parameters.slice_base_cache_key >>-macosx-<< parameters.flavor >> - - restore_cache: - key: << parameters.slice_base_cache_key >>-iphoneos-<< parameters.flavor >> - - restore_cache: - key: << parameters.slice_base_cache_key >>-iphonesimulator-<< parameters.flavor >> - - restore_cache: - key: << parameters.slice_base_cache_key >>-catalyst-<< parameters.flavor >> - - restore_cache: - key: << parameters.slice_base_cache_key >>-xros-<< parameters.flavor >> - - restore_cache: - key: << parameters.slice_base_cache_key >>-xrsimulator-<< parameters.flavor >> - - run: - name: "Move back build folders" - command: | - cd ./packages/react-native/sdks/hermes || exit 1 - mv build_macosx_<< parameters.flavor >> build_macosx - mv build_iphoneos_<< parameters.flavor >> build_iphoneos - mv build_iphonesimulator_<< parameters.flavor >> build_iphonesimulator - mv build_catalyst_<< parameters.flavor >> build_catalyst - mv build_xros_<< parameters.flavor >> build_xros - mv build_xrsimulator_<< parameters.flavor >> build_xrsimulator - - run: - name: "Prepare destroot folder" - command: | - cd ./packages/react-native/sdks/hermes || exit 1 - . ./utils/build-apple-framework.sh - prepare_dest_root_for_ci - - run: - name: "Create fat framework for iOS" - command: | - cd ./packages/react-native/sdks/hermes || exit 1 - echo "[HERMES] Creating the universal framework" - export IOS_DEPLOYMENT_TARGET=13.4 - export RELEASE_VERSION=$(cat /tmp/react-native-version) - ./utils/build-ios-framework.sh build_framework - unset RELEASE_VERSION - unset IOS_DEPLOYMENT_TARGET - - run: - name: Package the Hermes Apple frameworks - command: | - BUILD_TYPE="<< parameters.flavor >>" - echo "Packaging Hermes Apple frameworks for $BUILD_TYPE build type" - - TARBALL_OUTPUT_DIR=$(mktemp -d /tmp/hermes-tarball-output-XXXXXXXX) - - TARBALL_FILENAME=$(node ./packages/react-native/scripts/hermes/get-tarball-name.js --buildType "$BUILD_TYPE") - - echo "Packaging Hermes Apple frameworks for $BUILD_TYPE build type" - - TARBALL_OUTPUT_PATH=$(node ./packages/react-native/scripts/hermes/create-tarball.js \ - --inputDir ./packages/react-native/sdks/hermes \ - --buildType "$BUILD_TYPE" \ - --outputDir $TARBALL_OUTPUT_DIR) - - echo "Hermes tarball saved to $TARBALL_OUTPUT_PATH" - - mkdir -p $HERMES_TARBALL_ARTIFACTS_DIR - cp $TARBALL_OUTPUT_PATH $HERMES_TARBALL_ARTIFACTS_DIR/. - - mkdir -p /tmp/hermes/osx-bin/<< parameters.flavor >> - cp ./packages/react-native/sdks/hermes/build_macosx/bin/* /tmp/hermes/osx-bin/<< parameters.flavor >> - - run: - name: Create dSYM archive - command: | - FLAVOR=<< parameters.flavor >> - WORKING_DIR="/tmp/hermes_tmp/dSYM/$FLAVOR" - - mkdir -p "$WORKING_DIR/macosx" - mkdir -p "$WORKING_DIR/catalyst" - mkdir -p "$WORKING_DIR/iphoneos" - mkdir -p "$WORKING_DIR/iphonesimulator" - mkdir -p "$WORKING_DIR/xros" - mkdir -p "$WORKING_DIR/xrsimulator" - - cd ./packages/react-native/sdks/hermes || exit 1 - - DSYM_FILE_PATH=API/hermes/hermes.framework.dSYM - cp -r build_macosx/$DSYM_FILE_PATH "$WORKING_DIR/macosx/" - cp -r build_catalyst/$DSYM_FILE_PATH "$WORKING_DIR/catalyst/" - cp -r build_iphoneos/$DSYM_FILE_PATH "$WORKING_DIR/iphoneos/" - cp -r build_iphonesimulator/$DSYM_FILE_PATH "$WORKING_DIR/iphonesimulator/" - cp -r build_xrsimulator/$DSYM_FILE_PATH "$WORKING_DIR/xrsimulator/" - cp -r build_xros/$DSYM_FILE_PATH "$WORKING_DIR/xros/" - - DEST_DIR="/tmp/hermes/dSYM/$FLAVOR" - tar -C "$WORKING_DIR" -czvf "hermes.framework.dSYM" . - - mkdir -p "$DEST_DIR" - mv "hermes.framework.dSYM" "$DEST_DIR" - - - when: - condition: - equal: [ << parameters.flavor >>, "Debug"] - steps: - - save_cache: - key: *hermes_tarball_debug_cache_key - paths: *hermes_tarball_cache_paths - - save_cache: - key: *hermes_macosx_bin_debug_cache_key - paths: /tmp/hermes/osx-bin/Debug - - save_cache: - key: *hermes_dsym_debug_cache_key - paths: /tmp/hermes/dSYM/Debug - - when: - condition: - equal: [ << parameters.flavor >>, "Release"] - steps: - - save_cache: - key: *hermes_tarball_release_cache_key - paths: *hermes_tarball_cache_paths - - save_cache: - key: *hermes_macosx_bin_release_cache_key - paths: /tmp/hermes/osx-bin/Release - - save_cache: - key: *hermes_dsym_release_cache_key - paths: /tmp/hermes/dSYM/Release - - store_hermes_apple_artifacts: - flavor: << parameters.flavor >> - - when: - condition: - equal: [ << parameters.flavor >>, "Release" ] - steps: - - persist_to_workspace: - root: /tmp/hermes/ - paths: - - hermes-runtime-darwin/hermes-ios-release.tar.gz - - when: - condition: - equal: [ << parameters.flavor >>, "Debug" ] - steps: - - persist_to_workspace: - root: /tmp/hermes/ - paths: - - hermes-runtime-darwin/hermes-ios-debug.tar.gz - - persist_to_workspace: - root: /tmp/hermes/ - paths: - - osx-bin/<< parameters.flavor >> - - dSYM/<< parameters.flavor >> - - build_hermesc_windows: - executor: - name: win/default - shell: powershell.exe - environment: - - HERMES_WS_DIR: 'C:\tmp\hermes' - - ICU_URL: "https://github.com/unicode-org/icu/releases/download/release-64-2/icu4c-64_2-Win64-MSVC2017.zip" - - MSBUILD_DIR: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin' - - CMAKE_DIR: 'C:\Program Files\CMake\bin' - steps: - - checkout_code_with_cache - - *attach_hermes_workspace - - get_react_native_version_windows - - restore_cache: - key: *hermes_windows_cache_key - - run: - name: Set up workspace - command: | - New-Item -ItemType Directory $Env:HERMES_WS_DIR - New-Item -ItemType Directory $Env:HERMES_WS_DIR\icu - New-Item -ItemType Directory $Env:HERMES_WS_DIR\deps - New-Item -ItemType Directory $Env:HERMES_WS_DIR\win64-bin - New-Item -ItemType SymbolicLink -Target tmp\hermes\hermes -Path $Env:HERMES_WS_DIR -Name hermes - - run: - name: Build HermesC for Windows - command: | - if (-not(Test-Path -Path $Env:HERMES_WS_DIR\win64-bin\hermesc.exe)) { - choco install --no-progress cmake -y - if (-not $?) { throw "Failed to install CMake" } - - cd $Env:HERMES_WS_DIR\icu - # If Invoke-WebRequest shows a progress bar, it will fail with - # Win32 internal error "Access is denied" 0x5 occurred [...] - $progressPreference = 'silentlyContinue' - Invoke-WebRequest -Uri "$Env:ICU_URL" -OutFile "icu.zip" - Expand-Archive -Path "icu.zip" -DestinationPath "." - - cd $Env:HERMES_WS_DIR - Copy-Item -Path "icu\bin64\icu*.dll" -Destination "deps" - # Include MSVC++ 2015 redistributables - Copy-Item -Path "c:\windows\system32\msvcp140.dll" -Destination "deps" - Copy-Item -Path "c:\windows\system32\vcruntime140.dll" -Destination "deps" - Copy-Item -Path "c:\windows\system32\vcruntime140_1.dll" -Destination "deps" - - $Env:PATH += ";$Env:CMAKE_DIR;$Env:MSBUILD_DIR" - $Env:ICU_ROOT = "$Env:HERMES_WS_DIR\icu" - - cmake -S hermes -B build_release -G 'Visual Studio 16 2019' -Ax64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=True -DHERMES_ENABLE_WIN10_ICU_FALLBACK=OFF - if (-not $?) { throw "Failed to configure Hermes" } - cd build_release - cmake --build . --target hermesc --config Release - if (-not $?) { throw "Failed to build Hermes" } - - cd $Env:HERMES_WS_DIR - Copy-Item -Path "build_release\bin\Release\hermesc.exe" -Destination "win64-bin" - # Include Windows runtime dependencies - Copy-Item -Path "deps\*" -Destination "win64-bin" - } - else { - Write-Host "Skipping; Clean c:\tmp\hermes\win64-bin to rebuild." - } - - save_cache: - key: *hermes_windows_cache_key - paths: - - C:\tmp\hermes\win64-bin\ - - C:\tmp\hermes\hermes\icu\ - - C:\tmp\hermes\hermes\deps\ - - C:\tmp\hermes\hermes\build_release\ - - store_artifacts_if_needed: - path: C:\tmp\hermes\win64-bin\ - - persist_to_workspace: - root: C:\tmp\hermes\ - paths: - - win64-bin - - # ------------------------- - # JOBS: Releases - # ------------------------- - - # Writes a new commit and tag(s), which will trigger the `publish_release` - # and `publish_bumped_packages` workflows. - prepare_release: - parameters: - version: - type: string - # TODO(T182538198): Required for 0.74.x, where workspace packages are out - # of sync with react-native. This will be removed for 0.75+. - monorepo_packages_version: - type: string - tag: - type: string - dry_run: - type: boolean - default: false - executor: nodelts - steps: - - checkout_code_with_cache - - run_yarn - - add_ssh_keys: - fingerprints: - - "1f:c7:61:c4:e2:ff:77:e3:cc:ca:a7:34:c2:79:e3:3c" - - run: - name: Versioning project - command: | - node scripts/releases/set-version.js "<< parameters.monorepo_packages_version >>" - - run: - name: Creating release commit - command: | - # I'm seeing failures in automatically detect the email for the - # agent that should push the commit. - git config --global user.name "Distiller" - git config --global user.email "distiller@circleci.com" - - git commit -a -m "Release << parameters.version >>" -m "#publish-packages-to-npm&<< parameters.tag >>" - git tag -a "v<< parameters.version >>" -m "v<< parameters.version >>" - GIT_PAGER=cat git show HEAD - - when: - condition: - equal: ["latest", << parameters.tag >>] - steps: - - run: - name: Updating "latest" tag - command: | - git tag -d "latest" - git push origin :latest - git tag -a "latest" -m "latest" - - unless: - condition: << parameters.dry_run >> - steps: - run: - name: Pushing release commit - command: | - git push origin $CIRCLE_BRANCH --follow-tags - - build_npm_package: - parameters: - release_type: - description: The type of release to build. Must be one of "nightly", "release", "dry-run", or "prealpha". - type: enum - enum: ["nightly", "release", "dry-run", "prealpha"] - default: "dry-run" - executor: reactnativeandroid-xlarge - environment: - - HERMES_WS_DIR: *hermes_workspace_root - steps: - - run: - name: Add github.com to SSH known hosts - command: | - mkdir -p ~/.ssh - echo '|1|If6MU203eXTaaWL678YEfWkVMrw=|kqLeIAyTy8pzpj8x8Ae4Fr8Mtlc= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==' >> ~/.ssh/known_hosts - - checkout - - *attach_hermes_workspace - - run: - name: Copy Hermes binaries - command: | - mkdir -p ./packages/react-native/sdks/hermesc ./packages/react-native/sdks/hermesc/osx-bin ./packages/react-native/sdks/hermesc/win64-bin ./packages/react-native/sdks/hermesc/linux64-bin - - # When build_hermes_macos runs as a matrix, it outputs - if [[ -d $HERMES_WS_DIR/osx-bin/Release ]]; then - cp -r $HERMES_WS_DIR/osx-bin/Release/* ./packages/react-native/sdks/hermesc/osx-bin/. - elif [[ -d $HERMES_WS_DIR/osx-bin/Debug ]]; then - cp -r $HERMES_WS_DIR/osx-bin/Debug/* ./packages/react-native/sdks/hermesc/osx-bin/. - else - ls $HERMES_WS_DIR/osx-bin || echo "hermesc macOS artifacts directory missing." - echo "Could not locate macOS hermesc binary."; exit 1; - fi - - cp -r $HERMES_WS_DIR/win64-bin/* ./packages/react-native/sdks/hermesc/win64-bin/. - cp -r $HERMES_WS_DIR/linux64-bin/* ./packages/react-native/sdks/hermesc/linux64-bin/. - mkdir -p ./packages/react-native/ReactAndroid/external-artifacts/artifacts/ - cp $HERMES_WS_DIR/hermes-runtime-darwin/hermes-ios-debug.tar.gz ./packages/react-native/ReactAndroid/external-artifacts/artifacts/hermes-ios-debug.tar.gz - cp $HERMES_WS_DIR/hermes-runtime-darwin/hermes-ios-release.tar.gz ./packages/react-native/ReactAndroid/external-artifacts/artifacts/hermes-ios-release.tar.gz - cp $HERMES_WS_DIR/dSYM/Debug/hermes.framework.dSYM ./packages/react-native/ReactAndroid/external-artifacts/artifacts/hermes-framework-dSYM-debug.tar.gz - cp $HERMES_WS_DIR/dSYM/Release/hermes.framework.dSYM ./packages/react-native/ReactAndroid/external-artifacts/artifacts/hermes-framework-dSYM-release.tar.gz - - run_yarn - - build_packages - - attach_workspace: - at: . - - # START: Stables, nightlies and prealphas - # This conditional step sets up the necessary credentials for publishing react-native to npm. - - when: - condition: - or: - - equal: [ "release", << parameters.release_type >> ] - - equal: [ "nightly", << parameters.release_type >> ] - steps: - - run: echo "//registry.npmjs.org/:_authToken=${CIRCLE_NPM_TOKEN}" > ~/.npmrc - # END: Stables, prealpha and nightlies - - - with_gradle_cache: - steps: - - run: - name: Publish NPM - command: | - # We can't have a separate step because each command is executed in a separate shell - # so variables exported in a command are not visible in another. - if [[ << parameters.release_type >> == "dry-run" ]]; then - export ORG_GRADLE_PROJECT_reactNativeArchitectures="arm64-v8a" - else - export ORG_GRADLE_PROJECT_reactNativeArchitectures="armeabi-v7a,arm64-v8a,x86,x86_64" - fi - node ./scripts/releases-ci/publish-npm.js -t << parameters.release_type >> - - - run: - name: Zip Maven Artifacts from /tmp/maven-local - command: zip -r /tmp/maven-local.zip /tmp/maven-local - - store_artifacts: - path: /tmp/maven-local.zip - - store_artifacts: - path: /root/.npm/_logs - - persist_to_workspace: - root: /tmp - paths: - - maven-local - - # START: Dry-run - # Provide a react-native package for this commit as a Circle CI release artifact. - - when: - condition: - equal: [ "dry-run", << parameters.release_type >> ] - steps: - - run: - name: Build release package as a job artifact - command: | - mkdir -p build - - FILENAME=$(cd packages/react-native; npm pack | tail -1) - mv packages/react-native/$FILENAME build/ - - echo $FILENAME > build/react-native-package-version - - store_artifacts: - path: ~/react-native/build/ - destination: build - - persist_to_workspace: - root: . - paths: - - build/* - # END: Dry-run - - # START: Stable releases - - when: - condition: - equal: [ "release", << parameters.release_type >> ] - steps: - - run: - name: Update rn-diff-purge to generate upgrade-support diff - command: | - curl -X POST https://api.github.com/repos/react-native-community/rn-diff-purge/dispatches \ - -H "Accept: application/vnd.github.v3+json" \ - -H "Authorization: Bearer $REACT_NATIVE_BOT_GITHUB_TOKEN" \ - -d "{\"event_type\": \"publish\", \"client_payload\": { \"version\": \"${CIRCLE_TAG:1}\" }}" - # END: Stable releases - - poll_maven: - docker: - - image: cimg/node:current - resource_class: small - steps: - - checkout_code_with_cache - - run_yarn - - run: - name: Poll Maven for Artifacts - command: | - node scripts/circleci/poll-maven.js - - find_and_publish_bumped_packages: - executor: nodelts - steps: - - checkout - - run_yarn - - build_packages - - run: - name: Set NPM auth token - command: echo "//registry.npmjs.org/:_authToken=${CIRCLE_NPM_TOKEN}" > ~/.npmrc - - run: - name: Find and publish all bumped packages - command: node ./scripts/releases-ci/publish-updated-packages.js diff --git a/.circleci/configurations/test_workflows/testAll.yml b/.circleci/configurations/test_workflows/testAll.yml deleted file mode 100644 index ab5c6f3f7b52ee..00000000000000 --- a/.circleci/configurations/test_workflows/testAll.yml +++ /dev/null @@ -1,97 +0,0 @@ - tests: - when: - and: - - equal: [ false, << pipeline.parameters.run_release_workflow >> ] - - equal: [ false, << pipeline.parameters.run_nightly_workflow >> ] - jobs: - - prepare_release: - name: "prepare_release (dry run test)" - version: "0.0.0" - monorepo_packages_version: "0.0.0" - tag: test - dry_run: true - - prepare_hermes_workspace - # - build_android: - # release_type: "dry-run" - - build_hermesc_linux: - requires: - - prepare_hermes_workspace - - build_hermesc_apple: - requires: - - prepare_hermes_workspace - - build_apple_slices_hermes: - requires: - - build_hermesc_apple - matrix: - parameters: - flavor: ["Debug", "Release"] - slice: ["macosx", "iphoneos", "iphonesimulator", "catalyst", "xros", "xrsimulator"] - - build_hermes_macos: - requires: - - build_apple_slices_hermes - matrix: - parameters: - flavor: ["Debug", "Release"] - - build_hermesc_windows: - requires: - - prepare_hermes_workspace - - build_npm_package: - # Build a release package on every untagged commit, but do not publish to npm. - release_type: "dry-run" - requires: - # - build_android - - build_hermesc_linux - - build_hermes_macos - - build_hermesc_windows - # - test_android: - # requires: - # - build_android - # - test_android_template: - # requires: - # - build_npm_package - # matrix: - # parameters: - # architecture: ["NewArch", "OldArch"] - # jsengine: ["Hermes", "JSC"] - # flavor: ["Debug", "Release"] - - test_ios_helloworld: - requires: - - build_hermes_macos - name: "Test Template with Ruby 3.2.2" - ruby_version: "3.2.2" - architecture: "NewArch" - flavor: "Debug" - jsengine: "Hermes" - use_frameworks: "StaticLibraries" - - test_ios_helloworld: - requires: - - build_hermes_macos - matrix: - parameters: - flavor: ["Debug", "Release"] - jsengine: ["Hermes", "JSC"] - use_frameworks: ["StaticLibraries", "DynamicFrameworks"] - exclude: - # This config is tested with Ruby 3.2.2. Let's not double test it. - - flavor: "Debug" - jsengine: "Hermes" - use_frameworks: "StaticLibraries" - - test_ios_rntester: - requires: - - build_hermes_macos - use_frameworks: "DynamicFrameworks" - architecture: "NewArch" - ruby_version: "3.2.2" - matrix: - parameters: - jsengine: ["Hermes", "JSC"] - - test_ios_rntester: - run_unit_tests: false - use_frameworks: "StaticLibraries" - ruby_version: "2.6.10" - requires: - - build_hermes_macos - matrix: - parameters: - jsengine: ["Hermes", "JSC"] - architecture: ["NewArch", "OldArch"] diff --git a/.circleci/configurations/test_workflows/testAndroid.yml b/.circleci/configurations/test_workflows/testAndroid.yml deleted file mode 100644 index fe03be61fbde57..00000000000000 --- a/.circleci/configurations/test_workflows/testAndroid.yml +++ /dev/null @@ -1,59 +0,0 @@ - tests_android: - when: - and: - - equal: [ true, false ] # Disable for visionOS - - equal: [ false, << pipeline.parameters.run_release_workflow >> ] - - equal: [ false, << pipeline.parameters.run_nightly_workflow >> ] - jobs: - - prepare_release: - name: "prepare_release (dry run test)" - version: "0.0.0" - monorepo_packages_version: "0.0.0" - tag: test - dry_run: true - - prepare_hermes_workspace - - build_android: - release_type: "dry-run" - - build_hermesc_linux: - requires: - - prepare_hermes_workspace - - build_hermesc_apple: - requires: - - prepare_hermes_workspace - - build_apple_slices_hermes: - requires: - - build_hermesc_apple - matrix: - parameters: - flavor: ["Debug", "Release"] - slice: ["macosx", "iphoneos", "iphonesimulator", "catalyst", "xros", "xrsimulator"] - - build_hermes_macos: - requires: - - build_apple_slices_hermes - matrix: - parameters: - flavor: ["Debug", "Release"] - - build_hermesc_windows: - requires: - - prepare_hermes_workspace - - build_npm_package: - # Build a release package on every untagged commit, but do not publish to npm. - release_type: "dry-run" - requires: - - build_android - - build_hermesc_linux - - build_hermes_macos - - build_hermesc_windows - ## Disabled to land removing react-native/template. Re-enable once switched over - ## to Helloworld. - # - test_android: - # requires: - # - build_android - # - test_android_template: - # requires: - # - build_npm_package - # matrix: - # parameters: - # architecture: ["NewArch", "OldArch"] - # jsengine: ["Hermes", "JSC"] - # flavor: ["Debug", "Release"] diff --git a/.circleci/configurations/test_workflows/testIOS.yml b/.circleci/configurations/test_workflows/testIOS.yml deleted file mode 100644 index be86e64fee6c93..00000000000000 --- a/.circleci/configurations/test_workflows/testIOS.yml +++ /dev/null @@ -1,87 +0,0 @@ - test_ios: - when: - and: - - equal: [ true, false ] # Disable for visionOS - - equal: [ false, << pipeline.parameters.run_release_workflow >> ] - - equal: [ false, << pipeline.parameters.run_nightly_workflow >> ] - jobs: - - prepare_release: - name: "prepare_release (dry run test)" - version: "0.0.0" - monorepo_packages_version: "0.0.0" - tag: test - dry_run: true - - prepare_hermes_workspace - - build_android: - release_type: "dry-run" - - build_hermesc_linux: - requires: - - prepare_hermes_workspace - - build_hermesc_apple: - requires: - - prepare_hermes_workspace - - build_apple_slices_hermes: - requires: - - build_hermesc_apple - matrix: - parameters: - flavor: ["Debug", "Release"] - slice: ["macosx", "iphoneos", "iphonesimulator", "catalyst", "xros", "xrsimulator"] - - build_hermes_macos: - requires: - - build_apple_slices_hermes - matrix: - parameters: - flavor: ["Debug", "Release"] - - build_hermesc_windows: - requires: - - prepare_hermes_workspace - - build_npm_package: - # Build a release package on every untagged commit, but do not publish to npm. - release_type: "dry-run" - requires: - - build_android - - build_hermesc_linux - - build_hermes_macos - - build_hermesc_windows - - test_ios_helloworld: - requires: - - build_hermes_macos - name: "Test Template with Ruby 3.2.2" - ruby_version: "3.2.2" - architecture: "NewArch" - flavor: "Debug" - jsengine: "Hermes" - use_frameworks: "StaticLibraries" - - test_ios_helloworld: - requires: - - build_hermes_macos - matrix: - parameters: - flavor: ["Debug", "Release"] - jsengine: ["Hermes", "JSC"] - use_frameworks: ["StaticLibraries", "DynamicFrameworks"] - exclude: - # This config is tested with Ruby 3.2.2. Let's not double test it. - - flavor: "Debug" - jsengine: "Hermes" - use_frameworks: "StaticLibraries" - - test_ios_rntester: - requires: - - build_hermes_macos - use_frameworks: "DynamicFrameworks" - ruby_version: "3.2.2" - architecture: "NewArch" - matrix: - parameters: - jsengine: ["Hermes", "JSC"] - - test_ios_rntester: - run_unit_tests: false - use_frameworks: "StaticLibraries" - ruby_version: "2.6.10" - requires: - - build_hermes_macos - matrix: - parameters: - jsengine: ["Hermes", "JSC"] - architecture: ["NewArch", "OldArch"] diff --git a/.circleci/configurations/test_workflows/testVisionOS.yml b/.circleci/configurations/test_workflows/testVisionOS.yml deleted file mode 100644 index 37f3fd3f6a9c9d..00000000000000 --- a/.circleci/configurations/test_workflows/testVisionOS.yml +++ /dev/null @@ -1,6 +0,0 @@ - test_visionos: - jobs: - - test_visionos_rntester: - matrix: - parameters: - architecture: ["OldArch", "NewArch"] diff --git a/.github/actions/test-ios-helloworld/action.yml b/.github/actions/test-ios-helloworld/action.yml index c3819ae95270c5..9ae0000d5145b5 100644 --- a/.github/actions/test-ios-helloworld/action.yml +++ b/.github/actions/test-ios-helloworld/action.yml @@ -43,7 +43,7 @@ runs: - name: Run yarn uses: ./.github/actions/yarn-install-with-cache - name: Setup ruby - uses: ruby/setup-ruby@v1.170.0 + uses: ruby/setup-ruby@v1.171.0 with: ruby-version: ${{ inputs.ruby-version }} - name: Install iOS dependencies - Configuration ${{ inputs.flavor }}; New Architecture ${{ inputs.architecture }}; JS Engine ${{ inputs.jsengine }} diff --git a/.github/actions/test-ios-rntester/action.yml b/.github/actions/test-ios-rntester/action.yml index 2829309dd94adc..84af3f822ff1eb 100644 --- a/.github/actions/test-ios-rntester/action.yml +++ b/.github/actions/test-ios-rntester/action.yml @@ -48,7 +48,7 @@ runs: name: hermes-darwin-bin-${{ inputs.flavor }} path: ${{ inputs.hermes-tarball-artifacts-dir }} - name: Setup ruby - uses: ruby/setup-ruby@v1.170.0 + uses: ruby/setup-ruby@v1.171.0 with: ruby-version: ${{ inputs.ruby-version }} - name: Prepare IOS Tests diff --git a/.github/actions/test-visionos-rntester/action.yml b/.github/actions/test-visionos-rntester/action.yml new file mode 100644 index 00000000000000..dd35ffcdb78bc0 --- /dev/null +++ b/.github/actions/test-visionos-rntester/action.yml @@ -0,0 +1,66 @@ +name: test-visionos-rntester +description: Build visionOS RNTester using JSC +inputs: + use-frameworks: + description: The dependency building and linking strategy to use. Must be one of "StaticLibraries", "DynamicFrameworks" + default: StaticLibraries + architecture: + description: The React Native architecture to Test. RNTester has always Fabric enabled, but we want to run integration test with the old arch setup + default: NewArch + ruby-version: + description: The version of ruby that must be used + default: 2.6.10 + flavor: + description: The flavor of the build. Must be one of "Debug", "Release". + default: Debug + react-native-version: + description: The version of react-native + required: true + run-e2e-tests: + description: Whether we want to run E2E tests or not + required: false + default: false + +runs: + using: composite + steps: + - name: Setup xcode + uses: ./.github/actions/setup-xcode + with: + xcode-version: "15.4" + - name: Setup node.js + uses: ./.github/actions/setup-node + - name: Run yarn + uses: ./.github/actions/yarn-install-with-cache + - name: Setup ruby + uses: ruby/setup-ruby@v1.171.0 + with: + ruby-version: ${{ inputs.ruby-version }} + - name: Setup xcode build cache + uses: ./.github/actions/setup-xcode-build-cache + - name: Install CocoaPods dependencies + shell: bash + run: | + export USE_HERMES=0 + + if [[ ${{ inputs.use-frameworks }} == "DynamicFrameworks" ]]; then + export USE_FRAMEWORKS=dynamic + fi + + if [[ ${{ inputs.architecture }} == "NewArch" ]]; then + export RCT_NEW_ARCH_ENABLED=1 + fi + + cd packages/rn-tester + + bundle install + bundle exec pod install + - name: Build RNTester for visionOS + if: ${{ inputs.run-e2e-tests == 'false' }} + shell: bash + run: | + xcodebuild build \ + -workspace packages/rn-tester/RNTesterPods.xcworkspace \ + -scheme RNTester-visionOS \ + -sdk xrsimulator \ + -destination "platform=visionOS Simulator,name=Apple Vision Pro" diff --git a/.github/workflows/test-all.yml b/.github/workflows/test-all.yml index 777916a6b7e2cb..17b07df54c897a 100644 --- a/.github/workflows/test-all.yml +++ b/.github/workflows/test-all.yml @@ -1,14 +1,12 @@ name: Test All -# on: -# workflow_dispatch: -# pull_request: -# push: -# tags: -# - 'v*' -# # nightly build @ 2:15 AM UTC -# schedule: -# - cron: '15 2 * * *' +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + - "*-stable" concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -16,6 +14,7 @@ concurrency: jobs: set_release_type: + if: github.repository == 'facebook/react-native' runs-on: ubuntu-latest outputs: RELEASE_TYPE: ${{ steps.set_release_type.outputs.RELEASE_TYPE }} @@ -37,6 +36,7 @@ jobs: fi prepare_hermes_workspace: + if: github.repository == 'facebook/react-native' runs-on: ubuntu-latest env: HERMES_WS_DIR: /tmp/hermes @@ -55,6 +55,7 @@ jobs: hermes-version-file: ${{ env.HERMES_VERSION_FILE }} build_hermesc_apple: + if: github.repository == 'facebook/react-native' runs-on: macos-13 needs: prepare_hermes_workspace env: @@ -69,6 +70,7 @@ jobs: react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }} build_apple_slices_hermes: + if: github.repository == 'facebook/react-native' runs-on: macos-14 needs: [build_hermesc_apple, prepare_hermes_workspace] env: @@ -95,6 +97,7 @@ jobs: react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }} build_hermes_macos: + if: github.repository == 'facebook/react-native' runs-on: macos-13 needs: [build_apple_slices_hermes, prepare_hermes_workspace] env: @@ -116,6 +119,7 @@ jobs: flavor: ${{ matrix.flavor }} test_ios_rntester_ruby_3_2_0: + if: github.repository == 'facebook/react-native' runs-on: macos-13 needs: [build_apple_slices_hermes, prepare_hermes_workspace, build_hermes_macos] @@ -133,6 +137,7 @@ jobs: react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }} test_ios_rntester_dynamic_frameworks: + if: github.repository == 'facebook/react-native' runs-on: macos-13 needs: [build_apple_slices_hermes, prepare_hermes_workspace, build_hermes_macos] @@ -156,6 +161,7 @@ jobs: react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }} test_ios_rntester: + if: github.repository == 'facebook/react-native' runs-on: macos-13 needs: [build_apple_slices_hermes, prepare_hermes_workspace, build_hermes_macos] @@ -166,7 +172,6 @@ jobs: strategy: fail-fast: false matrix: - jsengine: [Hermes, JSC] architecture: [NewArch, OldArch] steps: - name: Checkout @@ -181,6 +186,26 @@ jobs: hermes-version: ${{ needs.prepare_hermes_workspace.outputs.hermes-version }} react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }} + test_visionos_rntester: + runs-on: macos-14-xlarge + continue-on-error: true + strategy: + fail-fast: false + matrix: + architecture: [NewArch, OldArch] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Run it + uses: ./.github/actions/test-visionos-rntester + with: + jsengine: ${{ matrix.jsengine }} + architecture: ${{ matrix.architecture }} + run-unit-tests: "false" + use-frameworks: StaticLibraries + hermes-version: ${{ needs.prepare_hermes_workspace.outputs.hermes-version }} + react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }} + test_e2e_ios_rntester: if: ${{ github.ref == 'refs/heads/main' || contains(github.ref, 'stable') }} runs-on: macos-13 @@ -238,7 +263,7 @@ jobs: - name: Run yarn uses: ./.github/actions/yarn-install-with-cache - name: Setup ruby - uses: ruby/setup-ruby@v1.170.0 + uses: ruby/setup-ruby@v1.171.0 with: ruby-version: 2.6.10 - name: Download Hermes @@ -344,6 +369,7 @@ jobs: install-java: 'false' build_hermesc_linux: + if: github.repository == 'facebook/react-native' runs-on: ubuntu-latest needs: prepare_hermes_workspace env: @@ -359,6 +385,7 @@ jobs: react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }} build_hermesc_windows: + if: github.repository == 'facebook/react-native' runs-on: windows-2019 needs: prepare_hermes_workspace env: @@ -378,6 +405,7 @@ jobs: react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }} build_android: + if: github.repository == 'facebook/react-native' runs-on: 8-core-ubuntu needs: [set_release_type] container: @@ -516,6 +544,7 @@ jobs: compression-level: 0 test_ios_helloworld_with_ruby_3_2_0: + if: github.repository == 'facebook/react-native' runs-on: macos-13 needs: [prepare_hermes_workspace, build_hermes_macos] # prepare_hermes_workspace must be there because we need its reference to retrieve a couple of outputs env: @@ -534,6 +563,7 @@ jobs: react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }} test_ios_helloworld: + if: github.repository == 'facebook/react-native' runs-on: macos-13 needs: [prepare_hermes_workspace, build_hermes_macos] # prepare_hermes_workspace must be there because we need its reference to retrieve a couple of outputs strategy: @@ -577,6 +607,7 @@ jobs: lint: runs-on: ubuntu-latest + if: github.repository == 'facebook/react-native' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: diff --git a/packages/community-cli-plugin/src/commands/start/runServer.js b/packages/community-cli-plugin/src/commands/start/runServer.js index 9103350e2bb538..5e0054dfa42c17 100644 --- a/packages/community-cli-plugin/src/commands/start/runServer.js +++ b/packages/community-cli-plugin/src/commands/start/runServer.js @@ -122,6 +122,7 @@ async function runServer( let reportEvent: (event: TerminalReportableEvent) => void; const terminal = new Terminal(process.stdout); const ReporterImpl = getReporterImpl(args.customLogReporterPath); + // $FlowIgnore fix this const terminalReporter = new ReporterImpl(terminal); const reporter: Reporter = { update(event: TerminalReportableEvent) { diff --git a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap index a372d1c2aa1979..a943dcf3ecf557 100644 --- a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap +++ b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap @@ -9879,7 +9879,7 @@ exports[`public API should not change unintentionally Libraries/WebSocket/WebSoc exports[`public API should not change unintentionally Libraries/WebSocket/WebSocketInterceptor.js 1`] = `"UNTYPED MODULE"`; exports[`public API should not change unintentionally Libraries/WindowManager/NativeWindowManager.js 1`] = ` -"export * from \\"../../src/private/specs/visionos_modules/NativeWindowManager\\"; +"export * from \\"../../visionos_modules/NativeWindowManager\\"; declare export default typeof NativeWindowManager; " `; @@ -9901,7 +9901,7 @@ declare module.exports: WindowManager; `; exports[`public API should not change unintentionally Libraries/XR/NativeXRModule.js 1`] = ` -"export * from \\"../../src/private/specs/visionos_modules/NativeXRModule\\"; +"export * from \\"../../visionos_modules/NativeXRModule\\"; declare export default typeof NativeXRModule; " `; diff --git a/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj b/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj index 0dbce8f1c21a06..0921a40b90077a 100644 --- a/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj +++ b/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj @@ -1060,6 +1060,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_ASSET_PATHS = "\"RNTester-visionOS/Preview Content\""; @@ -1158,6 +1159,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; diff --git a/scripts/circleci/pipeline_selection.js b/scripts/circleci/pipeline_selection.js index a6d90fbacb211d..5312caa03f6dc6 100644 --- a/scripts/circleci/pipeline_selection.js +++ b/scripts/circleci/pipeline_selection.js @@ -155,24 +155,6 @@ function _computeAndSavePipelineParameters( return; } - // Custom config for visionOS - if (pipelineType === 'VISION_OS') { - const params = { - run_all: false, - run_ios: false, - run_visionos: true, - run_android: false, - run_js: true, - run_e2e: false, - }; - - const stringifiedParams = JSON.stringify(params, null, 2); - fs.writeFileSync(filePath, stringifiedParams); - console.info(`Generated params:\n${stringifiedParams}`); - - return; - } - console.log(`Should run e2e? ${shouldRunE2E}`); if (pipelineType === 'ALL') { fs.writeFileSync( @@ -185,7 +167,6 @@ function _computeAndSavePipelineParameters( const params = { run_all: false, run_ios: pipelineType === 'RUN_IOS', - run_visionos: true, run_android: pipelineType === 'RUN_ANDROID', run_js: pipelineType === 'RUN_JS', run_e2e: shouldRunE2E, @@ -213,7 +194,6 @@ function createConfigs(inputPath, outputPath, configFile) { const baseFolder = 'test_workflows'; const testConfigs = { run_ios: ['testIOS.yml'], - run_visionos: ['testVisionOS.yml'], run_android: ['testAndroid.yml'], run_e2e: ['testE2E.yml'], run_all: ['testJS.yml', 'testAll.yml'], @@ -263,5 +243,5 @@ function filterJobs(outputPath) { return; } } - _computeAndSavePipelineParameters('VISION_OS', outputPath, shouldRunE2E); + _computeAndSavePipelineParameters('ALL', outputPath, shouldRunE2E); } diff --git a/yarn.lock b/yarn.lock index fd82ae2a79ba56..5055375a3c2e5b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2528,17 +2528,17 @@ resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.74.0.tgz#560bec29b2699c4d4cbfecfb4c2c5025397aac23" integrity sha512-I8Yy6bCKU5R4qZX4jfXsAPsHyuGHlulbnbG3NqO9JgZ3T2DJxJiZE39rHORP0trLnRh0rIeRcs4Mc14fAE6hrw== -"@react-native/babel-plugin-codegen@0.74.85": - version "0.74.85" - resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.85.tgz#067224bf5099ee2679babd700c7115822a747004" - integrity sha512-48TSDclRB5OMXiImiJkLxyCfRyLsqkCgI8buugCZzvXcYslfV7gCvcyFyQldtcOmerV+CK4RAj7QS4hmB5Mr8Q== +"@react-native/babel-plugin-codegen@0.74.86": + version "0.74.86" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.86.tgz#4edbb8887c5cedefd52e8fda973b1da97c779db4" + integrity sha512-fO7exk0pdsOSsK3fvDz4YKe5nMeAMrsIGi525pft/L+dedjdeiWYmEoQVc9NElxwwNCldwRY6eNMw6IhKyjzLA== dependencies: - "@react-native/codegen" "0.74.85" + "@react-native/codegen" "0.74.86" -"@react-native/babel-preset@0.74.85": - version "0.74.85" - resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.74.85.tgz#3ce6ca77a318dec226fd9e3fff9c2ef7b0aa66e3" - integrity sha512-yMHUlN8INbK5BBwiBuQMftdWkpm1IgCsoJTKcGD2OpSgZhwwm8RUSvGhdRMzB2w7bsqqBmaEMleGtW6aCR7B9w== +"@react-native/babel-preset@0.74.86": + version "0.74.86" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.74.86.tgz#8bb3fbd49ce11470eb8022dea2c1e51bfa8dedd4" + integrity sha512-6A+1NVAHugbBLFNU4iaYrq2lx8P7pINyqoyTtVAqd375PShRmLwu6GvuF3b/4avC97s6LmBljVTJ1xVHukA42g== dependencies: "@babel/core" "^7.20.0" "@babel/plugin-proposal-async-generator-functions" "^7.0.0" @@ -2580,7 +2580,7 @@ "@babel/plugin-transform-typescript" "^7.5.0" "@babel/plugin-transform-unicode-regex" "^7.0.0" "@babel/template" "^7.0.0" - "@react-native/babel-plugin-codegen" "0.74.85" + "@react-native/babel-plugin-codegen" "0.74.86" babel-plugin-transform-flow-enums "^0.0.2" react-refresh "^0.14.0" @@ -2594,10 +2594,10 @@ jscodeshift "^0.14.0" nullthrows "^1.1.1" -"@react-native/codegen@0.74.85": - version "0.74.85" - resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.74.85.tgz#568464071c0b9be741da1a1ab43b1df88180ca5d" - integrity sha512-N7QwoS4Hq/uQmoH83Ewedy6D0M7xbQsOU3OMcQf0eY3ltQ7S2hd9/R4UTalQWRn1OUJfXR6OG12QJ4FStKgV6Q== +"@react-native/codegen@0.74.86": + version "0.74.86" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.74.86.tgz#90933f5ee555ffb95ca27372ba1e836f698c3192" + integrity sha512-BOwABta9035GJ/zLMkxQfgPMr47u1/1HqNIMk10FqmTe0jmROOxKEAeP4FbeS5L1voO4ug3dqr+mcuHrG+HNhA== dependencies: "@babel/parser" "^7.20.0" glob "^7.1.1" @@ -2624,18 +2624,18 @@ node-fetch "^2.2.0" readline "^1.3.0" -"@react-native/debugger-frontend@0.74.85": - version "0.74.85" - resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.74.85.tgz#a7af94a7b81cb59f241fd1771d1b083445329700" - integrity sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ== +"@react-native/debugger-frontend@0.74.86": + version "0.74.86" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.74.86.tgz#87a3c7dfb12ee6e981165e304bbbe20e9b1fa009" + integrity sha512-Spq1kFX4qvPmT4HuTwpi1ALFtojlJ6s4GpWU2OnpevC/z7ks36lhD3J0rd0D9U5bkxtTYLcg31fPv7nGFC7XZg== "@react-native/dev-middleware@^0.74.0": - version "0.74.85" - resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.74.85.tgz#eca35aceb882b1111385f7c20f1aad7a33a2734e" - integrity sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w== + version "0.74.86" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.74.86.tgz#b95f936c141dd44309a9ec558ed5ce034e270bc4" + integrity sha512-sc0tYxYt6dkUbNFI1IANzKO67M41BhjbJ6k/CHoFi/tGoNmHzg9IUZ89V4g3H8hn/VW9dETnPOFna1VO0sWrXg== dependencies: "@isaacs/ttlcache" "^1.4.1" - "@react-native/debugger-frontend" "0.74.85" + "@react-native/debugger-frontend" "0.74.86" "@rnx-kit/chromium-edge-launcher" "^1.0.0" chrome-launcher "^0.15.2" connect "^3.6.5" @@ -2659,12 +2659,12 @@ integrity sha512-DMpn5l1TVkIBFe9kE54pwOI2fQYbQNZ6cto0IuCUxQVUFJBcFMJ6Gbk8jhz8tvcWuDW3xVK9AWq9DJTkuchWsQ== "@react-native/metro-babel-transformer@^0.74.0": - version "0.74.85" - resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.85.tgz#d530d9a6bd319ece226a2d6aaa00b464a1928089" - integrity sha512-JIrXqEwhTvWPtGArgMptIPGstMdXQIkwSjKVYt+7VC4a9Pw1GurIWanIJheEW6ZuCVvTc0VZkwglFz9JVjzDjA== + version "0.74.86" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.86.tgz#d67d3bf1699fcf834a70155635b30ae9f667b6dd" + integrity sha512-/9qN5zcnTHGDkC4jWibnoGmRnzDXiurl5wmkvspgnsdrJINN6eGpK8sdIn6nrHFOuPlp3Metqw3HkxbuAfNUXw== dependencies: "@babel/core" "^7.20.0" - "@react-native/babel-preset" "0.74.85" + "@react-native/babel-preset" "0.74.86" hermes-parser "0.19.1" nullthrows "^1.1.1" @@ -2911,9 +2911,9 @@ integrity sha512-CK2fnrQlIgKlCV3N2kM+Gznb5USlwA1KFX3rJVHmgVk6NJxFPuQ86pAcvKnu37IA4BGlSRz7sEE1lHL1aLZ/eQ== "@types/node@^18.0.0": - version "18.19.42" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.42.tgz#b54ed4752c85427906aab40917b0f7f3d724bf72" - integrity sha512-d2ZFc/3lnK2YCYhos8iaNIYu9Vfhr92nHiyJHRltXWjXUBjEE+A4I58Tdbnw4VhggSW+2j5y5gTrLs4biNnubg== + version "18.19.43" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.43.tgz#fe01bb599b60bb3279c26d0fdb751d2f3e299ae0" + integrity sha512-Mw/YlgXnyJdEwLoFv2dpuJaDFriX+Pc+0qOBJ57jC1H6cDxIj2xc5yUrdtArDVG0m+KV6622a4p2tenEqB3C/g== dependencies: undici-types "~5.26.4"