@@ -6,7 +6,14 @@ include:
6
6
7
7
# Global --------------------------
8
8
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'
10
17
11
18
cache :
12
19
key :
@@ -27,21 +34,54 @@ before_script:
27
34
28
35
# stage: check ----------------------
29
36
30
- eslint :
37
+ .eslint_base :
31
38
stage : check
32
39
script :
33
40
- npm run lint
34
41
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 :
36
54
stage : check
37
55
script :
38
56
- npm audit
39
57
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 :
41
70
stage : check
42
71
script :
43
72
- npm run format
44
73
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
+
45
85
# stage: build ----------------------
46
86
47
87
build :
@@ -55,24 +95,24 @@ build:
55
95
56
96
# stage: test ----------------------
57
97
58
- test :
98
+ .test_base :
59
99
stage : test
60
100
extends : .test
61
101
retry : 1
62
102
parallel :
63
103
matrix :
64
- - DOCKER_IMAGE : ' node:18'
65
- - DOCKER_IMAGE : ' node:12'
104
+ - DOCKER_IMAGE : ' node:18-alpine '
105
+ - DOCKER_IMAGE : ' node:12-alpine '
66
106
USE_MOCK_SERVER : ' use mock server'
67
- - DOCKER_IMAGE : ' node:14'
107
+ - DOCKER_IMAGE : ' node:14-alpine '
68
108
USE_MOCK_SERVER : ' use mock server'
69
- - DOCKER_IMAGE : ' node:16'
109
+ - DOCKER_IMAGE : ' node:16-alpine '
70
110
USE_MOCK_SERVER : ' use mock server'
71
- - DOCKER_IMAGE : ' node:17'
111
+ - DOCKER_IMAGE : ' node:17-alpine '
72
112
USE_MOCK_SERVER : ' use mock server'
73
- - DOCKER_IMAGE : ' node:18'
113
+ - DOCKER_IMAGE : ' node:18-alpine '
74
114
USE_MOCK_SERVER : ' use mock server'
75
- image : ${DOCKER_IMAGE}
115
+ image : ${CI_REGISTRY_IMAGE}/${ DOCKER_IMAGE}
76
116
script :
77
117
- >
78
118
if [[ ! -z "${USE_MOCK_SERVER}" ]]; then
@@ -92,17 +132,28 @@ test:
92
132
- junit.xml
93
133
when : always
94
134
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 :
96
147
stage : test
97
148
extends : .test
98
149
parallel :
99
150
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}
106
157
before_script : # Note: replaces global before_script
107
158
- npm install --production
108
159
script :
@@ -122,6 +173,17 @@ examples:
122
173
- npm run build
123
174
- node index.js
124
175
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
+
125
187
# stage: publish ----------------------
126
188
127
189
publish to NPM :
0 commit comments