consul/.circleci/config.yml

109 lines
2.9 KiB
YAML

version: 2
jobs:
build-website:
# setting the working_directory along with the checkout path allows us to not have
# to cd into the website/ directory for commands
working_directory: ~/project/website
docker:
- image: hashicorp/middleman-hashicorp:0.3.35
steps:
- checkout:
path: ~/project
# restores gem cache
- restore_cache:
key: static-site-gems-v1-{{ checksum "Gemfile.lock" }}
- run:
name: install gems
command: bundle check || bundle install --path vendor/bundle --retry=3
# saves gem cache if we have changed the Gemfile
- save_cache:
key: static-site-gems-v1-{{ checksum "Gemfile.lock" }}
paths:
- ~/project/website/vendor/bundle
- run:
name: middleman build
command: bundle exec middleman build
- run:
name: website deploy
command: ./scripts/deploy.sh
# build frontend yarn cache
frontend-cache:
docker:
- image: circleci/node:8
steps:
- checkout
# cache yarn deps
- restore_cache:
key: consul-ui-v1-{{ checksum "ui-v2/yarn.lock" }}
- run:
name: install yarn packages
command: cd ui-v2 && yarn install
- save_cache:
key: consul-ui-v1-{{ checksum "ui-v2/yarn.lock" }}
paths:
- ui-v2/node_modules
# build ember so frontend tests run faster
ember-build:
docker:
- image: circleci/node:8
steps:
- checkout
- restore_cache:
key: consul-ui-v1-{{ checksum "ui-v2/yarn.lock" }}
- run: cd ui-v2 && yarn build-ci --output-path=dist
# saves the build to a workspace to be passed to a downstream job
- persist_to_workspace:
root: ui-v2
paths:
- dist
# run ember frontend tests
ember-test:
docker:
- image: circleci/node:8-browsers
environment:
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
EMBER_TEST_REPORT: test-results/report.xml #outputs test report for CircleCI test summary
parallelism: 4
steps:
- checkout
- restore_cache:
key: consul-ui-v1-{{ checksum "ui-v2/yarn.lock" }}
- attach_workspace:
at: ui-v2
- run:
working_directory: ui-v2
command: node_modules/ember-cli/bin/ember exam --split=$CIRCLE_NODE_TOTAL --partition=`expr $CIRCLE_NODE_INDEX + 1` --path dist --silent -r xunit
- store_test_results:
path: ui-v2/test-results
workflows:
version: 2
website:
jobs:
- build-website:
context: static-sites
filters:
branches:
only: stable-website
frontend:
jobs:
- frontend-cache
- ember-build:
requires:
- frontend-cache
- ember-test:
requires:
- ember-build