@@ -6,7 +6,14 @@ include:
66
77# Global --------------------------
88
9- image : node:latest
9+ # Use Active LTS (18)
10+ image : ${CI_REGISTRY_IMAGE}/node:18-alpine
11+
12+ workflow :
13+ rules :
14+ - if : $CI_PIPELINE_SOURCE == "merge_request_event"
15+ - if : $CI_COMMIT_TAG
16+ - if : ' $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
1017
1118cache :
1219 key :
@@ -27,21 +34,54 @@ before_script:
2734
2835# stage: check ----------------------
2936
30- eslint :
37+ .eslint_base :
3138 stage : check
3239 script :
3340 - npm run lint
3441
35- audit :
42+ eslint_scheduled :
43+ extends : .eslint_base
44+ rules :
45+ - if : $CI_PIPELINE_SOURCE == "schedule"
46+ retry : 2
47+
48+ eslint_manual :
49+ extends : .eslint_base
50+ rules :
51+ - if : $CI_PIPELINE_SOURCE != "schedule"
52+
53+ .audit_base :
3654 stage : check
3755 script :
3856 - npm audit
3957
40- format :
58+ audit_scheduled :
59+ extends : .audit_base
60+ rules :
61+ - if : $CI_PIPELINE_SOURCE == "schedule"
62+ retry : 2
63+
64+ audit_manual :
65+ extends : .audit_base
66+ rules :
67+ - if : $CI_PIPELINE_SOURCE != "schedule"
68+
69+ .format_base :
4170 stage : check
4271 script :
4372 - npm run format
4473
74+ format_scheduled :
75+ extends : .format_base
76+ rules :
77+ - if : $CI_PIPELINE_SOURCE == "schedule"
78+ retry : 2
79+
80+ format_manual :
81+ extends : .format_base
82+ rules :
83+ - if : $CI_PIPELINE_SOURCE != "schedule"
84+
4585# stage: build ----------------------
4686
4787build :
@@ -55,24 +95,24 @@ build:
5595
5696# stage: test ----------------------
5797
58- test :
98+ .test_base :
5999 stage : test
60100 extends : .test
61101 retry : 1
62102 parallel :
63103 matrix :
64- - DOCKER_IMAGE : ' node:18'
65- - DOCKER_IMAGE : ' node:12'
104+ - DOCKER_IMAGE : ' node:18-alpine '
105+ - DOCKER_IMAGE : ' node:12-alpine '
66106 USE_MOCK_SERVER : ' use mock server'
67- - DOCKER_IMAGE : ' node:14'
107+ - DOCKER_IMAGE : ' node:14-alpine '
68108 USE_MOCK_SERVER : ' use mock server'
69- - DOCKER_IMAGE : ' node:16'
109+ - DOCKER_IMAGE : ' node:16-alpine '
70110 USE_MOCK_SERVER : ' use mock server'
71- - DOCKER_IMAGE : ' node:17'
111+ - DOCKER_IMAGE : ' node:17-alpine '
72112 USE_MOCK_SERVER : ' use mock server'
73- - DOCKER_IMAGE : ' node:18'
113+ - DOCKER_IMAGE : ' node:18-alpine '
74114 USE_MOCK_SERVER : ' use mock server'
75- image : ${DOCKER_IMAGE}
115+ image : ${CI_REGISTRY_IMAGE}/${ DOCKER_IMAGE}
76116 script :
77117 - >
78118 if [[ ! -z "${USE_MOCK_SERVER}" ]]; then
@@ -92,17 +132,28 @@ test:
92132 - junit.xml
93133 when : always
94134
95- examples :
135+ test_scheduled :
136+ extends : .test_base
137+ rules :
138+ - if : $CI_PIPELINE_SOURCE == "schedule"
139+ retry : 2
140+
141+ test_manual :
142+ extends : .test_base
143+ rules :
144+ - if : $CI_PIPELINE_SOURCE != "schedule"
145+
146+ .examples_base :
96147 stage : test
97148 extends : .test
98149 parallel :
99150 matrix :
100- - DOCKER_IMAGE : ' node:12'
101- - DOCKER_IMAGE : ' node:14'
102- - DOCKER_IMAGE : ' node:16'
103- - DOCKER_IMAGE : ' node:17'
104- - DOCKER_IMAGE : ' node:18'
105- image : ${DOCKER_IMAGE}
151+ - DOCKER_IMAGE : ' node:12-alpine '
152+ - DOCKER_IMAGE : ' node:14-alpine '
153+ - DOCKER_IMAGE : ' node:16-alpine '
154+ - DOCKER_IMAGE : ' node:17-alpine '
155+ - DOCKER_IMAGE : ' node:18-alpine '
156+ image : ${CI_REGISTRY_IMAGE}/${ DOCKER_IMAGE}
106157 before_script : # Note: replaces global before_script
107158 - npm install --production
108159 script :
@@ -122,6 +173,17 @@ examples:
122173 - npm run build
123174 - node index.js
124175
176+ examples_scheduled :
177+ extends : .examples_base
178+ rules :
179+ - if : $CI_PIPELINE_SOURCE == "schedule"
180+ retry : 2
181+
182+ examples_manual :
183+ extends : .examples_base
184+ rules :
185+ - if : $CI_PIPELINE_SOURCE != "schedule"
186+
125187# stage: publish ----------------------
126188
127189publish to NPM :
0 commit comments