diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 447f6ea910..82961085ea 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -33,250 +33,35 @@ x-common-params: build.branch != 'trunk' && build.branch !~ /^release.*/ && build.branch !~ /^dependabot\/submodules.*/ steps: - - label: Lint - key: lint - plugins: - - *gb-mobile-docker-container - - *git-cache-plugin - command: | - echo "--- :docker: Additional Docker image setup" - source /root/.bashrc - - echo "--- :docker::node: Setup Node environment" - nvm install && nvm use - - .buildkite/commands/lint.sh - notify: - - github_commit_status: - context: Lint - - - label: Android Unit Tests - key: android-unit-tests - plugins: - - *gb-mobile-docker-container - - *ci_toolkit_plugin - command: | - echo "--- :docker: Additional Docker image setup" - source /root/.bashrc - - echo "--- :docker::node: Setup Node environment" - nvm install && nvm use - - .buildkite/commands/unit-tests-android.sh - env: - JEST_JUNIT_OUTPUT_FILE: reports/test-results/android-test-results.xml - artifact_paths: - - ./logs/*.log - - ./reports/test-results/*.xml - notify: - - github_commit_status: - context: Android Unit Tests - - - label: iOS Unit Tests - key: ios-unit-tests - plugins: - - *gb-mobile-docker-container - - *ci_toolkit_plugin - command: | - echo "--- :docker: Additional Docker image setup" - source /root/.bashrc - - echo "--- :docker::node: Setup Node environment" - nvm install && nvm use - - .buildkite/commands/unit-tests-ios.sh - artifact_paths: - - ./logs/*.log - - ./reports/test-results/*.xml - notify: - - github_commit_status: - context: iOS Unit Tests - - - label: "Build JS Bundles" - depends_on: - - lint - - android-unit-tests - - ios-unit-tests - key: "js-bundles" - plugins: - - *gb-mobile-docker-container - - *git-cache-plugin + - label: Android E2E Tests – Android Queue command: | - source /root/.bashrc - - echo "--- :node: Setup Node environment" - nvm install && nvm use - - echo "--- :npm: Install Node dependencies" - npm ci --unsafe-perm --prefer-offline --no-audit --no-progress - - if [[ -z "$BUILDKITE_TAG" ]]; then - echo "--- :package: Skip bundle prep work" - else - echo "--- :package: Run bundle prep work" - npm run prebundle:js - fi - - echo "--- :android: Build Android bundle" - npm run bundle:android - - echo "--- :arrow_up: Upload Android bundle artifact" - buildkite-agent artifact upload bundle/android/App.js - - if [[ -n "$BUILDKITE_TAG" ]]; then - echo "--- :arrow_up: Upload Android source map" - node gutenberg/node_modules/react-native/scripts/compose-source-maps.js bundle/android/App.text.js.map bundle/android/App.js.map -o bundle/android/App.composed.js.map - buildkite-agent artifact upload bundle/android/App.composed.js.map - fi - - echo "--- :ios: Build iOS bundle" - npm run bundle:ios - - echo "--- :arrow_up: Upload iOS bundle artifact" - buildkite-agent artifact upload bundle/ios/App.js - tar -czvf ios-assets.tar.gz -C ios-xcframework/Gutenberg/Resources assets/ - buildkite-agent artifact upload ios-assets.tar.gz - - if [[ -n "$BUILDKITE_TAG" ]]; then - echo "--- :arrow_up: Upload iOS source map" - node gutenberg/node_modules/react-native/scripts/compose-source-maps.js bundle/ios/App.text.js.map bundle/ios/App.js.map -o bundle/ios/App.composed.js.map - buildkite-agent artifact upload bundle/ios/App.composed.js.map - fi - - - label: "Build Android RN Aztec & Publish to S3" - depends_on: - - lint - - android-unit-tests - key: "publish-react-native-aztec-android" - plugins: - - *git-cache-plugin - - *publish-android-artifacts-docker-container - command: .buildkite/commands/publish-react-native-aztec-android-artifacts.sh - - - label: "Build Android RN Bridge & Publish to S3" - depends_on: - - "js-bundles" - - "publish-react-native-aztec-android" - plugins: - - *git-cache-plugin - - *publish-android-artifacts-docker-container - command: .buildkite/commands/publish-react-native-bridge-android-artifacts.sh - - - label: Build iOS RN XCFramework & Publish to S3 - depends_on: js-bundles - command: .buildkite/commands/publish-react-native-ios-artifacts.sh - artifact_paths: - - ios-xcframework/build/xcframeworks/*.tar.gz - plugins: - - *ci_toolkit_plugin - - *nvm_plugin - - *git-cache-plugin - agents: - queue: mac - env: *xcode_agent_env - - - label: iOS Build and Sauce Labs - key: ios-build-and-saucelabs - depends_on: - - lint - - ios-unit-tests - command: .buildkite/commands/build-ios.sh - plugins: - - *ci_toolkit_plugin - - *nvm_plugin - - *git-cache-plugin - artifact_paths: - - ./gutenberg/packages/react-native-editor/ios/GutenbergDemo.app.zip - agents: - queue: mac - env: *xcode_agent_env - - - label: Test iOS on Device – Canary Pages - depends_on: ios-build-and-saucelabs - command: .buildkite/commands/test-ios.sh --canary + npm ci --prefer-offline --no-audit --no-progress + npm run core test:e2e:setup + emulator -avd Pixel_3_XL_API_30 -noaudio + npm run test:e2e:android:local plugins: - *ci_toolkit_plugin - *nvm_plugin - *git-cache-plugin - artifact_paths: - - reports/test-results/ios-test-results.xml agents: - queue: mac - env: *xcode_agent_env + queue: android-staging notify: - github_commit_status: - context: Test iOS on Device - Canaries - - - block: "Full UI Tests" - # Show only in branches that run the quick UI tests suite, to optionally run the full suite - if: *is_branch_for_quick_ui_tests - key: run-full-ui-test - prompt: "Run full UI tests suites?" - depends_on: ios-build-and-saucelabs - - - label: Test iOS on Device – Full iPhone - # The quick UI tests suite version depends on the block step being unblocked - if: *is_branch_for_quick_ui_tests - depends_on: - - ios-build-and-saucelabs - - run-full-ui-test - command: .buildkite/commands/test-ios.sh - plugins: - - *ci_toolkit_plugin - - *nvm_plugin - - *git-cache-plugin - artifact_paths: - - reports/test-results/ios-test-results.xml - agents: - queue: mac - env: *xcode_agent_env - - # Same step as above, but will always run in trunk, release/, and dependabot/submodules branches - - label: Test iOS on Device – Full iPhone - # The full UI tests suite version depends only on the ios-build step, meaning it has no manual step that triggers it - if: *is_branch_for_full_ui_tests - depends_on: - - ios-build-and-saucelabs - command: .buildkite/commands/test-ios.sh - plugins: - - *ci_toolkit_plugin - - *nvm_plugin - - *git-cache-plugin - artifact_paths: - - reports/test-results/ios-test-results.xml - agents: - queue: mac - env: *xcode_agent_env + context: Android E2E Tests – Android Queue - - label: Test iOS on Device – Full iPad - # The quick UI tests suite version depends on the block step being unblocked - if: *is_branch_for_quick_ui_tests - depends_on: - - ios-build-and-saucelabs - - run-full-ui-test - command: .buildkite/commands/test-ios.sh --ipad - plugins: - - *ci_toolkit_plugin - - *nvm_plugin - - *git-cache-plugin - artifact_paths: - - reports/test-results/ios-test-results.xml - agents: - queue: mac - env: *xcode_agent_env - - - label: Test iOS on Device – Full iPad - # The full UI tests suite version depends only on the ios-build step, meaning it has no manual step that triggers it - if: *is_branch_for_full_ui_tests - depends_on: - - ios-build-and-saucelabs - command: .buildkite/commands/test-ios.sh --ipad + - label: Android E2E Tests – macOS Queue + command: | + npm ci --prefer-offline --no-audit --no-progress + npm run core test:e2e:setup + emulator -avd Pixel_3_XL_API_30 -noaudio + npm run test:e2e:android:local plugins: - *ci_toolkit_plugin - *nvm_plugin - *git-cache-plugin - artifact_paths: - - reports/test-results/ios-test-results.xml agents: queue: mac env: *xcode_agent_env + notify: + - github_commit_status: + context: Android E2E Tests – macOS Queue