442 lines
11 KiB
YAML
442 lines
11 KiB
YAML
version: 2
|
|
|
|
aliases:
|
|
- &docker
|
|
- image: circleci/openjdk:8-jdk-node-browsers
|
|
|
|
- &environment
|
|
TZ: /usr/share/zoneinfo/America/Los_Angeles
|
|
|
|
- &restore_yarn_cache
|
|
restore_cache:
|
|
name: Restore node_modules cache
|
|
keys:
|
|
- v1-node-{{ arch }}-{{ .Branch }}-{{ checksum "yarn.lock" }}
|
|
- v1-node-{{ arch }}-{{ .Branch }}-
|
|
- v1-node-{{ arch }}-
|
|
- &run_yarn
|
|
run:
|
|
name: Install Packages
|
|
command: yarn --frozen-lockfile
|
|
|
|
- &attach_workspace
|
|
at: build
|
|
|
|
- &process_artifacts
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- attach_workspace: *attach_workspace
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run: node ./scripts/rollup/consolidateBundleSizes.js
|
|
- run: ./scripts/circleci/upload_build.sh
|
|
- run: ./scripts/circleci/pack_and_store_artifact.sh
|
|
- store_artifacts:
|
|
path: ./node_modules.tgz
|
|
- store_artifacts:
|
|
path: ./build.tgz
|
|
- store_artifacts:
|
|
path: ./build/bundle-sizes.json
|
|
- store_artifacts:
|
|
# TODO: Update release script to use local file instead of pulling
|
|
# from artifacts.
|
|
path: ./scripts/error-codes/codes.json
|
|
- persist_to_workspace:
|
|
root: build
|
|
paths:
|
|
- bundle-sizes.json
|
|
|
|
jobs:
|
|
setup:
|
|
docker: *docker
|
|
environment: *environment
|
|
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Nodejs Version
|
|
command: node --version
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- save_cache:
|
|
name: Save node_modules cache
|
|
key: v1-node-{{ arch }}-{{ .Branch }}-{{ checksum "yarn.lock" }}
|
|
paths:
|
|
- ~/.cache/yarn
|
|
|
|
lint:
|
|
docker: *docker
|
|
environment: *environment
|
|
|
|
steps:
|
|
- checkout
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run: node ./scripts/prettier/index
|
|
- run: node ./scripts/tasks/eslint
|
|
- run: ./scripts/circleci/check_license.sh
|
|
- run: ./scripts/circleci/check_modules.sh
|
|
- run: ./scripts/circleci/test_print_warnings.sh
|
|
|
|
flow:
|
|
docker: *docker
|
|
environment: *environment
|
|
|
|
steps:
|
|
- checkout
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run: node ./scripts/tasks/flow-ci
|
|
|
|
test_source:
|
|
docker: *docker
|
|
environment: *environment
|
|
|
|
steps:
|
|
- checkout
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: stable
|
|
command: yarn test --maxWorkers=2
|
|
|
|
test_source_experimental:
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: experimental
|
|
command: yarn test --maxWorkers=2
|
|
|
|
test_source_persistent:
|
|
docker: *docker
|
|
environment: *environment
|
|
|
|
steps:
|
|
- checkout
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: stable
|
|
command: yarn test-persistent --maxWorkers=2
|
|
|
|
test_source_prod:
|
|
docker: *docker
|
|
environment: *environment
|
|
|
|
steps:
|
|
- checkout
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: stable
|
|
command: yarn test-prod --maxWorkers=2
|
|
|
|
build:
|
|
docker: *docker
|
|
environment: *environment
|
|
parallelism: 20
|
|
steps:
|
|
- checkout
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: stable
|
|
command: |
|
|
./scripts/circleci/add_build_info_json.sh
|
|
./scripts/circleci/update_package_versions.sh
|
|
yarn build
|
|
- run: echo "stable" >> build/RELEASE_CHANNEL
|
|
- persist_to_workspace:
|
|
root: build
|
|
paths:
|
|
- RELEASE_CHANNEL
|
|
- facebook-www
|
|
- node_modules
|
|
- react-native
|
|
- dist
|
|
- sizes/*.json
|
|
|
|
build_experimental:
|
|
docker: *docker
|
|
environment: *environment
|
|
parallelism: 20
|
|
steps:
|
|
- checkout
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: experimental
|
|
command: |
|
|
./scripts/circleci/add_build_info_json.sh
|
|
./scripts/circleci/update_package_versions.sh
|
|
yarn build
|
|
- run: echo "experimental" >> build/RELEASE_CHANNEL
|
|
- persist_to_workspace:
|
|
root: build
|
|
paths:
|
|
- RELEASE_CHANNEL
|
|
- facebook-www
|
|
- node_modules
|
|
- react-native
|
|
- dist
|
|
- sizes/*.json
|
|
|
|
build_devtools_and_process_artifacts:
|
|
docker: *docker
|
|
environment: *environment
|
|
parallelism: 20
|
|
steps:
|
|
- checkout
|
|
- attach_workspace: *attach_workspace
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: experimental
|
|
command: ./scripts/circleci/pack_and_store_devtools_artifacts.sh
|
|
- store_artifacts:
|
|
path: ./build/devtools.tgz
|
|
|
|
# These jobs are named differently so we can distinguish the stable and
|
|
# and experimental artifacts
|
|
process_artifacts: *process_artifacts
|
|
process_artifacts_experimental: *process_artifacts
|
|
|
|
sizebot:
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- attach_workspace: *attach_workspace
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
# This runs in the process_artifacts job, too, but it's faster to run
|
|
# this step in both jobs instead of running the jobs sequentially
|
|
- run: node ./scripts/rollup/consolidateBundleSizes.js
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: stable
|
|
command: node ./scripts/tasks/danger
|
|
|
|
sizebot_experimental:
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- attach_workspace: *attach_workspace
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
# This runs in the process_artifacts job, too, but it's faster to run
|
|
# this step in both jobs instead of running the jobs sequentially
|
|
- run: node ./scripts/rollup/consolidateBundleSizes.js
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: experimental
|
|
command: node ./scripts/tasks/danger
|
|
|
|
lint_build:
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- attach_workspace: *attach_workspace
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run: yarn lint-build
|
|
- run: scripts/circleci/check_minified_errors.sh
|
|
|
|
test_build:
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- attach_workspace: *attach_workspace
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: stable
|
|
command: yarn test-build --maxWorkers=2
|
|
|
|
test_build_experimental:
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- attach_workspace: *attach_workspace
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: experimental
|
|
command: yarn test-build --maxWorkers=2
|
|
|
|
test_devtools:
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- attach_workspace: *attach_workspace
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: experimental
|
|
command: yarn test-build-devtools --maxWorkers=2
|
|
|
|
test_dom_fixtures:
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- attach_workspace: *attach_workspace
|
|
- *restore_yarn_cache
|
|
- run:
|
|
name: Run DOM fixture tests
|
|
environment:
|
|
RELEASE_CHANNEL: stable
|
|
command: |
|
|
cd fixtures/dom
|
|
yarn --frozen-lockfile
|
|
yarn prestart
|
|
yarn test --maxWorkers=2
|
|
|
|
test_fuzz:
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
name: Run fuzz tests
|
|
command: |
|
|
FUZZ_TEST_SEED=$RANDOM yarn test fuzz --maxWorkers=2
|
|
FUZZ_TEST_SEED=$RANDOM yarn test-prod fuzz --maxWorkers=2
|
|
|
|
test_build_prod:
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- attach_workspace: *attach_workspace
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: stable
|
|
command: yarn test-build-prod --maxWorkers=2
|
|
|
|
test_build_prod_experimental:
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- attach_workspace: *attach_workspace
|
|
- *restore_yarn_cache
|
|
- *run_yarn
|
|
- run:
|
|
environment:
|
|
RELEASE_CHANNEL: experimental
|
|
command: yarn test-build-prod --maxWorkers=2
|
|
|
|
workflows:
|
|
version: 2
|
|
stable:
|
|
jobs:
|
|
- setup
|
|
- lint:
|
|
requires:
|
|
- setup
|
|
- flow:
|
|
requires:
|
|
- setup
|
|
- test_source:
|
|
requires:
|
|
- setup
|
|
- test_source_prod:
|
|
requires:
|
|
- setup
|
|
- test_source_persistent:
|
|
requires:
|
|
- setup
|
|
- build:
|
|
requires:
|
|
- setup
|
|
- process_artifacts:
|
|
requires:
|
|
- build
|
|
- sizebot:
|
|
requires:
|
|
- build
|
|
- lint_build:
|
|
requires:
|
|
- build
|
|
- test_build:
|
|
requires:
|
|
- build
|
|
- test_build_prod:
|
|
requires:
|
|
- build
|
|
- test_dom_fixtures:
|
|
requires:
|
|
- build
|
|
|
|
experimental:
|
|
jobs:
|
|
- setup
|
|
- test_source_experimental:
|
|
requires:
|
|
- setup
|
|
- build_experimental:
|
|
requires:
|
|
- setup
|
|
- process_artifacts_experimental:
|
|
requires:
|
|
- build_experimental
|
|
- sizebot_experimental:
|
|
requires:
|
|
- build_experimental
|
|
- test_build_experimental:
|
|
requires:
|
|
- build_experimental
|
|
- test_build_prod_experimental:
|
|
requires:
|
|
- build_experimental
|
|
- lint_build:
|
|
requires:
|
|
- build_experimental
|
|
- test_devtools:
|
|
requires:
|
|
- build_experimental
|
|
- build_devtools_and_process_artifacts:
|
|
requires:
|
|
- build_experimental
|
|
|
|
fuzz_tests:
|
|
triggers:
|
|
- schedule:
|
|
# Fuzz tests run hourly
|
|
cron: "0 * * * *"
|
|
filters:
|
|
branches:
|
|
only:
|
|
- master
|
|
jobs:
|
|
- setup
|
|
- test_fuzz:
|
|
requires:
|
|
- setup
|