Skip to content

Commit 9c772b5

Browse files
committed
[ci] Add retries to CI, use deepl registry, use LTS Node by default in CI
1 parent fcaaed8 commit 9c772b5

File tree

1 file changed

+81
-19
lines changed

1 file changed

+81
-19
lines changed

.gitlab-ci.yml

Lines changed: 81 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

1118
cache:
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

4787
build:
@@ -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

127189
publish to NPM:

0 commit comments

Comments
 (0)