GitLab中通过include引入的.pre阶段未执行问题咨询
GitLab流水线.pre阶段通过模板引入不执行的原因及解决方法
这不是Bug,是对GitLab流水线阶段配置优先级规则的理解偏差导致的问题。
GitLab的stages配置遵循主配置覆盖引入模板的规则:当你在主.gitlab-ci.yml中显式定义了stages列表时,它会完全替代所有引入模板中的阶段定义,包括.pre这种特殊阶段。
.pre虽然是GitLab内置的特殊阶段(默认会在所有自定义阶段前执行),但前提是它必须存在于当前生效的stages列表中。你在主配置里只定义了build和test阶段,.pre不在这个列表里,所以模板中指定为.pre的job会被忽略。
解决方法
只需在主.gitlab-ci.yml的stages列表中添加.pre即可:
include: - local: "prestage.yml" stages: - .pre # 加入这个特殊阶段 - build - test job1: stage: build script: - echo "This job runs in the build stage." job2: stage: test script: - echo "This job runs in the test stage."
修改后,模板中的first-job就会在所有阶段之前正常执行。
内容的提问来源于stack exchange,提问作者Anand Joshi
相关产品推荐
相关产品推荐

