From 8ee5385e5c2c4c00b45fc8bef11755a6449acb07 Mon Sep 17 00:00:00 2001 From: Alexey Kureev Date: Fri, 17 Nov 2017 03:25:17 -0800 Subject: [PATCH] Setup Continuous Delivery Summary: **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. **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. Closes https://github.com/facebook/metro-bundler/pull/88 Reviewed By: BYK, cpojer Differential Revision: D6332813 Pulled By: rafeca fbshipit-source-id: 1902afa8eb77a59e813cefc8e7f650a0106edfef --- circle.yml | 108 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 81 insertions(+), 27 deletions(-) diff --git a/circle.yml b/circle.yml index d29627df..2a8ede37 100644 --- a/circle.yml +++ b/circle.yml @@ -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]+)*/