metro/circle.yml
Rafael Oleza 2f93b745ef Tweak circleci configuration
Summary:
We've had the node v6 test step failing for some time now (due to https://github.com/prettier/prettier/issues/3457).

Since there seems to be no progress on that issue, I'm adopting a similar approach that React Native has done to work around the issue: run the linter and flow on the latest nodejs version, and only run the jest tests on previous versions (this is also that `jest` seems to be doing as well).

For this I've created a `run-js-checks` step, while the jest tests are still under the `test-node-X` steps

Reviewed By: jeanlauliac

Differential Revision: D6770795

fbshipit-source-id: ba79caaf82c4b2fda5786a4cd3a9b2015c8b4537
2018-01-22 08:29:34 -08:00

119 lines
3.0 KiB
YAML

aliases:
- &restore-cache
keys:
- dependencies-{{ .Branch }}-{{ checksum "package.json" }}
# Fallback in case checksum fails
- dependencies-{{ .Branch }}-
- &save-cache
paths:
- node_modules
key: dependencies-{{ .Branch }}-{{ checksum "package.json" }}
- &deploy-website
command: |
# Deploy Metro website
git config --global user.email "metro-bot@users.noreply.github.com"
git config --global user.name "Website Deployment Script"
echo "machine github.com login metro-bot password $GITHUB_TOKEN" > ~/.netrc
# install Docusaurus and generate file of English strings
cd website && yarn && yarn run write-translations
# build and publish website
GIT_USER=metro-bot yarn run publish-gh-pages
version: 2
jobs:
run-js-checks:
working_directory: ~/metro
docker:
- image: circleci/node:8
steps:
- checkout
- restore-cache: *restore-cache
- run: yarn --no-progress
- save-cache: *save-cache
- run: yarn run test-ci
test-node-9:
working_directory: ~/metro
docker:
- image: circleci/node:9
steps:
- checkout
- restore-cache: *restore-cache
- run: yarn --no-progress
- save-cache: *save-cache
- run: yarn run jest
test-node-8:
working_directory: ~/metro
docker:
- image: circleci/node:8
steps:
- checkout
- restore-cache: *restore-cache
- run: yarn --no-progress
- save-cache: *save-cache
- run: yarn run jest
test-node-6:
working_directory: ~/metro
docker:
- image: circleci/node:6
steps:
- checkout
- restore-cache: *restore-cache
- run: sudo npm i -g yarn@^1.2.1
- run: yarn --no-progress
- save-cache: *save-cache
- run: yarn run jest
publish-to-npm:
working_directory: ~/metro
docker:
- image: circleci/node:8
steps:
- checkout
- restore-cache: *restore-cache
- run:
working_directory: packages/metro
command: yarn --no-progress
- save-cache: *save-cache
- run:
working_directory: ~/metro
run: yarn build
- run:
working_directory: packages/metro
command: |
yarn prepare-release
npm publish
yarn cleanup-release
test-and-deploy-website:
working_directory: ~/metro
docker:
- image: circleci/node:8
steps:
- checkout
- restore-cache: *restore-cache
- run: |
cd website
yarn --no-progress
- save-cache: *save-cache
- deploy: *deploy-website
# Workflows enables us to run multiple jobs in parallel
workflows:
version: 2
build-and-deploy:
jobs:
- run-js-checks
- test-node-6
- test-node-8
- test-node-9
- test-and-deploy-website
- publish-to-npm:
filters:
branches:
ignore: /.*/
tags:
only: /v[0-9]+(\.[0-9]+)*/