| ... |
... |
@@ -15,15 +15,19 @@ workflow: |
|
15
|
15
|
- if: $CI_PIPELINE_SOURCE == "schedule"
|
|
16
|
16
|
# Run on merge requests
|
|
17
|
17
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
18
|
|
- # Don't create a branch pipeline when an MR pipeline already exists
|
|
|
18
|
+ # Run on the default branch (where there's no MR)
|
|
|
19
|
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
|
20
|
+ # Run on feature branches, but only if there's no open MR (to avoid
|
|
|
21
|
+ # duplicate pipelines).
|
|
19
|
22
|
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
|
|
20
|
23
|
when: never
|
|
21
|
24
|
- if: $CI_COMMIT_BRANCH
|
|
|
25
|
+ # Run on tags
|
|
22
|
26
|
- if: $CI_COMMIT_TAG
|
|
23
|
27
|
|
|
24
|
28
|
# Default install configuration to download the cmucl tarballs to use
|
|
25
|
29
|
# for building.
|
|
26
|
|
-.install_template: &install_configuration
|
|
|
30
|
+.install:
|
|
27
|
31
|
stage: install
|
|
28
|
32
|
artifacts:
|
|
29
|
33
|
paths:
|
| ... |
... |
@@ -45,7 +49,7 @@ workflow: |
|
45
|
49
|
# the option '-C ""' is good enough. We also override the default
|
|
46
|
50
|
# build dirs by using the -b option so that we know where the results
|
|
47
|
51
|
# are, independent of OS.
|
|
48
|
|
-.build_template: &build_configuration
|
|
|
52
|
+.build:
|
|
49
|
53
|
stage: build
|
|
50
|
54
|
artifacts:
|
|
51
|
55
|
paths:
|
| ... |
... |
@@ -78,7 +82,7 @@ workflow: |
|
78
|
82
|
- bin/make-dist.sh -S build-4
|
|
79
|
83
|
|
|
80
|
84
|
# Default configuration for running the ansi-tests.
|
|
81
|
|
-.ansi_test_template: &ansi_test_configuration
|
|
|
85
|
+.ansi-test:
|
|
82
|
86
|
stage: ansi-test
|
|
83
|
87
|
artifacts:
|
|
84
|
88
|
paths:
|
| ... |
... |
@@ -88,7 +92,7 @@ workflow: |
|
88
|
92
|
- cp ../ansi-test/test.out ansi-test.out
|
|
89
|
93
|
|
|
90
|
94
|
# Default configuration for running unit tests.
|
|
91
|
|
-.unit_test_template: &unit_test_configuration
|
|
|
95
|
+.unit-test:
|
|
92
|
96
|
stage: test
|
|
93
|
97
|
artifacts:
|
|
94
|
98
|
paths:
|
| ... |
... |
@@ -99,7 +103,7 @@ workflow: |
|
99
|
103
|
|
|
100
|
104
|
# Default configuration to test creation of lisp executable and
|
|
101
|
105
|
# testing the exectuable works.
|
|
102
|
|
-.exec_test_template: &exec_test_configuration
|
|
|
106
|
+.exec-test:
|
|
103
|
107
|
stage: test
|
|
104
|
108
|
script:
|
|
105
|
109
|
# Create an executable and test it by printing the version.
|
| ... |
... |
@@ -110,7 +114,7 @@ workflow: |
|
110
|
114
|
- bin/run-unit-tests.sh -l ./saved-lisp-executable
|
|
111
|
115
|
|
|
112
|
116
|
# Default configuration for running the benchmarks.
|
|
113
|
|
-.benchmark_template: &benchmark_configuration
|
|
|
117
|
+.benchmark:
|
|
114
|
118
|
stage: benchmark
|
|
115
|
119
|
artifacts:
|
|
116
|
120
|
paths:
|
| ... |
... |
@@ -121,7 +125,68 @@ workflow: |
|
121
|
125
|
- CMUCL=../../snapshot/bin/lisp ./run-cmucl.sh
|
|
122
|
126
|
- CMUCL=../../dist/bin/lisp ./run-cmucl.sh
|
|
123
|
127
|
- ../../snapshot/bin/lisp -load report
|
|
124
|
|
-
|
|
|
128
|
+
|
|
|
129
|
+# Rules shared by optional/manual jobs (static analyzer, markdown-link-check).
|
|
|
130
|
+.optional-rules:
|
|
|
131
|
+ rules:
|
|
|
132
|
+ - if: $CI_PIPELINE_SOURCE == "schedule"
|
|
|
133
|
+ - if: $RUN_CHECKS
|
|
|
134
|
+ - when: manual
|
|
|
135
|
+ allow_failure: true
|
|
|
136
|
+
|
|
|
137
|
+# Per-platform base jobs: capture tags and the needs chain so individual
|
|
|
138
|
+# jobs don't have to repeat them.
|
|
|
139
|
+.linux:
|
|
|
140
|
+ tags:
|
|
|
141
|
+ - linux
|
|
|
142
|
+
|
|
|
143
|
+.linux-needs-install:
|
|
|
144
|
+ extends: .linux
|
|
|
145
|
+ needs:
|
|
|
146
|
+ - job: linux:install
|
|
|
147
|
+ artifacts: true
|
|
|
148
|
+
|
|
|
149
|
+.linux-needs-build:
|
|
|
150
|
+ extends: .linux
|
|
|
151
|
+ needs:
|
|
|
152
|
+ # Needs artifacts from build (dist/)
|
|
|
153
|
+ - job: linux:build
|
|
|
154
|
+ artifacts: true
|
|
|
155
|
+
|
|
|
156
|
+.osx:
|
|
|
157
|
+ tags:
|
|
|
158
|
+ - macos-virtualbox
|
|
|
159
|
+
|
|
|
160
|
+.osx-needs-install:
|
|
|
161
|
+ extends: .osx
|
|
|
162
|
+ needs:
|
|
|
163
|
+ - job: osx:install
|
|
|
164
|
+ artifacts: true
|
|
|
165
|
+
|
|
|
166
|
+.osx-needs-build:
|
|
|
167
|
+ extends: .osx
|
|
|
168
|
+ needs:
|
|
|
169
|
+ # Needs artifacts from build (dist/)
|
|
|
170
|
+ - job: osx:build
|
|
|
171
|
+ artifacts: true
|
|
|
172
|
+
|
|
|
173
|
+.ubuntu:
|
|
|
174
|
+ tags:
|
|
|
175
|
+ - ubuntu
|
|
|
176
|
+
|
|
|
177
|
+.ubuntu-needs-install:
|
|
|
178
|
+ extends: .ubuntu
|
|
|
179
|
+ needs:
|
|
|
180
|
+ - job: ubuntu:install
|
|
|
181
|
+ artifacts: true
|
|
|
182
|
+
|
|
|
183
|
+.ubuntu-needs-build:
|
|
|
184
|
+ extends: .ubuntu
|
|
|
185
|
+ needs:
|
|
|
186
|
+ # Needs artifacts from build (dist/)
|
|
|
187
|
+ - job: ubuntu:build
|
|
|
188
|
+ artifacts: true
|
|
|
189
|
+
|
|
125
|
190
|
stages:
|
|
126
|
191
|
- install
|
|
127
|
192
|
- build
|
| ... |
... |
@@ -135,29 +200,21 @@ cache: |
|
135
|
200
|
|
|
136
|
201
|
#### Linux jobs ####
|
|
137
|
202
|
linux:install:
|
|
138
|
|
- <<: *install_configuration
|
|
139
|
|
- tags:
|
|
140
|
|
- - linux
|
|
|
203
|
+ extends: [.install, .linux]
|
|
141
|
204
|
variables:
|
|
142
|
205
|
osname: "linux"
|
|
143
|
206
|
CURL: "curl"
|
|
144
|
207
|
|
|
145
|
208
|
linux:build:
|
|
146
|
|
- <<: *build_configuration
|
|
147
|
|
- tags:
|
|
148
|
|
- - linux
|
|
149
|
|
- needs:
|
|
150
|
|
- - job: linux:install
|
|
151
|
|
- artifacts: true
|
|
|
209
|
+ extends: [.build, .linux-needs-install]
|
|
152
|
210
|
variables:
|
|
153
|
211
|
# Fedora 41 must build with gcc because the clang build fails some
|
|
154
|
212
|
# ansi-tests. See [#469].
|
|
155
|
213
|
CONFIG: "x86_linux"
|
|
156
|
214
|
|
|
157
|
215
|
linux:cross-build:
|
|
|
216
|
+ extends: .linux-needs-install
|
|
158
|
217
|
stage: build
|
|
159
|
|
- tags:
|
|
160
|
|
- - linux
|
|
161
|
218
|
artifacts:
|
|
162
|
219
|
paths:
|
|
163
|
220
|
- xdist/
|
| ... |
... |
@@ -169,10 +226,6 @@ linux:cross-build: |
|
169
|
226
|
variables:
|
|
170
|
227
|
# This must match the config used for the linux build!
|
|
171
|
228
|
CONFIG: "x86_linux"
|
|
172
|
|
-
|
|
173
|
|
- needs:
|
|
174
|
|
- - job: linux:install
|
|
175
|
|
- artifacts: true
|
|
176
|
229
|
script:
|
|
177
|
230
|
- bin/create-target.sh xtarget $CONFIG
|
|
178
|
231
|
- bin/create-target.sh xcross $CONFIG
|
| ... |
... |
@@ -181,26 +234,14 @@ linux:cross-build: |
|
181
|
234
|
- bin/make-dist.sh -I xdist xlinux-4
|
|
182
|
235
|
|
|
183
|
236
|
linux:test:
|
|
184
|
|
- <<: *unit_test_configuration
|
|
185
|
|
- tags:
|
|
186
|
|
- - linux
|
|
187
|
|
- needs:
|
|
188
|
|
- # Needs artifacts from build (dist/)
|
|
189
|
|
- - job: linux:build
|
|
190
|
|
- artifacts: true
|
|
|
237
|
+ extends: [.unit-test, .linux-needs-build]
|
|
191
|
238
|
|
|
192
|
239
|
linux:exec-test:
|
|
193
|
|
- <<: *exec_test_configuration
|
|
194
|
|
- tags:
|
|
195
|
|
- - linux
|
|
196
|
|
- needs:
|
|
197
|
|
- - job: linux:build
|
|
198
|
|
- artifacts: true
|
|
|
240
|
+ extends: [.exec-test, .linux-needs-build]
|
|
199
|
241
|
|
|
200
|
242
|
linux:cross-test:
|
|
|
243
|
+ extends: .linux
|
|
201
|
244
|
stage: test
|
|
202
|
|
- tags:
|
|
203
|
|
- - linux
|
|
204
|
245
|
artifacts:
|
|
205
|
246
|
paths:
|
|
206
|
247
|
- ansi-test/test.out
|
| ... |
... |
@@ -213,18 +254,10 @@ linux:cross-test: |
|
213
|
254
|
- bin/run-unit-tests.sh -l xdist/bin/lisp 2>&1 | tee cross-test.log
|
|
214
|
255
|
|
|
215
|
256
|
linux:ansi-test:
|
|
216
|
|
- <<: *ansi_test_configuration
|
|
217
|
|
- tags:
|
|
218
|
|
- - linux
|
|
219
|
|
- needs:
|
|
220
|
|
- # Needs artifacts from build (dist/)
|
|
221
|
|
- - job: linux:build
|
|
222
|
|
- artifacts: true
|
|
223
|
|
-
|
|
|
257
|
+ extends: [.ansi-test, .linux-needs-build]
|
|
|
258
|
+
|
|
224
|
259
|
linux:benchmark:
|
|
225
|
|
- <<: *benchmark_configuration
|
|
226
|
|
- tags:
|
|
227
|
|
- - linux
|
|
|
260
|
+ extends: [.benchmark, .linux]
|
|
228
|
261
|
needs:
|
|
229
|
262
|
# Needs artifacts from install (snapshot/) and build (dist/)
|
|
230
|
263
|
- job: linux:install
|
| ... |
... |
@@ -233,78 +266,42 @@ linux:benchmark: |
|
233
|
266
|
|
|
234
|
267
|
#### OSX (Mac) jobs ####
|
|
235
|
268
|
osx:install:
|
|
236
|
|
- <<: *install_configuration
|
|
237
|
|
- tags:
|
|
238
|
|
- - macos-virtualbox
|
|
|
269
|
+ extends: [.install, .osx]
|
|
239
|
270
|
variables:
|
|
240
|
271
|
osname: "darwin"
|
|
241
|
272
|
CURL: "/opt/local/bin/curl"
|
|
242
|
273
|
|
|
243
|
274
|
osx:build:
|
|
244
|
|
- <<: *build_configuration
|
|
245
|
|
- tags:
|
|
246
|
|
- - macos-virtualbox
|
|
247
|
|
- needs:
|
|
248
|
|
- - job: osx:install
|
|
249
|
|
- artifacts: true
|
|
|
275
|
+ extends: [.build, .osx-needs-install]
|
|
250
|
276
|
variables:
|
|
251
|
277
|
CONFIG: "x86_darwin"
|
|
252
|
278
|
|
|
253
|
279
|
osx:test:
|
|
254
|
|
- <<: *unit_test_configuration
|
|
255
|
|
- tags:
|
|
256
|
|
- - macos-virtualbox
|
|
257
|
|
- needs:
|
|
258
|
|
- # Needs artifacts from build (dist/)
|
|
259
|
|
- - job: osx:build
|
|
260
|
|
- artifacts: true
|
|
|
280
|
+ extends: [.unit-test, .osx-needs-build]
|
|
261
|
281
|
|
|
262
|
282
|
osx:exec-test:
|
|
263
|
|
- <<: *exec_test_configuration
|
|
264
|
|
- tags:
|
|
265
|
|
- - macos-virtualbox
|
|
266
|
|
- needs:
|
|
267
|
|
- - job: osx:build
|
|
268
|
|
- artifacts: true
|
|
269
|
|
-
|
|
|
283
|
+ extends: [.exec-test, .osx-needs-build]
|
|
|
284
|
+
|
|
270
|
285
|
osx:ansi-test:
|
|
271
|
|
- <<: *ansi_test_configuration
|
|
272
|
|
- tags:
|
|
273
|
|
- - macos-virtualbox
|
|
274
|
|
- needs:
|
|
275
|
|
- # Needs artifacts from build (dist/)
|
|
276
|
|
- - job: osx:build
|
|
277
|
|
- artifacts: true
|
|
278
|
|
-
|
|
|
286
|
+ extends: [.ansi-test, .osx-needs-build]
|
|
|
287
|
+
|
|
279
|
288
|
osx:benchmark:
|
|
280
|
|
- <<: *benchmark_configuration
|
|
281
|
|
- tags:
|
|
282
|
|
- - macos-virtualbox
|
|
|
289
|
+ extends: [.benchmark, .osx]
|
|
283
|
290
|
needs:
|
|
284
|
291
|
# Needs artifacts from install (snapshot/) and build (dist/)
|
|
285
|
292
|
- job: osx:install
|
|
286
|
293
|
artifacts: true
|
|
287
|
|
- - job: osx:build
|
|
|
294
|
+ - job: osx:build
|
|
288
|
295
|
|
|
289
|
296
|
# Optional job that runs the static analyzer. It needs the files from
|
|
290
|
297
|
# the linux-4 directory built in the linux:build job.
|
|
291
|
298
|
linux:static-analyzer:
|
|
|
299
|
+ extends: [.optional-rules, .linux-needs-build]
|
|
292
|
300
|
stage: analyze
|
|
293
|
|
-
|
|
294
|
|
- tags:
|
|
295
|
|
- - linux
|
|
296
|
301
|
artifacts:
|
|
297
|
302
|
when: always
|
|
298
|
303
|
paths:
|
|
299
|
304
|
- analyzer.log
|
|
300
|
|
- needs:
|
|
301
|
|
- - job: linux:build
|
|
302
|
|
- artifacts: true
|
|
303
|
|
- rules:
|
|
304
|
|
- - if: $CI_PIPELINE_SOURCE == "schedule"
|
|
305
|
|
- - if: $RUN_CHECKS
|
|
306
|
|
- - when: manual
|
|
307
|
|
- allow_failure: true
|
|
308
|
305
|
script:
|
|
309
|
306
|
# Analysis can generate huge amounts of output. For now just save
|
|
310
|
307
|
# the results to the log file instead of also having it go to the
|
| ... |
... |
@@ -315,20 +312,13 @@ linux:static-analyzer: |
|
315
|
312
|
|
|
316
|
313
|
#### OpenSUSE jobs ####
|
|
317
|
314
|
ubuntu:install:
|
|
318
|
|
- <<: *install_configuration
|
|
319
|
|
- tags:
|
|
320
|
|
- - ubuntu
|
|
|
315
|
+ extends: [.install, .ubuntu]
|
|
321
|
316
|
variables:
|
|
322
|
317
|
osname: "linux"
|
|
323
|
318
|
CURL: "curl"
|
|
324
|
319
|
|
|
325
|
320
|
ubuntu:build:
|
|
326
|
|
- <<: *build_configuration
|
|
327
|
|
- tags:
|
|
328
|
|
- - ubuntu
|
|
329
|
|
- needs:
|
|
330
|
|
- - job: ubuntu:install
|
|
331
|
|
- artifacts: true
|
|
|
321
|
+ extends: [.build, .ubuntu-needs-install]
|
|
332
|
322
|
variables:
|
|
333
|
323
|
# Build with gcc on Ubuntu 25.10. It produces a lisp than passes
|
|
334
|
324
|
# the ansi-tests. Clang seems to fail the ansi-tests WRITE.1,
|
| ... |
... |
@@ -336,22 +326,10 @@ ubuntu:build: |
|
336
|
326
|
CONFIG: "x86_linux"
|
|
337
|
327
|
|
|
338
|
328
|
ubuntu:test:
|
|
339
|
|
- <<: *unit_test_configuration
|
|
340
|
|
- tags:
|
|
341
|
|
- - ubuntu
|
|
342
|
|
- needs:
|
|
343
|
|
- # Needs artifacts from build (dist/)
|
|
344
|
|
- - job: ubuntu:build
|
|
345
|
|
- artifacts: true
|
|
|
329
|
+ extends: [.unit-test, .ubuntu-needs-build]
|
|
346
|
330
|
|
|
347
|
331
|
ubuntu:ansi-test:
|
|
348
|
|
- <<: *ansi_test_configuration
|
|
349
|
|
- tags:
|
|
350
|
|
- - ubuntu
|
|
351
|
|
- needs:
|
|
352
|
|
- # Needs artifacts from build (dist/)
|
|
353
|
|
- - job: ubuntu:build
|
|
354
|
|
- artifacts: true
|
|
|
332
|
+ extends: [.ansi-test, .ubuntu-needs-build]
|
|
355
|
333
|
|
|
356
|
334
|
# Optional job that runs the markdown link checker. This is optional
|
|
357
|
335
|
# because it's very slow, of course; you have to run it manually.
|
| ... |
... |
@@ -359,21 +337,14 @@ ubuntu:ansi-test: |
|
359
|
337
|
# From https://github.com/tcort/markdown-link-check
|
|
360
|
338
|
# Checks links on the wiki pages whenever any wiki markdown pages change.
|
|
361
|
339
|
markdown-link-check:
|
|
|
340
|
+ extends: [.optional-rules, .linux]
|
|
362
|
341
|
stage: markdown-link-check
|
|
363
|
342
|
|
|
364
|
|
- # Only the linux runner has markdown-link-check installed
|
|
365
|
|
- tags:
|
|
366
|
|
- - linux
|
|
367
|
343
|
# It's ok if this fails; we don't want to declare the entire
|
|
368
|
344
|
# pipeline as having failed.
|
|
369
|
345
|
allow_failure: true
|
|
370
|
346
|
# This job doesn't depend on any others.
|
|
371
|
347
|
needs: []
|
|
372
|
|
- rules:
|
|
373
|
|
- - if: $CI_PIPELINE_SOURCE == "schedule"
|
|
374
|
|
- - if: $RUN_CHECKS
|
|
375
|
|
- - when: manual
|
|
376
|
|
- allow_failure: true
|
|
377
|
348
|
script:
|
|
378
|
349
|
# Check links in the main repo
|
|
379
|
350
|
- find . -name \*.md -print0 | xargs -0 -n1 markdown-link-check
|
| ... |
... |
@@ -383,3 +354,4 @@ markdown-link-check: |
|
383
|
354
|
- git clone https://gitlab.common-lisp.net/cmucl/cmucl.wiki.git
|
|
384
|
355
|
- find cmucl.wiki -name \*.md -print0 | xargs -0 -n1 markdown-link-check
|
|
385
|
356
|
|
|
|
357
|
+ |