需求:仅当存在新标签时触发GitLab-CI流水线(附现有配置)
配置GitLab-CI仅在新标签创建时触发流水线
我来帮你调整GitLab-CI配置,实现仅当新标签推送时触发流水线的需求。下面是修改后的完整配置,关键调整点我会逐一说明:
before_script: - echo %CI_BUILD_REF% - echo %CI_PROJECT_DIR% stages: - createPBLs - build - package createPBLs: stage: createPBLs script: - xcopy /y /s "%CI_PROJECT_DIR%" "C:\Bauen\" - cd "C:\Bauen\" - ./run_orcascript.cmd only: - tags build: stage: build script: - cd "C:\Bauen\" - ./run_pbc.cmd only: - tags except: - master build_master: stage: build script: - cd "C:\Bauen\" - ./run_pbcm.cmd only: - tags - master package: stage: package script: - cd "C:\Bauen\" - ./cpfiles.cmd only: - tags artifacts: # 替换为你实际的产物配置,比如路径、过期时间等 paths: - C:\Bauen\output\* expire_in: 1 week
关键改动说明
- 给每个任务(job)都添加了
only: tags配置:这是实现需求的核心,GitLab-CI只会在检测到新标签被推送到仓库时,触发带有这个配置的任务。 - 保留了你原有的分支区分逻辑:针对
master分支的标签和其他分支的标签,分别触发build_master和build任务。如果不需要区分分支标签,你可以删掉build里的except: master和build_master里的master,让两个任务仅受标签触发控制(不过这种情况建议合并成一个任务,避免冲突)。 - 补充了
artifacts的示例配置:你可以把这部分替换成自己原本的产物设置,比如指定输出文件路径、过期时间等。
额外小技巧
如果你只想让特定格式的标签触发流水线(比如v1.0.0这类版本号标签),可以用正则表达式匹配,比如把only: tags改成:
only: - /^v\d+\.\d+\.\d+$/
这样只有符合v+数字.数字.数字格式的标签才会触发流水线,更精准控制触发条件。
内容的提问来源于stack exchange,提问作者Hendouz
相关产品推荐
相关产品推荐

