prettier/.circleci/config.yml

130 lines
2.6 KiB
YAML

aliases:
# Cache management
- &restore_yarn_cache
restore_cache:
keys:
- v1-yarn-cache
- &save_yarn_cache
save_cache:
paths:
- ~/.cache/yarn
key: v1-yarn-cache
- &restore_deps_cache
restore_cache:
keys:
- v1-deps-cache-{{ checksum "yarn.lock" }}
- &save_deps_cache
save_cache:
paths:
- node_modules
key: v1-yarn-deps-{{ checksum "yarn.lock" }}
- &restore_build_cache
restore_cache:
keys:
- v1-build-cache-{{ .Branch }}
- v1-build-cache-master
- &save_build_cache
save_cache:
paths:
- .cache
key: v1-build-cache-{{ .Branch }}
# Default
- &defaults
working_directory: ~/prettier
docker:
- image: circleci/node:9
version: 2
jobs:
# Install dependencies and cache everything
checkout_code:
<<: *defaults
steps:
- checkout
- *restore_yarn_cache
- *restore_deps_cache
- run: yarn install
- run: yarn check-deps
- *save_deps_cache
- *save_yarn_cache
- persist_to_workspace:
root: .
paths:
- .
# Create the production bundle and cache
build_prod:
<<: *defaults
environment:
NODE_ENV: production
steps:
- attach_workspace:
at: ~/prettier
- *restore_build_cache
- run: yarn build
- *save_build_cache
- persist_to_workspace:
root: .
paths:
- dist
- store_artifacts:
path: ~/prettier/dist
# Run tests on the production bundle
test_prod_node4:
<<: *defaults
docker:
- image: circleci/node:4
steps:
- attach_workspace:
at: ~/prettier
- run: yarn test:dist
# Run tests on the production bundle
test_prod_node9:
<<: *defaults
steps:
- attach_workspace:
at: ~/prettier
- run:
command: yarn test:dist
environment:
REPORT_SUMMARIES: 1
- store_test_results:
path: test-results
# Run tests using the standalone build
test_prod_standalone:
<<: *defaults
steps:
- attach_workspace:
at: ~/prettier
- run:
command: yarn test:dist
environment:
TEST_STANDALONE: 1
workflows:
version: 2
prod:
jobs:
- checkout_code
- build_prod:
requires:
- checkout_code
- test_prod_node4:
requires:
- build_prod
- test_prod_node9:
requires:
- build_prod
- test_prod_standalone:
requires:
- build_prod