From 9828c5b731de62caaaa56bd56fc3218f17b03c5e Mon Sep 17 00:00:00 2001 From: Riccardo Cipolleschi Date: Tue, 11 Jun 2024 15:57:46 +0100 Subject: [PATCH] [RN][GHA] Move HelloWorld jobs from CCI to GHA --- .../action.yml | 89 +++++++++---------- .github/workflows/nightly.yml | 55 +++++++----- .github/workflows/publish-release.yml | 58 +++++++----- .github/workflows/test-all.yml | 75 +++++++++------- 4 files changed, 158 insertions(+), 119 deletions(-) rename .github/actions/{test_ios_template => test_ios_helloworld}/action.yml (51%) diff --git a/.github/actions/test_ios_template/action.yml b/.github/actions/test_ios_helloworld/action.yml similarity index 51% rename from .github/actions/test_ios_template/action.yml rename to .github/actions/test_ios_helloworld/action.yml index f8f66d40cc9f6c..b0e225cf39d80d 100644 --- a/.github/actions/test_ios_template/action.yml +++ b/.github/actions/test_ios_helloworld/action.yml @@ -1,21 +1,37 @@ -name: test_ios_template -description: Test iOS Template +name: test_ios_helloworld +description: Test iOS Hello World inputs: jsengine: description: Which JavaScript engine to use. Must be one of "Hermes", "JSC". + type: choice default: Hermes + options: + - JSC + - Hermes use-frameworks: description: The dependency building and linking strategy to use. Must be one of "StaticLibraries", "DynamicFrameworks" + type: choice default: StaticLibraries + options: + - StaticLibraries + - DynamicFrameworks 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 + type: choice default: OldArch + options: + - OldArch + - 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". + type: choice default: Debug + options: + - Debug + - Release hermes-version: description: The version of hermes required: true @@ -29,70 +45,51 @@ runs: uses: ./.github/actions/setup-xcode - name: Setup node.js uses: ./.github/actions/setup-node - - name: Run yarn - shell: bash - run: yarn install --non-interactive - name: Cache setup id: cache_setup uses: ./.github/actions/cache_setup with: hermes-version: ${{ inputs.hermes-version }} react-native-version: ${{ inputs.react-native-version }} - - name: Download npm package artifact - uses: actions/download-artifact@v4.1.3 - with: - name: react-native-package - path: build + - name: Run yarn + shell: bash + run: yarn install --non-interactive - name: Setup Hermes workspace uses: ./.github/actions/setup_hermes_workspace - name: Setup ruby uses: ruby/setup-ruby@v1.170.0 with: ruby-version: ${{ inputs.ruby-version }} - - name: Set HERMES_ENGINE_TARBALL_PATH - if: inputs.jsengine == 'Hermes' - shell: bash - run: | - BUILD_TYPE="${{ inputs.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" >> $GITHUB_ENV - - name: Create iOS template project - shell: bash - run: | - PACKAGE=$(cat build/react-native-package-version) - PATH_TO_PACKAGE="$GITHUB_WORKSPACE/build/$PACKAGE" - node ./scripts/releases/update-template-package.js "{\"react-native\":\"file:$PATH_TO_PACKAGE\"}" - node ./scripts/e2e/init-template-e2e.js --projectName $PROJECT_NAME --templatePath "$GITHUB_WORKSPACE/packages/react-native" --directory "/tmp/$PROJECT_NAME" --verbose - - name: Yarn install in template project - shell: bash - run: | - cd /tmp/$PROJECT_NAME/android/ - yarn install --non-interactive - name: Install iOS dependencies - Configuration ${{ inputs.flavor }}; New Architecture ${{ inputs.architecture }}; JS Engine ${{ inputs.jsengine }} shell: bash run: | - cd /tmp/$PROJECT_NAME/ios + cd packages/helloworld + args=() - if [[ ${{ inputs.architecture }} == "NewArch" ]]; then - export RCT_NEW_ARCH_ENABLED=1 - fi - - if [[ ${{ inputs.jsengine }} == "JSC" ]]; then - export USE_HERMES=0 + if [[ ${{ inputs.architecture }} == "OldArch" ]]; then + args+=(--arch old) fi if [[ ${{ inputs.use-frameworks }} == "DynamicFrameworks" ]]; then - export USE_FRAMEWORKS=dynamic + args+=(--frameworks dynamic) fi - cd .. - bundle install - bundle exec pod install --project-directory=ios - - name: Build template project + if [[ ${{ inputs.jsengine }} == "JSC" ]]; then + args+=(--jsvm jsc) + yarn bootstrap ios "${args[@]}" | cat + else + BUILD_TYPE="${{ inputs.flavor }}" + TARBALL_FILENAME=$(node ../react-native/scripts/hermes/get-tarball-name.js --buildType "$BUILD_TYPE") + HERMES_PATH="$HERMES_WS_DIR/hermes-runtime-darwin/$TARBALL_FILENAME" + HERMES_ENGINE_TARBALL_PATH="$HERMES_PATH" yarn bootstrap ios "${args[@]}" | cat + fi + - name: Build HelloWorld project shell: bash run: | - xcodebuild build \ - -configuration ${{ inputs.flavor }} \ - -workspace /tmp/$PROJECT_NAME/ios/$PROJECT_NAME.xcworkspace \ - -scheme $PROJECT_NAME \ - -sdk iphonesimulator + cd packages/helloworld + args=() + if [[ ${{ inputs.flavor }} == "Release" ]]; then + args+=(--prod) + fi + yarn build ios "${args[@]}" | cat + yarn bundle ios "${args[@]}" | cat diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 06d3b4b588a1ba..76de850c9a4bb8 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -21,6 +21,7 @@ jobs: run: | echo "Setting release type to nightly" echo "RELEASE_TYPE=nightly" >> $GITHUB_OUTPUT + prepare_hermes_workspace: runs-on: ubuntu-latest env: @@ -75,6 +76,7 @@ jobs: cp -r packages/react-native/sdks/hermes/* $HERMES_WS_DIR/hermes/. echo ${{ steps.hermes-version.outputs.version }} + build_hermesc_apple: runs-on: macos-13 needs: prepare_hermes_workspace @@ -104,6 +106,7 @@ jobs: cd ./packages/react-native/sdks/hermes || exit 1 . ./utils/build-apple-framework.sh build_host_hermesc_if_needed + build_apple_slices_hermes: runs-on: macos-14 needs: [build_hermesc_apple, prepare_hermes_workspace] @@ -133,18 +136,19 @@ jobs: - name: Check if the required artifacts already exist id: check_if_apple_artifacts_are_there run: | - if ${{ matrix.flavor == 'Debug' }} && \\ - ${{ steps.cache_setup.outputs.cache-hit-hermes-tarball-debug == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-macos-bin-debug == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-dsym-debug == true }} ; then - echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV - fi + FLAVOR="${{ matrix.flavor }}" + echo "Flavor is $FLAVOR" + OSX_BIN="/tmp/hermes/osx-bin/$FLAVOR" + DSYM="/tmp/hermes/dSYM/$FLAVOR" + HERMES="/tmp/hermes/hermes-runtime-darwin/hermes-ios-$FLAVOR.tar.gz" - if ${{ matrix.flavor == 'Release' }} && \\ - ${{ steps.cache_setup.outputs.cache-hit-hermes-tarball-release == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-macos-bin-release == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-dsym-release == true }} ; then + if [[ -d "$OSX_BIN" ]] && \ + [[ -d "$DSYM" ]] && \ + [[ -f "$HERMES" ]]; then + + echo "Artifacts are there!" echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV + echo "ARTIFACTS_EXIST=true" >> $GITHUB_OUTPUT fi - name: Build the Hermes ${{ matrix.slice }} frameworks if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != true }} @@ -160,6 +164,11 @@ jobs: exit 0 fi + if [[ "$ARTIFACTS_EXIST" ]]; then + echo "[HERMES] Skipping! Artifacts exists already." + exit 0 + fi + if [[ "$SLICE" == "macosx" ]]; then echo "[HERMES] Building Hermes for MacOS" BUILD_TYPE="${{ matrix.flavor }}" ./utils/build-mac-framework.sh @@ -192,6 +201,7 @@ jobs: with: path: ./packages/react-native/sdks/hermes/build_${{ matrix.slice }}_${{ matrix.flavor }} key: v4-hermes-apple-${{ needs.prepare_hermes_workspace.outputs.hermes-version }}-${{ needs.prepare_hermes_workspace.outputs.react-native-version }}-${{ hashfiles('packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh') }}-${{ matrix.slice }}-${{ matrix.flavor }} + build_hermes_macos: runs-on: macos-13 needs: [build_apple_slices_hermes, prepare_hermes_workspace] @@ -221,20 +231,20 @@ jobs: - name: Check if the required artifacts already exist id: check_if_apple_artifacts_are_there run: | - if ${{ matrix.flavor == 'Debug' }} && - ${{ steps.cache_setup.outputs.cache-hit-hermes-tarball-debug == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-macos-bin-debug == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-dsym-debug == true }} ; then - echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV - fi + FLAVOR="${{ matrix.flavor }}" + echo "Flavor is $FLAVOR" + OSX_BIN="/tmp/hermes/osx-bin/$FLAVOR" + DSYM="/tmp/hermes/dSYM/$FLAVOR" + HERMES="/tmp/hermes/hermes-runtime-darwin/hermes-ios-$FLAVOR.tar.gz" + + if [[ -d "$OSX_BIN" ]] && \ + [[ -d "$DSYM" ]] && \ + [[ -f "$HERMES" ]]; then - if ${{ matrix.flavor == 'Release' }} && \\ - ${{ steps.cache_setup.outputs.cache-hit-hermes-tarball-release == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-macos-bin-release == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-dsym-release == true }} ; then + echo "Artifacts are there!" echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV + echo "ARTIFACTS_EXIST=true" >> $GITHUB_OUTPUT fi - - name: Yarn- Install Dependencies if: ${{ ! contains(github.event.head_commit.message, 'Bump metro@') && steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != true }} run: yarn install --non-interactive @@ -365,6 +375,7 @@ jobs: with: name: hermes-dSYM-${{ matrix.flavor }} path: /tmp/hermes/dSYM/${{ matrix.flavor }} + build_hermesc_linux: runs-on: ubuntu-latest needs: prepare_hermes_workspace @@ -409,6 +420,7 @@ jobs: with: name: hermes-linux-bin path: /tmp/hermes/linux64-bin + build_hermesc_windows: runs-on: windows-2019 needs: prepare_hermes_workspace @@ -489,6 +501,7 @@ jobs: with: name: hermes-win64-bin path: D:\tmp\hermes\win64-bin\ + build_android: runs-on: 8-core-ubuntu needs: [set_release_type] diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 05b8fa743e8f33..978f806578cdb0 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -3,7 +3,7 @@ name: Publish release on: push: tags: - - "v0\.[0-9]+\.[0-9]+(-\S+)?" # This should match v0.X.Y, v0.X.Y-rc.0 + - "v0\.[0-9]+\.[0-9]+([-]\S+)?" # This should match v0.X.Y, v0.X.Y-rc.0 jobs: set_release_type: @@ -19,6 +19,7 @@ jobs: run: | echo "Setting release type to release" echo "RELEASE_TYPE=release" >> $GITHUB_OUTPUT + prepare_hermes_workspace: runs-on: ubuntu-latest env: @@ -73,6 +74,7 @@ jobs: cp -r packages/react-native/sdks/hermes/* $HERMES_WS_DIR/hermes/. echo ${{ steps.hermes-version.outputs.version }} + build_hermesc_apple: runs-on: macos-13 needs: prepare_hermes_workspace @@ -102,6 +104,7 @@ jobs: cd ./packages/react-native/sdks/hermes || exit 1 . ./utils/build-apple-framework.sh build_host_hermesc_if_needed + build_apple_slices_hermes: runs-on: macos-14 needs: [build_hermesc_apple, prepare_hermes_workspace] @@ -131,18 +134,19 @@ jobs: - name: Check if the required artifacts already exist id: check_if_apple_artifacts_are_there run: | - if ${{ matrix.flavor == 'Debug' }} && \\ - ${{ steps.cache_setup.outputs.cache-hit-hermes-tarball-debug == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-macos-bin-debug == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-dsym-debug == true }} ; then - echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV - fi + FLAVOR="${{ matrix.flavor }}" + echo "Flavor is $FLAVOR" + OSX_BIN="/tmp/hermes/osx-bin/$FLAVOR" + DSYM="/tmp/hermes/dSYM/$FLAVOR" + HERMES="/tmp/hermes/hermes-runtime-darwin/hermes-ios-$FLAVOR.tar.gz" - if ${{ matrix.flavor == 'Release' }} && \\ - ${{ steps.cache_setup.outputs.cache-hit-hermes-tarball-release == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-macos-bin-release == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-dsym-release == true }} ; then + if [[ -d "$OSX_BIN" ]] && \ + [[ -d "$DSYM" ]] && \ + [[ -f "$HERMES" ]]; then + + echo "Artifacts are there!" echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV + echo "ARTIFACTS_EXIST=true" >> $GITHUB_OUTPUT fi - name: Build the Hermes ${{ matrix.slice }} frameworks if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != true }} @@ -158,6 +162,11 @@ jobs: exit 0 fi + if [[ "$ARTIFACTS_EXIST" ]]; then + echo "[HERMES] Skipping! Artifacts exists already." + exit 0 + fi + if [[ "$SLICE" == "macosx" ]]; then echo "[HERMES] Building Hermes for MacOS" BUILD_TYPE="${{ matrix.flavor }}" ./utils/build-mac-framework.sh @@ -190,6 +199,7 @@ jobs: with: path: ./packages/react-native/sdks/hermes/build_${{ matrix.slice }}_${{ matrix.flavor }} key: v4-hermes-apple-${{ needs.prepare_hermes_workspace.outputs.hermes-version }}-${{ needs.prepare_hermes_workspace.outputs.react-native-version }}-${{ hashfiles('packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh') }}-${{ matrix.slice }}-${{ matrix.flavor }} + build_hermes_macos: runs-on: macos-13 needs: [build_apple_slices_hermes, prepare_hermes_workspace] @@ -219,20 +229,20 @@ jobs: - name: Check if the required artifacts already exist id: check_if_apple_artifacts_are_there run: | - if ${{ matrix.flavor == 'Debug' }} && - ${{ steps.cache_setup.outputs.cache-hit-hermes-tarball-debug == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-macos-bin-debug == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-dsym-debug == true }} ; then - echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV - fi + FLAVOR="${{ matrix.flavor }}" + echo "Flavor is $FLAVOR" + OSX_BIN="/tmp/hermes/osx-bin/$FLAVOR" + DSYM="/tmp/hermes/dSYM/$FLAVOR" + HERMES="/tmp/hermes/hermes-runtime-darwin/hermes-ios-$FLAVOR.tar.gz" - if ${{ matrix.flavor == 'Release' }} && \\ - ${{ steps.cache_setup.outputs.cache-hit-hermes-tarball-release == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-macos-bin-release == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-dsym-release == true }} ; then + if [[ -d "$OSX_BIN" ]] && \ + [[ -d "$DSYM" ]] && \ + [[ -f "$HERMES" ]]; then + + echo "Artifacts are there!" echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV + echo "ARTIFACTS_EXIST=true" >> $GITHUB_OUTPUT fi - - name: Yarn- Install Dependencies if: ${{ ! contains(github.event.head_commit.message, 'Bump metro@') && steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != true }} run: yarn install --non-interactive @@ -363,6 +373,7 @@ jobs: with: name: hermes-dSYM-${{ matrix.flavor }} path: /tmp/hermes/dSYM/${{ matrix.flavor }} + build_hermesc_linux: runs-on: ubuntu-latest needs: prepare_hermes_workspace @@ -407,6 +418,7 @@ jobs: with: name: hermes-linux-bin path: /tmp/hermes/linux64-bin + build_hermesc_windows: runs-on: windows-2019 needs: prepare_hermes_workspace @@ -487,6 +499,7 @@ jobs: with: name: hermes-win64-bin path: D:\tmp\hermes\win64-bin\ + build_android: runs-on: 8-core-ubuntu needs: [set_release_type] @@ -533,6 +546,7 @@ jobs: name: rntester-apk path: packages/rn-tester/android/app/build/outputs/apk/ compression-level: 0 + build_npm_package: runs-on: 8-core-ubuntu needs: [set_release_type, prepare_hermes_workspace, build_hermes_macos, build_hermesc_linux, build_hermesc_windows,build_android] diff --git a/.github/workflows/test-all.yml b/.github/workflows/test-all.yml index 681e8141fe826d..2a47305e5c27ee 100644 --- a/.github/workflows/test-all.yml +++ b/.github/workflows/test-all.yml @@ -29,6 +29,7 @@ jobs: echo "Setting release type to dry-run" echo "RELEASE_TYPE=dry-run" >> $GITHUB_OUTPUT fi + prepare_hermes_workspace: runs-on: ubuntu-latest env: @@ -82,6 +83,7 @@ jobs: cp -r packages/react-native/sdks/hermes/* $HERMES_WS_DIR/hermes/. echo ${{ steps.hermes-version.outputs.version }} + build_hermesc_apple: runs-on: macos-13 needs: prepare_hermes_workspace @@ -111,6 +113,7 @@ jobs: cd ./packages/react-native/sdks/hermes || exit 1 . ./utils/build-apple-framework.sh build_host_hermesc_if_needed + build_apple_slices_hermes: runs-on: macos-14 needs: [build_hermesc_apple, prepare_hermes_workspace] @@ -140,21 +143,20 @@ jobs: - name: Check if the required artifacts already exist id: check_if_apple_artifacts_are_there run: | - if ${{ matrix.flavor == 'Debug' }} && \\ - ${{ steps.cache_setup.outputs.cache-hit-hermes-tarball-debug == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-macos-bin-debug == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-dsym-debug == true }} ; then - echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV - fi + FLAVOR="${{ matrix.flavor }}" + echo "Flavor is $FLAVOR" + OSX_BIN="/tmp/hermes/osx-bin/$FLAVOR" + DSYM="/tmp/hermes/dSYM/$FLAVOR" + HERMES="/tmp/hermes/hermes-runtime-darwin/hermes-ios-$FLAVOR.tar.gz" + + if [[ -d "$OSX_BIN" ]] && \ + [[ -d "$DSYM" ]] && \ + [[ -f "$HERMES" ]]; then - if ${{ matrix.flavor == 'Release' }} && \\ - ${{ steps.cache_setup.outputs.cache-hit-hermes-tarball-release == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-macos-bin-release == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-dsym-release == true }} ; then + echo "Artifacts are there!" echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV fi - name: Build the Hermes ${{ matrix.slice }} frameworks - if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != true }} run: | cd ./packages/react-native/sdks/hermes || exit 1 SLICE=${{ matrix.slice }} @@ -167,6 +169,11 @@ jobs: exit 0 fi + if [[ "$ARTIFACTS_EXIST" ]]; then + echo "[HERMES] Skipping! Artifacts exists already." + exit 0 + fi + if [[ "$SLICE" == "macosx" ]]; then echo "[HERMES] Building Hermes for MacOS" BUILD_TYPE="${{ matrix.flavor }}" ./utils/build-mac-framework.sh @@ -194,11 +201,11 @@ jobs: exit 1 fi - name: Save slice cache - if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != true }} uses: actions/cache@v4.0.0 with: path: ./packages/react-native/sdks/hermes/build_${{ matrix.slice }}_${{ matrix.flavor }} key: v4-hermes-apple-${{ needs.prepare_hermes_workspace.outputs.hermes-version }}-${{ needs.prepare_hermes_workspace.outputs.react-native-version }}-${{ hashfiles('packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh') }}-${{ matrix.slice }}-${{ matrix.flavor }} + build_hermes_macos: runs-on: macos-13 needs: [build_apple_slices_hermes, prepare_hermes_workspace] @@ -228,22 +235,21 @@ jobs: - name: Check if the required artifacts already exist id: check_if_apple_artifacts_are_there run: | - if ${{ matrix.flavor == 'Debug' }} && - ${{ steps.cache_setup.outputs.cache-hit-hermes-tarball-debug == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-macos-bin-debug == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-dsym-debug == true }} ; then - echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV - fi + FLAVOR="${{ matrix.flavor }}" + echo "Flavor is $FLAVOR" + OSX_BIN="/tmp/hermes/osx-bin/$FLAVOR" + DSYM="/tmp/hermes/dSYM/$FLAVOR" + HERMES="/tmp/hermes/hermes-runtime-darwin/hermes-ios-$FLAVOR.tar.gz" - if ${{ matrix.flavor == 'Release' }} && \\ - ${{ steps.cache_setup.outputs.cache-hit-hermes-tarball-release == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-macos-bin-release == true }} && \ - ${{ steps.cache_setup.outputs.cache-hit-dsym-release == true }} ; then + if [[ -d "$OSX_BIN" ]] && \ + [[ -d "$DSYM" ]] && \ + [[ -f "$HERMES" ]]; then + + echo "Artifacts are there!" echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV + echo "ARTIFACTS_EXIST=true" >> $GITHUB_OUTPUT fi - - name: Yarn- Install Dependencies - if: ${{ ! contains(github.event.head_commit.message, 'Bump metro@') && steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != true }} run: yarn install --non-interactive - name: Slice cache macosx if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != true }} @@ -372,6 +378,7 @@ jobs: with: name: hermes-dSYM-${{ matrix.flavor }} path: /tmp/hermes/dSYM/${{ matrix.flavor }} + test_ios_rntester_ruby_3_2_0: runs-on: macos-13 needs: @@ -410,6 +417,7 @@ jobs: use-frameworks: DynamicFrameworks hermes-version: ${{ needs.prepare_hermes_workspace.outputs.hermes-version }} react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }} + test_ios_rntester: runs-on: macos-13 needs: @@ -435,6 +443,7 @@ jobs: use-frameworks: StaticLibraries hermes-version: ${{ needs.prepare_hermes_workspace.outputs.hermes-version }} react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }} + build_hermesc_linux: runs-on: ubuntu-latest needs: prepare_hermes_workspace @@ -479,6 +488,7 @@ jobs: with: name: hermes-linux-bin path: /tmp/hermes/linux64-bin + build_hermesc_windows: runs-on: windows-2019 needs: prepare_hermes_workspace @@ -559,6 +569,7 @@ jobs: with: name: hermes-win64-bin path: D:\tmp\hermes\win64-bin\ + build_android: runs-on: 8-core-ubuntu needs: [set_release_type] @@ -605,6 +616,7 @@ jobs: name: rntester-apk path: packages/rn-tester/android/app/build/outputs/apk/ compression-level: 0 + build_npm_package: runs-on: 8-core-ubuntu needs: @@ -780,6 +792,7 @@ jobs: -H "Accept: application/vnd.github.v3+json" \ -H "Authorization: Bearer $REACT_NATIVE_BOT_GITHUB_TOKEN" \ -d "{\"event_type\": \"publish\", \"client_payload\": { \"version\": \"${{ github.ref_name }}\" }}" + test_android_template: runs-on: ubuntu-latest needs: [prepare_hermes_workspace, build_npm_package] @@ -851,9 +864,10 @@ jobs: name: template-apk-${{ matrix.flavor }}-${{ matrix.architecture }}-${{ matrix.jsengine }} path: /tmp/AndroidTemplateProject/android/app/build/outputs/apk/ compression-level: 0 - test_ios_template_with_ruby_3_2_0: + + test_ios_helloworld_with_ruby_3_2_0: runs-on: macos-13 - needs: [prepare_hermes_workspace, build_npm_package] + 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: PROJECT_NAME: iOSTemplateProject HERMES_WS_DIR: /tmp/hermes @@ -861,16 +875,17 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4.1.1 - - uses: ./.github/actions/test_ios_template + - uses: ./.github/actions/test_ios_helloworld with: ruby-version: 3.2.0 architecture: NewArch flavor: Debug hermes-version: ${{ needs.prepare_hermes_workspace.outputs.hermes-version }} react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }} - test_ios_template: + + test_ios_helloworld: runs-on: macos-13 - needs: [prepare_hermes_workspace, build_npm_package] + 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: matrix: flavor: [Debug, Release] @@ -888,7 +903,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4.1.1 - - uses: ./.github/actions/test_ios_template + - uses: ./.github/actions/test_ios_helloworld with: flavor: ${{ matrix.flavor }} jsengine: ${{ matrix.jsengine }}