GitLab CI中单独使用when:never的作用及无它时的行为疑问
GitLab CI末尾单独使用
when: never的意义及移除后的影响 当前配置的逻辑解析
GitLab CI的rules是按从上到下顺序匹配的,只要命中第一条符合条件的规则,就会停止后续判断:
- 第一条规则:当
SOME-CONDITION成立时,该任务会被设置为手动触发状态(需要人工点击才会运行); - 第二条规则:单独使用
when: never时,等价于无条件触发这条规则——也就是说,只要没匹配到第一条的情况,这个任务直接被排除在流水线之外,不会被创建。
直白点说,这个配置的核心效果是:只有满足指定条件时,任务才会以手动形式出现在流水线中;其他所有场景下,该任务根本不会出现在流水线里。
移除- when: never后的行为变化
如果删掉这条兜底规则,当SOME-CONDITION不满足时,由于没有匹配到任何自定义规则,GitLab会触发默认行为:任务会自动被加入流水线并自动执行(除非你在only/except或全局配置里做了额外限制)。
举个实际场景对比:
- 原配置:假设
SOME-CONDITION是$CI_COMMIT_BRANCH == 'main',那只有合并到主分支时,才会出现手动部署任务;其他分支/场景下,部署任务直接消失。 - 移除后:主分支仍需手动部署,但其他分支会自动生成并运行部署任务——这大概率不是预期结果,所以这条
when: never的作用就是杜绝任务在非目标场景下自动执行。
内容的提问来源于stack exchange,提问作者joe1531
相关产品推荐
相关产品推荐

