UNPKG

3.88 kBYAMLView Raw
1# generator: n-circle2-cli
2# template: component
3
4references:
5
6 container_config_node: &container_config_node
7 working_directory: ~/project/build
8 docker:
9 - image: circleci/node:12-browsers
10
11 workspace_root: &workspace_root
12 ~/project
13
14 attach_workspace: &attach_workspace
15 attach_workspace:
16 at: *workspace_root
17
18 npm_cache_keys: &npm_cache_keys
19 keys:
20 - v3-dependency-npm-{{ checksum "package.json" }}-
21 - v3-dependency-npm-{{ checksum "package.json" }}
22 - v3-dependency-npm-
23
24 cache_npm_cache: &cache_npm_cache
25 save_cache:
26 key: v3-dependency-npm-{{ checksum "package.json" }}-{{ epoch }}
27 paths:
28 - ./node_modules/
29
30 restore_npm_cache: &restore_npm_cache
31 restore_cache:
32 <<: *npm_cache_keys
33
34 filters_only_main: &filters_only_main
35 branches:
36 only: main
37
38 filters_ignore_main: &filters_ignore_main
39 branches:
40 ignore: main
41
42 filters_ignore_tags: &filters_ignore_tags
43 tags:
44 ignore: /.*/
45
46 filters_version_tag: &filters_version_tag
47 tags:
48 only:
49 - /^v?\d+\.\d+\.\d+(?:-beta\.\d+)?$/
50 branches:
51 ignore: /.*/
52
53version: 2
54
55jobs:
56
57 build:
58 <<: *container_config_node
59 steps:
60 - checkout
61 - run:
62 name: Checkout next-ci-shared-helpers
63 command: git clone --depth 1 git@github.com:Financial-Times/next-ci-shared-helpers.git .circleci/shared-helpers
64 - *restore_npm_cache
65 - run:
66 name: Install project dependencies
67 command: make install
68 - run:
69 name: shared-helper / npm-install-peer-deps
70 command: .circleci/shared-helpers/helper-npm-install-peer-deps
71 - run:
72 name: shared-helper / npm-update
73 command: .circleci/shared-helpers/helper-npm-update
74 - run:
75 name: shared-helper / generate-build-state-artifacts
76 command: .circleci/shared-helpers/helper-generate-build-state-artifacts
77 when: always
78 - *cache_npm_cache
79 - store_artifacts:
80 path: build-state
81 destination: build-state
82 - persist_to_workspace:
83 root: *workspace_root
84 paths:
85 - build
86
87 test:
88 <<: *container_config_node
89 steps:
90 - *attach_workspace
91 - run:
92 name: Run tests
93 command: make test
94 environment:
95 JEST_JUNIT_OUTPUT: test-results/jest/results.xml
96 MOCHA_FILE: test-results/mocha/results.xml
97 - store_test_results:
98 path: test-results
99 - store_artifacts:
100 path: test-results
101 destination: test-results
102
103 publish:
104 <<: *container_config_node
105 steps:
106 - *attach_workspace
107 - run:
108 name: shared-helper / npm-store-auth-token
109 command: .circleci/shared-helpers/helper-npm-store-auth-token
110 - run: npx snyk monitor --org=customer-products --project-name=Financial-Times/n-test
111 - run:
112 name: shared-helper / npm-version-and-publish-public
113 command: .circleci/shared-helpers/helper-npm-version-and-publish-public
114
115workflows:
116
117 version: 2
118
119 build-test:
120 jobs:
121 - build:
122 filters:
123 <<: *filters_ignore_tags
124 - test:
125 requires:
126 - build
127
128 build-test-publish:
129 jobs:
130 - build:
131 filters:
132 <<: *filters_version_tag
133 - test:
134 filters:
135 <<: *filters_version_tag
136 requires:
137 - build
138 - publish:
139 filters:
140 <<: *filters_version_tag
141 requires:
142 - test
143
144 nightly:
145 triggers:
146 - schedule:
147 cron: "0 0 * * *"
148 filters:
149 <<: *filters_only_main
150 jobs:
151 - build:
152 context: next-nightly-build
153 - test:
154 requires:
155 - build
156 context: next-nightly-build