GitLab CI配置:标签自动触发+手动执行构建作业
正确配置方案
完整的GitLab CI配置如下:
stages: - tests - build_release - deploy prepare-cache: stage: tests script: - "echo prepare some general stuff" build_release_frontend: stage: build_release needs: - prepare-cache script: - "echo do a frontend build" artifacts: paths: - assets when: always rules: - if: $CI_COMMIT_TAG when: always - when: manual deploy: stage: deploy when: manual needs: - build_release_frontend script: - "echo do a release"
配置说明
- 移除冲突配置:删除了
build_release_frontend顶层的when: manual,避免与rules中的执行条件规则冲突——GitLab CI中同时使用顶层when和rules会导致规则解析混乱,进而生成重复作业或触发依赖错误。 - 规则逻辑明确:
- 第一条规则:当存在
CI_COMMIT_TAG(即创建标签时),作业自动执行(when: always),满足标签触发自动构建的需求。 - 第二条规则:其他所有场景下,作业设为手动可触发(
when: manual),确保始终可以手动启动构建。
- 第一条规则:当存在
- 依赖正常满足:
prepare-cache未添加规则限制,会在所有流水线(分支、标签)中自动运行,因此build_release_frontend的needs依赖能够正常生效,不会出现"依赖作业不在前置阶段"的错误。
内容的提问来源于stack exchange,提问作者Tobias
相关产品推荐
相关产品推荐

