From b9b6f035f89b5e765573eb47d5a88eec72e6592d Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 27 Feb 2018 17:38:55 -0700 Subject: [PATCH] modified circle.yml to 2.0 format (initial) --- circle.yml | 176 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 103 insertions(+), 73 deletions(-) diff --git a/circle.yml b/circle.yml index bd5c2c520..44871c058 100644 --- a/circle.yml +++ b/circle.yml @@ -1,75 +1,105 @@ -machine: - node: - version: 8 - services: - - docker - - redis - environment: - PATH: "${PATH}:${HOME}/${CIRCLE_PROJECT_REPONAME}/node_modules/.bin" - NODE_ENV: "test" - MOCHA_FILE: "${CIRCLE_TEST_REPORTS}/junit/test-results.xml" - MOCHA_REPORTER: "mocha-junit-reporter" - pre: - # TODO: use the following to add in support for MongoDB 3.4. - # # Upgrade the database version to 3.4. - # - sudo apt-get purge mongodb-org* - # - sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 - # - echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list - # - sudo apt-get update - # - sudo apt-get install -y mongodb-org - # - sudo service mongod restart +version: 2 - # Force sync the time. - - date - - sudo service ntp stop - - sudo ntpdate -s time.nist.gov - - sudo service ntp start - - date +jobs: + npm_dependencies: + working_directory: ~/coralproject/talk + docker: + - image: circleci/node:8 + steps: + - checkout + - attach_workspace: + at: ~/coralproject/talk + - restore_cache: + key: dependency-cache-{{ checksum "package.json" }}-{{ checksum "yarn.lock" }} + - run: + name: Install dependancies + command: | + yarn global add node-gyp && + yarn install --frozen-lockfile + - save_cache: + key: dependency-cache-{{ checksum "package.json" }}-{{ checksum "yarn.lock" }} + paths: + - ./node_modules + - persist_to_workspace: + root: . + paths: node_modules + lint: + working_directory: ~/coralproject/talk + docker: + - image: circleci/node:8 + steps: + - checkout + - attach_workspace: + at: ~/coralproject/talk + - run: + name: Perform linting + command: yarn lint + build_assets: + working_directory: ~/coralproject/talk + docker: + - image: circleci/node:8 + steps: + - checkout + - attach_workspace: + at: ~/coralproject/talk + - run: + name: Build static assets + command: yarn build + - persist_to_workspace: + root: . + paths: dist + test_unit: + working_directory: ~/coralproject/talk + docker: + - image: circleci/node:8 + - image: circleci/mongo:3 + - image: circleci/redis:4-alpine + environment: + NODE_ENV: test + MOCHA_FILE: /tmp/circleci-test-results/junit/test-results.xml + MOCHA_REPORTER: mocha-junit-reporter + steps: + - checkout + - attach_workspace: + at: ~/coralproject/talk + - run: + name: Setup the test results directory + command: mkdir -p /tmp/circleci-test-results + - run: + name: Run the unit tests + command: yarn test + - store_test_results: + path: /tmp/circleci-test-results + test_integration: + working_directory: ~/coralproject/talk + docker: + - image: circleci/node:8-browsers + - image: circleci/mongo:3 + - image: circleci/redis:4-alpine + environment: + NODE_ENV: test + steps: + - run: + name: Setup the database with defaults + command: ./bin/cli setup --defaults + - run: + name: Run the integration tests + command: yarn e2e:ci - # Install chromium for e2e and remove old google-chrome - - sudo rm -rf /opt/google/chrome - - sudo rm -f /usr/bin/google-chrome* - - sudo apt-get update - - sudo apt-get install chromium-browser - -dependencies: - override: - - # Install node dependencies. - - yarn --version - - yarn global add node-gyp --force - - yarn - - post: - # Build the static assets. - - yarn build - # Lint the project here, before tests are ran. - - yarn lint - -database: - post: - # Initialize the settings in the database, this will create indicies for the - # database. - - ./bin/cli setup --defaults - - sleep 2 - -test: - override: - # Run the tests using the junit reporter. - - yarn test - # Run the end to end tests - - yarn e2e:ci - -deployment: - release: - tag: /v[0-9]+(\.[0-9]+)*/ - commands: - - bash ./scripts/docker.sh deploy - - latest: - branch: - - master - - next - owner: coralproject - commands: - - bash ./scripts/docker.sh deploy +workflows: + version: 2 + build-and-deploy: + jobs: + - npm_dependencies + - lint: + requires: + - npm_dependencies + - test_unit: + requires: + - npm_dependencies + - build_assets: + requires: + - npm_dependencies + - test_integration: + requires: + - build_assets \ No newline at end of file