如何生成CI_COMMIT_TAG触发的GitLab CI完整流水线配置
生成GitLab CI标签推送场景下的完整配置方法
我的GitLab CI采用多文件拆分配置,结构如下:
. ├── .gitlab-ci.yml └── .gitlab-ci.d ├── main.yml └── release_main.yml
根目录的.gitlab-ci.yml内容为:
workflow: rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH when: always - if: $CI_PIPELINE_SOURCE == 'merge_request_event' when: always - if: $CI_COMMIT_TAG when: always - when: never include: - local: .gitlab-ci.d/main.yml rules: - if: $CI_COMMIT_TAG when: never - when: always - local: .gitlab-ci.d/release_main.yml rules: - if: $CI_COMMIT_TAG when: always - when: never
目前通过流水线编辑器能分析默认分支的完整配置,但无法查看CI_COMMIT_TAG触发时的完整配置,以下是几种生成标签推送场景完整配置的方法:
方法一:用GitLab内置CI Lint工具模拟标签场景
- 进入项目主页,左侧菜单选择「CI/CD」→「CI lint」
- 点击页面右上角的「Simulate pipeline creation」
- 在弹出的表单中,添加变量
CI_COMMIT_TAG并设置任意标签值(例如v1.0.0),按需保留其他必要变量(如CI_DEFAULT_BRANCH) - 点击「Simulate」,即可查看标签场景下自动合并后的完整CI配置
方法二:本地用gitlab-ci-local工具模拟
- 先安装工具(需Node.js环境):
npm install -g gitlab-ci-local - 进入项目根目录,执行命令模拟标签推送场景:
gitlab-ci-local --variable CI_COMMIT_TAG=v1.0.0 - 工具会自动解析所有符合规则的配置文件,输出最终的完整流水线配置,同时可预览待执行的Job
方法三:手动合并配置(适用于规则简单的场景)
根据当前的include规则,标签推送时:
.gitlab-ci.d/main.yml会被排除(CI_COMMIT_TAG存在时,其include规则为when: never).gitlab-ci.d/release_main.yml会被加载(CI_COMMIT_TAG存在时,其include规则为when: always)
直接将.gitlab-ci.yml的内容与release_main.yml的内容合并,即可得到标签场景下的完整配置。此方法仅适合规则简单的情况,复杂规则建议用工具生成更准确。
内容的提问来源于stack exchange,提问作者MaKaNu
相关产品推荐
相关产品推荐

