Raymond Toy pushed to branch master at cmucl / cmucl

Commits:

1 changed file:

Changes:

  • .gitlab-ci.yml
    ... ... @@ -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
    +