Skip to content

Commit 94365da

Browse files
committed
ci(circle): Adds CircleCI 2.0 configuration
- Implements workflow on custom build containers - Fails fast on static analysis or minimum node version test failure - Executes canary suite ( or doesn't ) based on semver comparison of Webpack dist-tags
1 parent 12191e9 commit 94365da

File tree

1 file changed

+156
-0
lines changed

1 file changed

+156
-0
lines changed

.circleci/config.yml

+156
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
unit_tests: &unit_tests
2+
steps:
3+
- checkout
4+
- restore_cache:
5+
key: dependency-cache-{{ checksum "package-lock.json" }}
6+
- run:
7+
name: NPM Rebuild
8+
command: npm install
9+
- run:
10+
name: Run unit tests.
11+
command: npm run ci:test
12+
canary_tests: &canary_tests
13+
steps:
14+
- checkout
15+
- restore_cache:
16+
key: dependency-cache-{{ checksum "package-lock.json" }}
17+
- run:
18+
name: NPM Rebuild
19+
command: npm install
20+
- run:
21+
name: Install Webpack Canary
22+
command: npm i --no-save webpack@next
23+
- run:
24+
name: Run unit tests.
25+
command: if [[ $(compver --name webpack --gte next --lt latest) < 1 ]] ; then printf "Next is older than Latest - Skipping Canary Suite"; else npm run ci:test ; fi
26+
27+
version: 2
28+
jobs:
29+
dependency_cache:
30+
docker:
31+
- image: webpackcontrib/circleci-node-base:latest
32+
steps:
33+
- checkout
34+
- restore_cache:
35+
key: dependency-cache-{{ checksum "package-lock.json" }}
36+
- run:
37+
name: Install Dependencies
38+
command: npm install
39+
- save_cache:
40+
key: dependency-cache-{{ checksum "package-lock.json" }}
41+
paths:
42+
- ./node_modules
43+
44+
node8-latest:
45+
docker:
46+
- image: webpackcontrib/circleci-node8:latest
47+
steps:
48+
- checkout
49+
- restore_cache:
50+
key: dependency-cache-{{ checksum "package-lock.json" }}
51+
- run:
52+
name: NPM Rebuild
53+
command: npm install
54+
- run:
55+
name: Run unit tests.
56+
command: npm run ci:coverage
57+
- run:
58+
name: Submit coverage data to codecov.
59+
command: bash <(curl -s https://codecov.io/bash)
60+
when: on_success
61+
node6-latest:
62+
docker:
63+
- image: webpackcontrib/circleci-node6:latest
64+
<<: *unit_tests
65+
node9-latest:
66+
docker:
67+
- image: webpackcontrib/circleci-node9:latest
68+
<<: *unit_tests
69+
node8-canary:
70+
docker:
71+
- image: webpackcontrib/circleci-node8:latest
72+
<<: *canary_tests
73+
analysis:
74+
docker:
75+
- image: webpackcontrib/circleci-node-base:latest
76+
steps:
77+
- checkout
78+
- restore_cache:
79+
key: dependency-cache-{{ checksum "package-lock.json" }}
80+
- run:
81+
name: NPM Rebuild
82+
command: npm install
83+
- run:
84+
name: Run linting.
85+
command: npm run lint
86+
- run:
87+
name: Run NSP Security Check.
88+
command: npm run security
89+
# - run:
90+
# name: Validate Commit Messages
91+
# command: npm run ci:lint:commits
92+
publish:
93+
docker:
94+
- image: webpackcontrib/circleci-node-base:latest
95+
steps:
96+
- checkout
97+
- restore_cache:
98+
key: dependency-cache-{{ checksum "package-lock.json" }}
99+
- run:
100+
name: NPM Rebuild
101+
command: npm install
102+
# - run:
103+
# name: Validate Commit Messages
104+
# command: npm run release:validate
105+
- run:
106+
name: Publish to NPM
107+
command: printf "noop running conventional-github-releaser"
108+
109+
version: 2.0
110+
workflows:
111+
version: 2
112+
validate-publish:
113+
jobs:
114+
- dependency_cache
115+
- node6-latest:
116+
requires:
117+
- dependency_cache
118+
filters:
119+
tags:
120+
only: /.*/
121+
- analysis:
122+
requires:
123+
- dependency_cache
124+
filters:
125+
tags:
126+
only: /.*/
127+
- node8-latest:
128+
requires:
129+
- analysis
130+
- node6-latest
131+
filters:
132+
tags:
133+
only: /.*/
134+
- node9-latest:
135+
requires:
136+
- analysis
137+
- node6-latest
138+
filters:
139+
tags:
140+
only: /.*/
141+
- node8-canary:
142+
requires:
143+
- analysis
144+
- node6-latest
145+
filters:
146+
tags:
147+
only: /.*/
148+
- publish:
149+
requires:
150+
- node8-latest
151+
- node8-canary
152+
- node9-latest
153+
filters:
154+
branches:
155+
only:
156+
- master

0 commit comments

Comments
 (0)