【发布时间】:2016-11-21 03:24:23
【问题描述】:
在 Gitlab CI 中,如何仅在特定文件集发生更改时触发构建?
有没有办法在触发构建时包含或排除某些文件?例如:更新README.md, .gitignore 文件不应导致构建触发。
【问题讨论】:
标签: git build continuous-integration gitlab gitlab-ci
在 Gitlab CI 中,如何仅在特定文件集发生更改时触发构建?
有没有办法在触发构建时包含或排除某些文件?例如:更新README.md, .gitignore 文件不应导致构建触发。
【问题讨论】:
标签: git build continuous-integration gitlab gitlab-ci
更新 2
Only/except 似乎是一个不稳定的功能。文档建议改用rules:changes:
job:
script:
- build # replace with your build command
rules:
- changes:
- /*.{java, py} # ... or whatever your file extension is
- dockerfiles/**/* # all files under folder 'dockerfiles'
更新 1:
就像cmets中提到的Gajus,现在可以了!
合并请求:https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/21981
文档:https://docs.gitlab.com/ee/ci/yaml/#onlyexcept-basic(感谢 Connor Shea 在 cmets 中的提示)
原帖:
不,不可能——现在不行!
我认为这就是您要寻找的问题:https://gitlab.com/gitlab-org/gitlab-ce/issues/19232 – 这是一个非常高评价的问题(超过 100 次重击)。
里程碑已更改为 未来 3-6 个月,4 个月前。 (https://gitlab.com/gitlab-org/gitlab-ce/issues/19232#note_31943850) 我希望我们很快就会看到这个功能。
【讨论】:
更新:现在可以从 11.4 开始,请参阅 https://docs.gitlab.com/ee/ci/yaml/#onlychangesexceptchanges
原帖:
目前没有任何方法可以根据已编辑的文件有条件地触发 GitLab CI 中的构建。
我之前自己也考虑过这个功能,我认为它可能对许多不同的用例都非常有用。
我能找到的最接近的问题是https://gitlab.com/gitlab-org/gitlab-ce/issues/23010
无论如何,回答你的问题:
您现在无法真正做到这一点 - 甚至手动 - 因为 CI 没有合并请求的概念,所以无法确定合并请求是否更改了文件。
“理解”什么是合并请求的管道应尽快添加。
【讨论】:
无意中发现了您的问题。我认为这有点晚了:),但该功能从 11.4 版开始提供
见docs
【讨论】:
当与only 规则结合使用时,这对我有用
build-web-dev:
stage: build
script:
- build.sh
only:
- develop
- changes
web/*
Dockerfile.web
【讨论】: