如何针对指定分支触发GitLab流水线作业且排除仅改动特定文件的提交?
配置方案
在.gitlab-ci.yml的部署作业节点下配置rules规则即可实现需求,GitLab 13.1及以上版本推荐使用带exclude_paths的写法:
deploy: stage: deploy script: # 替换为你实际的部署执行命令 - ./deploy.sh rules: # 匹配指定触发分支,示例为main分支,可自行修改 - if: $CI_COMMIT_BRANCH == "main" changes: paths: - "**/*" exclude_paths: - "Makefile" - "docker-compose.yml" when: always # 其余所有情况都不触发当前作业 - when: never
规则逻辑说明
- 只有提交属于你指定的目标分支时才会进入后续校验
exclude_paths会过滤仅改动指定文件的提交:如果本次提交只改了Makefile、docker-compose.yml中的一个或两个,不会触发部署作业;只要有其他文件改动就会正常触发- 如果需要匹配所有层级目录下的同名文件,可将路径修改为
**/Makefile、**/docker-compose.yml
低版本GitLab兼容写法
如果你的GitLab版本低于13.1不支持exclude_paths,可以用only/except组合实现:
deploy: stage: deploy script: - ./deploy.sh only: refs: - main changes: - "**/*" except: changes: - "Makefile" - "docker-compose.yml"
内容的提问来源于stack exchange,提问作者Erokos
相关产品推荐
相关产品推荐

