如何修复CI流水线:支持自动按标签运行与手动指定默认值执行?
修复后的GitLab CI配置方案
问题出在两个核心点:
$CI_JOB_MANUAL是作业级变量,无法在workflow规则层面生效,导致手动触发时规则不匹配,流水线被过滤。- workflow规则内的变量赋值格式错误,应该用键值对而非数组形式。
修复后的完整配置如下:
stages: - build workflow: rules: - if: $CI_COMMIT_TAG - if: $CI_PIPELINE_SOURCE == "web" variables: CI_COMMIT_TAG: "manual" build_app: script: - echo "Build completed" artifacts: expire_in: 30 days paths: - . name: "app-$CI_COMMIT_TAG"
关键改动说明:
- 替换触发判断条件:用
$CI_PIPELINE_SOURCE == "web"替代$CI_JOB_MANUAL——GitLab界面手动触发流水线时,CI_PIPELINE_SOURCE固定为web,该变量在workflow层面可正常识别。 - 修正变量赋值格式:去掉数组符号
-,改为直接赋值CI_COMMIT_TAG: "manual",符合GitLab CI的变量定义规范。
验证效果:
- 执行
git tag v2.4.1 && git push --tags时,流水线匹配$CI_COMMIT_TAG规则触发,生成制品app-v2.4.1.zip。 - 通过界面「Pipeline --> Run pipeline」手动触发时,匹配
$CI_PIPELINE_SOURCE == "web"规则,自动将CI_COMMIT_TAG设为manual,生成制品app-manual.zip。
内容的提问来源于stack exchange,提问作者SteeveDroz
相关产品推荐
相关产品推荐

