Setup Continuous Delivery

Summary:
<!-- Thanks for submitting a pull request! Please provide enough information so that others can review your pull request. The two fields below are mandatory. -->

**Summary**
As we discussed on Discord channel on Nov 6th, this PR adds appropriate hooks to CircleCI in order to deploy successful builds (on master branch) to `npm` using tag that has been assigned to the latest commit.

This is how deployment process should look like:
Once you want to deploy, push a new tag to master. That will trigger a deployment script on CI. [According to CircleCI documentation](https://circleci.com/docs/1.0/npm-continuous-deployment/), the best way is to use
```
npm version x.y.z
```
in order to update package version and create git tag.  Then, you can push your code using
```
git push --follow-tags
```
After successful build, a new version will be released.

<!-- Explain the **motivation** for making this change. What existing problem does the pull request solve? -->

**Test plan**
Not sure if there is a way to properly test it before the merge. I think the only way is to merge it in, setup NPM_TOKEN env variable and try to create a new version by running build on CI. Please, let me know if you see alternative scenarios.

<!-- Demonstrate the code is solid. Example: The exact commands you ran and their output, screenshots / videos if the pull request changes UI. -->
Closes https://github.com/facebook/metro-bundler/pull/88

Reviewed By: BYK, cpojer

Differential Revision: D6332813

Pulled By: rafeca

fbshipit-source-id: 1902afa8eb77a59e813cefc8e7f650a0106edfef
This commit is contained in:
Alexey Kureev 2017-11-17 03:25:17 -08:00 committed by Facebook Github Bot
parent f0a4418b5b
commit 8ee5385e5c
1 changed files with 81 additions and 27 deletions

View File

@ -1,28 +1,82 @@
machine:
environment:
YARN_VERSION: 0.24.3
PATH: "${PATH}:${HOME}/.yarn/bin:${HOME}/${CIRCLE_PROJECT_REPONAME}/node_modules/.bin"
node:
version: 8
dependencies:
pre:
- |
if [[ ! -e ~/.yarn/bin/yarn || $(yarn --version) != "${YARN_VERSION}" ]]; then
curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version $YARN_VERSION
fi
- nvm install 4
- nvm install 6
aliases:
- &restore-cache
keys:
- dependencies-{{ .Branch }}-{{ checksum "package.json" }}
# Fallback in case checksum fails
- dependencies-{{ .Branch }}-
cache_directories:
- ~/.yarn
- ~/.cache/yarn
override:
- yarn install --no-progress
test:
override:
- nvm alias default 6
- yarn run test-ci
- nvm alias default 4
- yarn run test-ci
- nvm alias default 8
- yarn run test-ci
- &save-cache
paths:
- node_modules
key: dependencies-{{ .Branch }}-{{ checksum "package.json" }}
- &deploy
working_directory: packages/metro-bundler
steps:
- run: npm run prepare-release
- run: npm publish
- run: npm run cleanup-release
version: 2
jobs:
test-node-9:
working_directory: ~/metro-bundler/packager/metro-bundler
docker:
- image: circleci/node:9
steps:
- checkout
- restore-cache: *restore-cache
- run: yarn --no-progress
- save-cache: *save-cache
- run: yarn run test-ci
test-node-8:
working_directory: ~/metro-bundler/packager/metro-bundler
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-6:
working_directory: ~/metro-bundler/packager/metro-bundler
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 test-ci
deploy:
working_directory: ~/metro-bundler/packager/metro-bundler
docker:
- image: circleci/node:8
steps:
- checkout
- restore-cache: *restore-cache
- run:
working_directory: packages/metro-bundler
command: yarn --no-progress
- save-cache: *save-cache
- deploy: *deploy
# Workflows enables us to run multiple jobs in parallel
workflows:
version: 2
build-and-deploy:
jobs:
- test-node-9
- test-node-8
- test-node-6
- deploy:
filters:
branches:
ignore: /.*/
tags:
only: /v[0-9]+(\.[0-9]+)*/