[ci] Remove dep on build_devtools from run_devtools_e2e_tests #43
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: (Runtime) Build and Test | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
paths-ignore: | |
- compiler/** | |
env: | |
TZ: /usr/share/zoneinfo/America/Los_Angeles | |
jobs: | |
# ----- FLOW ----- | |
discover_flow_inline_configs: | |
name: Discover flow inline configs | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.result }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/github-script@v7 | |
id: set-matrix | |
with: | |
script: | | |
const inlinedHostConfigs = require('./scripts/shared/inlinedHostConfigs.js'); | |
return inlinedHostConfigs.map(config => config.shortName); | |
flow: | |
name: Flow check ${{ matrix.flow_inline_config_shortname }} | |
needs: discover_flow_inline_configs | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
strategy: | |
matrix: | |
flow_inline_config_shortname: ${{ fromJSON(needs.discover_flow_inline_configs.outputs.matrix) }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.20.1 | |
cache: yarn | |
cache-dependency-path: yarn.lock | |
- name: Restore cached node_modules | |
uses: actions/cache@v4 | |
id: node_modules | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | |
- run: yarn install --frozen-lockfile | |
- run: node ./scripts/tasks/flow-ci ${{ matrix.flow_inline_config_shortname }} | |
# ----- FIZZ ----- | |
check_generated_fizz_runtime: | |
name: Confirm generated inline Fizz runtime is up to date | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.20.1 | |
cache: yarn | |
cache-dependency-path: yarn.lock | |
- name: Restore cached node_modules | |
uses: actions/cache@v4 | |
id: node_modules | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | |
- run: yarn install --frozen-lockfile | |
- run: | | |
yarn generate-inline-fizz-runtime | |
git diff --quiet || (echo "There was a change to the Fizz runtime. Run `yarn generate-inline-fizz-runtime` and check in the result." && false) | |
# ----- FEATURE FLAGS ----- | |
flags: | |
name: Check flags | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.20.1 | |
cache: yarn | |
cache-dependency-path: yarn.lock | |
- name: Restore cached node_modules | |
uses: actions/cache@v4 | |
id: node_modules | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | |
- run: yarn install --frozen-lockfile | |
- run: yarn flags | |
# ----- TESTS ----- | |
test: | |
name: yarn test ${{ matrix.params }} (Shard ${{ matrix.shard }}) | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
params: | |
- "-r=stable --env=development" | |
- "-r=stable --env=production" | |
- "-r=experimental --env=development" | |
- "-r=experimental --env=production" | |
- "-r=www-classic --env=development --variant=false" | |
- "-r=www-classic --env=production --variant=false" | |
- "-r=www-classic --env=development --variant=true" | |
- "-r=www-classic --env=production --variant=true" | |
- "-r=www-modern --env=development --variant=false" | |
- "-r=www-modern --env=production --variant=false" | |
- "-r=www-modern --env=development --variant=true" | |
- "-r=www-modern --env=production --variant=true" | |
- "-r=xplat --env=development --variant=false" | |
- "-r=xplat --env=development --variant=true" | |
- "-r=xplat --env=production --variant=false" | |
- "-r=xplat --env=production --variant=true" | |
# TODO: Test more persistent configurations? | |
- "-r=stable --env=development --persistent" | |
- "-r=experimental --env=development --persistent" | |
shard: | |
- 1/5 | |
- 2/5 | |
- 3/5 | |
- 4/5 | |
- 5/5 | |
continue-on-error: true | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.20.1 | |
cache: yarn | |
cache-dependency-path: yarn.lock | |
- name: Restore cached node_modules | |
uses: actions/cache@v4 | |
id: node_modules | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | |
- run: yarn install --frozen-lockfile | |
- run: yarn test ${{ matrix.params }} --ci=github --shard=${{ matrix.shard }} | |
# ----- BUILD ----- | |
build_and_lint: | |
name: yarn build and lint | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
# yml is dumb. update the --total arg to yarn build if you change the number of workers | |
worker_id: [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] | |
release_channel: [stable, experimental] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.20.1 | |
cache: yarn | |
cache-dependency-path: yarn.lock | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: temurin | |
java-version: 11.0.22 | |
- name: Restore cached node_modules | |
uses: actions/cache@v4 | |
id: node_modules | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | |
- run: yarn install --frozen-lockfile | |
- run: yarn build --index=${{ matrix.worker_id }} --total=20 --r=${{ matrix.release_channel }} --ci=github | |
env: | |
CI: github | |
RELEASE_CHANNEL: ${{ matrix.release_channel }} | |
NODE_INDEX: ${{ matrix.worker_id }} | |
- name: Lint build | |
run: yarn lint-build | |
- name: Display structure of build | |
run: ls -R build | |
- name: Archive build | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build_${{ matrix.worker_id }}_${{ matrix.release_channel }} | |
path: | | |
build | |
test_build: | |
name: yarn test-build | |
needs: build_and_lint | |
strategy: | |
matrix: | |
test_params: [ | |
# Intentionally passing these as strings instead of creating a | |
# separate parameter per CLI argument, since it's easier to | |
# control/see which combinations we want to run. | |
-r=stable --env=development, | |
-r=stable --env=production, | |
-r=experimental --env=development, | |
-r=experimental --env=production, | |
# Dev Tools | |
--project=devtools -r=experimental, | |
# TODO: Update test config to support www build tests | |
# - "-r=www-classic --env=development --variant=false" | |
# - "-r=www-classic --env=production --variant=false" | |
# - "-r=www-classic --env=development --variant=true" | |
# - "-r=www-classic --env=production --variant=true" | |
# - "-r=www-modern --env=development --variant=false" | |
# - "-r=www-modern --env=production --variant=false" | |
# - "-r=www-modern --env=development --variant=true" | |
# - "-r=www-modern --env=production --variant=true" | |
# TODO: Update test config to support xplat build tests | |
# - "-r=xplat --env=development --variant=false" | |
# - "-r=xplat --env=development --variant=true" | |
# - "-r=xplat --env=production --variant=false" | |
# - "-r=xplat --env=production --variant=true" | |
# TODO: Test more persistent configurations? | |
] | |
continue-on-error: true | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.20.1 | |
cache: yarn | |
cache-dependency-path: yarn.lock | |
- name: Restore cached node_modules | |
uses: actions/cache@v4 | |
id: node_modules | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | |
- run: yarn install --frozen-lockfile | |
- name: Restore archived build | |
uses: actions/download-artifact@v4 | |
with: | |
path: build | |
merge-multiple: true | |
- name: Display structure of build | |
run: ls -R build | |
- run: yarn test --build ${{ matrix.test_params }} --ci=github | |
process_artifacts_combined: | |
name: Process artifacts combined | |
needs: build_and_lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.20.1 | |
cache: yarn | |
cache-dependency-path: yarn.lock | |
- name: Restore cached node_modules | |
uses: actions/cache@v4 | |
id: node_modules | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | |
- run: yarn install --frozen-lockfile | |
- name: Restore archived build | |
uses: actions/download-artifact@v4 | |
with: | |
path: build | |
merge-multiple: true | |
- name: Display structure of build | |
run: ls -R build | |
- run: echo ${{ github.sha }} >> build/COMMIT_SHA | |
- name: Scrape warning messages | |
run: | | |
mkdir -p ./build/__test_utils__ | |
node ./scripts/print-warnings/print-warnings.js > build/__test_utils__/ReactAllWarnings.js | |
# Compress build directory into a single tarball for easy download | |
- run: tar -zcvf ./build.tgz ./build | |
# TODO: Migrate scripts to use `build` directory instead of `build2` | |
- run: cp ./build.tgz ./build2.tgz | |
- name: Archive build artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: combined_artifacts_${{ github.sha }} | |
path: | | |
./build.tgz | |
./build2.tgz | |
check_release_dependencies: | |
name: Check release dependencies | |
needs: build_and_lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.20.1 | |
cache: yarn | |
cache-dependency-path: yarn.lock | |
- name: Restore cached node_modules | |
uses: actions/cache@v4 | |
id: node_modules | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | |
- run: yarn install --frozen-lockfile | |
- name: Restore archived build | |
uses: actions/download-artifact@v4 | |
with: | |
path: build | |
pattern: build_* | |
merge-multiple: true | |
- name: Display structure of build | |
run: ls -R build | |
- run: yarn check-release-dependencies | |
# ----- DEVTOOLS ----- | |
build_devtools_and_process_artifacts: | |
name: Build DevTools and process artifacts | |
needs: build_and_lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.20.1 | |
cache: yarn | |
cache-dependency-path: yarn.lock | |
- name: Restore cached node_modules | |
uses: actions/cache@v4 | |
id: node_modules | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | |
- run: yarn install --frozen-lockfile | |
- name: Restore archived build | |
uses: actions/download-artifact@v4 | |
with: | |
path: build | |
pattern: build_* | |
merge-multiple: true | |
- run: ./scripts/circleci/pack_and_store_devtools_artifacts.sh | |
env: | |
RELEASE_CHANNEL: experimental | |
- name: Display structure of build | |
run: ls -R build | |
- name: Archive devtools build | |
uses: actions/upload-artifact@v4 | |
with: | |
name: devtools.tgz | |
path: build | |
# Simplifies getting the extension for local testing | |
- name: Archive chrome extension | |
uses: actions/upload-artifact@v4 | |
with: | |
name: chrome-extension.zip | |
path: ./build/devtools/ | |
- name: Archive firefox extension | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firefox-extension.zip | |
path: ./build/devtools/ | |
run_devtools_e2e_tests: | |
name: Run DevTools e2e tests | |
needs: build_and_lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.20.1 | |
cache: yarn | |
cache-dependency-path: yarn.lock | |
- name: Restore cached node_modules | |
uses: actions/cache@v4 | |
id: node_modules | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | |
- run: yarn install --frozen-lockfile | |
- run: | | |
npx playwright install | |
sudo npx playwright install-deps | |
- run: ./scripts/circleci/run_devtools_e2e_tests.js | |
env: | |
RELEASE_CHANNEL: experimental |