Raymond Toy pushed to branch issue-489-update-gitlab-to-extends-syntax at cmucl / cmucl

Commits:

1 changed file:

Changes:

  • .gitlab-ci.yml
    ... ... @@ -122,6 +122,67 @@ workflow:
    122 122
         - CMUCL=../../dist/bin/lisp ./run-cmucl.sh
    
    123 123
         - ../../snapshot/bin/lisp -load report
    
    124 124
     
    
    125
    +# Rules shared by optional/manual jobs (static analyzer, markdown-link-check).
    
    126
    +.optional-rules:
    
    127
    +  rules:
    
    128
    +    - if: $CI_PIPELINE_SOURCE == "schedule"
    
    129
    +    - if: $RUN_CHECKS
    
    130
    +    - when: manual
    
    131
    +      allow_failure: true
    
    132
    +
    
    133
    +# Per-platform base jobs: capture tags and the needs chain so individual
    
    134
    +# jobs don't have to repeat them.
    
    135
    +.linux:
    
    136
    +  tags:
    
    137
    +    - linux
    
    138
    +
    
    139
    +.linux-needs-install:
    
    140
    +  extends: .linux
    
    141
    +  needs:
    
    142
    +    - job: linux:install
    
    143
    +      artifacts: true
    
    144
    +
    
    145
    +.linux-needs-build:
    
    146
    +  extends: .linux
    
    147
    +  needs:
    
    148
    +    # Needs artifacts from build (dist/)
    
    149
    +    - job: linux:build
    
    150
    +      artifacts: true
    
    151
    +
    
    152
    +.osx:
    
    153
    +  tags:
    
    154
    +    - macos-virtualbox
    
    155
    +
    
    156
    +.osx-needs-install:
    
    157
    +  extends: .osx
    
    158
    +  needs:
    
    159
    +    - job: osx:install
    
    160
    +      artifacts: true
    
    161
    +
    
    162
    +.osx-needs-build:
    
    163
    +  extends: .osx
    
    164
    +  needs:
    
    165
    +    # Needs artifacts from build (dist/)
    
    166
    +    - job: osx:build
    
    167
    +      artifacts: true
    
    168
    +
    
    169
    +.ubuntu:
    
    170
    +  tags:
    
    171
    +    - ubuntu
    
    172
    +
    
    173
    +.ubuntu-needs-install:
    
    174
    +  extends: .ubuntu
    
    175
    +  needs:
    
    176
    +    - job: ubuntu:install
    
    177
    +      artifacts: true
    
    178
    +
    
    179
    +.ubuntu-needs-build:
    
    180
    +  extends: .ubuntu
    
    181
    +  needs:
    
    182
    +    # Needs artifacts from build (dist/)
    
    183
    +    - job: ubuntu:build
    
    184
    +      artifacts: true
    
    185
    +
    
    125 186
     stages:
    
    126 187
       - install
    
    127 188
       - build
    
    ... ... @@ -135,29 +196,21 @@ cache:
    135 196
     
    
    136 197
     #### Linux jobs ####
    
    137 198
     linux:install:
    
    138
    -  extends: .install
    
    139
    -  tags:
    
    140
    -    - linux
    
    199
    +  extends: [.install, .linux]
    
    141 200
       variables:
    
    142 201
         osname: "linux"
    
    143 202
         CURL: "curl"
    
    144 203
     
    
    145 204
     linux:build:
    
    146
    -  extends: .build
    
    147
    -  tags:
    
    148
    -    - linux
    
    149
    -  needs:
    
    150
    -    - job: linux:install
    
    151
    -      artifacts: true
    
    205
    +  extends: [.build, .linux-needs-install]
    
    152 206
       variables:
    
    153 207
         # Fedora 41 must build with gcc because the clang build fails some
    
    154 208
         # ansi-tests.  See [#469].
    
    155 209
         CONFIG: "x86_linux"
    
    156 210
     
    
    157 211
     linux:cross-build:
    
    212
    +  extends: .linux-needs-install
    
    158 213
       stage: build
    
    159
    -  tags:
    
    160
    -    - linux
    
    161 214
       artifacts:
    
    162 215
         paths:
    
    163 216
           - xdist/
    
    ... ... @@ -169,9 +222,6 @@ linux:cross-build:
    169 222
       variables:
    
    170 223
         # This must match the config used for the linux build!
    
    171 224
         CONFIG: "x86_linux"
    
    172
    -  needs:
    
    173
    -    - job: linux:install
    
    174
    -      artifacts: true
    
    175 225
       script:
    
    176 226
         - bin/create-target.sh xtarget $CONFIG
    
    177 227
         - bin/create-target.sh xcross $CONFIG
    
    ... ... @@ -180,26 +230,14 @@ linux:cross-build:
    180 230
         - bin/make-dist.sh -I xdist xlinux-4
    
    181 231
     
    
    182 232
     linux:test:
    
    183
    -  extends: .unit-test
    
    184
    -  tags:
    
    185
    -    - linux
    
    186
    -  needs:
    
    187
    -    # Needs artifacts from build (dist/)
    
    188
    -    - job: linux:build
    
    189
    -      artifacts: true
    
    233
    +  extends: [.unit-test, .linux-needs-build]
    
    190 234
     
    
    191 235
     linux:exec-test:
    
    192
    -  extends: .exec-test
    
    193
    -  tags:
    
    194
    -    - linux
    
    195
    -  needs:
    
    196
    -    - job: linux:build
    
    197
    -      artifacts: true
    
    236
    +  extends: [.exec-test, .linux-needs-build]
    
    198 237
     
    
    199 238
     linux:cross-test:
    
    239
    +  extends: .linux
    
    200 240
       stage: test
    
    201
    -  tags:
    
    202
    -    - linux
    
    203 241
       artifacts:
    
    204 242
         paths:
    
    205 243
           - ansi-test/test.out
    
    ... ... @@ -212,18 +250,10 @@ linux:cross-test:
    212 250
         - bin/run-unit-tests.sh -l xdist/bin/lisp 2>&1 | tee cross-test.log
    
    213 251
     
    
    214 252
     linux:ansi-test:
    
    215
    -  extends: .ansi-test
    
    216
    -  tags:
    
    217
    -    - linux
    
    218
    -  needs:
    
    219
    -    # Needs artifacts from build (dist/)
    
    220
    -    - job: linux:build
    
    221
    -      artifacts: true
    
    253
    +  extends: [.ansi-test, .linux-needs-build]
    
    222 254
     
    
    223 255
     linux:benchmark:
    
    224
    -  extends: .benchmark
    
    225
    -  tags:
    
    226
    -    - linux
    
    256
    +  extends: [.benchmark, .linux]
    
    227 257
       needs:
    
    228 258
         # Needs artifacts from install (snapshot/) and build (dist/)
    
    229 259
         - job: linux:install
    
    ... ... @@ -232,53 +262,27 @@ linux:benchmark:
    232 262
     
    
    233 263
     #### OSX (Mac) jobs ####
    
    234 264
     osx:install:
    
    235
    -  extends: .install
    
    236
    -  tags:
    
    237
    -    - macos-virtualbox
    
    265
    +  extends: [.install, .osx]
    
    238 266
       variables:
    
    239 267
         osname: "darwin"
    
    240 268
         CURL: "/opt/local/bin/curl"
    
    241 269
     
    
    242 270
     osx:build:
    
    243
    -  extends: .build
    
    244
    -  tags:
    
    245
    -    - macos-virtualbox
    
    246
    -  needs:
    
    247
    -    - job: osx:install
    
    248
    -      artifacts: true
    
    271
    +  extends: [.build, .osx-needs-install]
    
    249 272
       variables:
    
    250 273
         CONFIG: "x86_darwin"
    
    251 274
     
    
    252 275
     osx:test:
    
    253
    -  extends: .unit-test
    
    254
    -  tags:
    
    255
    -    - macos-virtualbox
    
    256
    -  needs:
    
    257
    -    # Needs artifacts from build (dist/)
    
    258
    -    - job: osx:build
    
    259
    -      artifacts: true
    
    276
    +  extends: [.unit-test, .osx-needs-build]
    
    260 277
     
    
    261 278
     osx:exec-test:
    
    262
    -  extends: .exec-test
    
    263
    -  tags:
    
    264
    -    - macos-virtualbox
    
    265
    -  needs:
    
    266
    -    - job: osx:build
    
    267
    -      artifacts: true
    
    279
    +  extends: [.exec-test, .osx-needs-build]
    
    268 280
     
    
    269 281
     osx:ansi-test:
    
    270
    -  extends: .ansi-test
    
    271
    -  tags:
    
    272
    -    - macos-virtualbox
    
    273
    -  needs:
    
    274
    -    # Needs artifacts from build (dist/)
    
    275
    -    - job: osx:build
    
    276
    -      artifacts: true
    
    282
    +  extends: [.ansi-test, .osx-needs-build]
    
    277 283
     
    
    278 284
     osx:benchmark:
    
    279
    -  extends: .benchmark
    
    280
    -  tags:
    
    281
    -    - macos-virtualbox
    
    285
    +  extends: [.benchmark, .osx]
    
    282 286
       needs:
    
    283 287
         # Needs artifacts from install (snapshot/) and build (dist/)
    
    284 288
         - job: osx:install
    
    ... ... @@ -288,21 +292,12 @@ osx:benchmark:
    288 292
     # Optional job that runs the static analyzer.  It needs the files from
    
    289 293
     # the linux-4 directory built in the linux:build job.
    
    290 294
     linux:static-analyzer:
    
    295
    +  extends: [.optional-rules, .linux-needs-build]
    
    291 296
       stage: analyze
    
    292
    -  tags:
    
    293
    -    - linux
    
    294 297
       artifacts:
    
    295 298
         when: always
    
    296 299
         paths:
    
    297 300
           - analyzer.log
    
    298
    -  needs:
    
    299
    -    - job: linux:build
    
    300
    -      artifacts: true
    
    301
    -  rules:
    
    302
    -    - if: $CI_PIPELINE_SOURCE == "schedule"
    
    303
    -    - if: $RUN_CHECKS
    
    304
    -    - when: manual
    
    305
    -      allow_failure: true
    
    306 301
       script:
    
    307 302
         # Analysis can generate huge amounts of output.  For now just save
    
    308 303
         # the results to the log file instead of also having it go to the
    
    ... ... @@ -313,20 +308,13 @@ linux:static-analyzer:
    313 308
     
    
    314 309
     #### OpenSUSE jobs ####
    
    315 310
     ubuntu:install:
    
    316
    -  extends: .install
    
    317
    -  tags:
    
    318
    -    - ubuntu
    
    311
    +  extends: [.install, .ubuntu]
    
    319 312
       variables:
    
    320 313
         osname: "linux"
    
    321 314
         CURL: "curl"
    
    322 315
     
    
    323 316
     ubuntu:build:
    
    324
    -  extends: .build
    
    325
    -  tags:
    
    326
    -    - ubuntu
    
    327
    -  needs:
    
    328
    -    - job: ubuntu:install
    
    329
    -      artifacts: true
    
    317
    +  extends: [.build, .ubuntu-needs-install]
    
    330 318
       variables:
    
    331 319
         # Build with gcc on Ubuntu 25.10.  It produces a lisp than passes
    
    332 320
         # the ansi-tests.  Clang seems to fail the ansi-tests WRITE.1,
    
    ... ... @@ -334,22 +322,10 @@ ubuntu:build:
    334 322
         CONFIG: "x86_linux"
    
    335 323
     
    
    336 324
     ubuntu:test:
    
    337
    -  extends: .unit-test
    
    338
    -  tags:
    
    339
    -    - ubuntu
    
    340
    -  needs:
    
    341
    -    # Needs artifacts from build (dist/)
    
    342
    -    - job: ubuntu:build
    
    343
    -      artifacts: true
    
    325
    +  extends: [.unit-test, .ubuntu-needs-build]
    
    344 326
     
    
    345 327
     ubuntu:ansi-test:
    
    346
    -  extends: .ansi-test
    
    347
    -  tags:
    
    348
    -    - ubuntu
    
    349
    -  needs:
    
    350
    -    # Needs artifacts from build (dist/)
    
    351
    -    - job: ubuntu:build
    
    352
    -      artifacts: true
    
    328
    +  extends: [.ansi-test, .ubuntu-needs-build]
    
    353 329
     
    
    354 330
     # Optional job that runs the markdown link checker.  This is optional
    
    355 331
     # because it's very slow, of course; you have to run it manually.
    
    ... ... @@ -357,21 +333,14 @@ ubuntu:ansi-test:
    357 333
     # From https://github.com/tcort/markdown-link-check
    
    358 334
     # Checks links on the wiki pages whenever any wiki markdown pages change. 
    
    359 335
     markdown-link-check:
    
    336
    +  extends: [.optional-rules, .linux]
    
    360 337
       stage: markdown-link-check
    
    361 338
     
    
    362
    -  # Only the linux runner has markdown-link-check installed
    
    363
    -  tags:
    
    364
    -    - linux
    
    365 339
       # It's ok if this fails; we don't want to declare the entire
    
    366 340
       # pipeline as having failed.
    
    367 341
       allow_failure: true
    
    368 342
       # This job doesn't depend on any others.
    
    369 343
       needs: []
    
    370
    -  rules:
    
    371
    -    - if: $CI_PIPELINE_SOURCE == "schedule"
    
    372
    -    - if: $RUN_CHECKS
    
    373
    -    - when: manual
    
    374
    -      allow_failure: true
    
    375 344
       script:
    
    376 345
         # Check links in the main repo
    
    377 346
         - find . -name \*.md -print0 | xargs -0 -n1 markdown-link-check
    
    ... ... @@ -380,3 +349,5 @@ markdown-link-check:
    380 349
         # https://gitlab.com/gitlab-org/gitlab/-/issues/17845.
    
    381 350
         - git clone https://gitlab.common-lisp.net/cmucl/cmucl.wiki.git
    
    382 351
         - find cmucl.wiki -name \*.md -print0 | xargs -0 -n1 markdown-link-check
    
    352
    +
    
    353
    +