Nuxt/.circleci/config.yml

167 lines
4.1 KiB
YAML
Raw Normal View History

2017-10-28 21:31:01 +00:00
version: 2
2018-03-19 07:16:11 +00:00
defaults: &defaults
working_directory: ~/project
2018-03-19 07:16:11 +00:00
docker:
- image: banian/node-headless-chrome
environment:
- NODE_ENV: test
2018-03-19 07:16:11 +00:00
2017-10-28 21:31:01 +00:00
jobs:
# --------------------------------------------------------------------------
# Phase 1: Setup
# --------------------------------------------------------------------------
2018-03-19 07:37:52 +00:00
setup:
2018-03-19 07:16:11 +00:00
<<: *defaults
2017-10-28 21:31:01 +00:00
steps:
# Checkout repository
- checkout
# Restore cache
- restore_cache:
key: yarn-{{ checksum "yarn.lock" }}
# Install dependencies
- run:
name: Install Dependencies
command: yarn --frozen-lockfile --non-interactive
2017-10-28 21:31:01 +00:00
# Save cache
2017-10-28 21:31:01 +00:00
- save_cache:
key: yarn-{{ checksum "yarn.lock" }}
paths:
- node_modules
- packages/*/node_modules
- distributions/*/node_modules
2017-10-28 21:31:01 +00:00
# Persist workspace
2018-03-19 07:27:08 +00:00
- persist_to_workspace:
root: ~/project
paths:
- node_modules
- packages/*/node_modules
- distributions/*/node_modules
- packages/*/dist
2018-03-19 07:27:08 +00:00
# --------------------------------------------------------------------------
# Phase 2: Lint + Audit + Build Nuxt and fixtures
# --------------------------------------------------------------------------
2018-03-19 07:16:11 +00:00
lint:
2018-03-19 07:21:50 +00:00
<<: *defaults
steps:
- checkout
2018-03-19 07:27:08 +00:00
- attach_workspace:
2018-03-19 07:30:03 +00:00
at: ~/project
2018-03-19 07:21:50 +00:00
- run:
name: Lint
command: yarn test:lint
2017-11-24 16:17:27 +00:00
audit:
<<: *defaults
steps:
- checkout
- attach_workspace:
at: ~/project
- run:
name: Security Audit
command: npm install --package-lock-only && npm audit --audit-level=moderate
2018-03-19 07:16:11 +00:00
build:
2018-03-19 07:21:50 +00:00
<<: *defaults
steps:
- checkout
2018-03-19 07:27:08 +00:00
- attach_workspace:
2018-03-19 07:30:03 +00:00
at: ~/project
2018-03-19 07:21:50 +00:00
- run:
name: Build Fixtures
command: yarn test:fixtures -w=4 --coverage && yarn coverage
2018-03-19 07:37:52 +00:00
- persist_to_workspace:
root: ~/project
paths:
- test/fixtures
2018-03-19 07:16:11 +00:00
# --------------------------------------------------------------------------
# Phase 3: Unit and E2E tests
# --------------------------------------------------------------------------
test-unit:
2018-03-19 07:21:50 +00:00
<<: *defaults
steps:
- checkout
2018-03-19 07:27:08 +00:00
- attach_workspace:
2018-03-19 07:30:03 +00:00
at: ~/project
2018-03-19 07:21:50 +00:00
- run:
name: Unit Tests
command: yarn test:unit -w=4 --coverage && yarn coverage
2018-03-19 08:22:00 +00:00
test-e2e:
<<: *defaults
steps:
- checkout
2018-03-19 08:22:00 +00:00
- attach_workspace:
at: ~/project
- run:
name: E2E Tests
2018-03-19 15:49:16 +00:00
command: yarn test:e2e && yarn coverage
2018-03-19 07:16:11 +00:00
# --------------------------------------------------------------------------
# Phase 4: Release (dev branch only)
# --------------------------------------------------------------------------
2018-03-19 07:16:11 +00:00
release:
2018-03-19 07:21:50 +00:00
<<: *defaults
steps:
- checkout
2018-03-19 07:27:08 +00:00
- attach_workspace:
2018-03-19 07:30:03 +00:00
at: ~/project
2018-03-19 07:21:50 +00:00
- run:
2018-03-19 07:30:03 +00:00
name: release
command: |
GIT_COMMIT_MSG=`git --no-pager log --pretty=full -n1 $CIRCLE_SHA1`
if echo "$GIT_COMMIT_MSG" | grep -o "\[skip release\]"; then
2018-11-24 22:49:02 +00:00
echo "Release phase is skipped since [skip release] exists in commit message or body."
else
2018-11-23 11:36:07 +00:00
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
echo "//registry.yarnpkg.com/:_authToken=$NPM_TOKEN" >> ~/.npmrc
yarn release --yes
PACKAGE_SUFFIX=edge yarn build
./scripts/workspace-run npm publish -q
fi
2018-03-19 07:16:11 +00:00
# Workflow definition
2018-03-19 07:16:11 +00:00
workflows:
version: 2
setup-and-test:
2018-03-19 07:16:11 +00:00
jobs:
2018-03-19 07:37:52 +00:00
- setup
2018-03-19 07:16:11 +00:00
- lint:
requires:
2018-03-19 07:37:52 +00:00
- setup
2018-03-19 07:16:11 +00:00
- audit:
requires:
- setup
2018-03-19 07:16:11 +00:00
- build:
requires:
2018-03-19 07:37:52 +00:00
- setup
2018-03-19 07:16:11 +00:00
- test-unit:
2018-03-19 07:16:11 +00:00
requires:
- build
2018-03-19 08:22:00 +00:00
- test-e2e:
requires:
- build
2018-03-19 07:16:11 +00:00
- release:
requires:
- build
- lint
- audit
- test-unit
2018-03-19 08:22:00 +00:00
- test-e2e
2018-03-27 22:33:23 +00:00
filters:
branches:
only:
- dev