我只想为merge_requests
引用运行作业,并且对指定文件进行更改时,according to official doc我要在.gitlab-ci.yml中创建此作业:
merge-request-test:
<<: *some_anchor
only:
refs:
- merge_requests
changes:
- "*.py"
- "**/*.py"
- postman/some-file.json
但是即使我更改任何其他文件,该作业也将开始。
我了解到,GitLab CI对OR
和refs
部分应用了changes
规则:
在以下示例中,如果任何 以下是正确的:
管道运行为主节点。 README.md有所更改 仓库根目录中的文件。
test: script: npm run test except: refs: - master changes: - "README.md"
我只想在更改指定文件时针对MR 和启动此作业。 我如何实现这种行为?
如果删除refs
部分,则仅在文件更改时有效,但是官方文档不建议这样做,因为我想在管道中使用它:
如果仅使用:更改仅允许合并请求,如果 管道成功,如果不这样做,可能会导致不良行为 也只能使用:merge_requests。
答案 0 :(得分:0)
现在我有这个可行的解决方案:
merge-request-deploy:
<<: *deploy-app
rules:
- if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"'
changes:
- "*.py"
- "**/*.py"
- postman/some-file.json
when: always
if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"'
-给我布朗克先生changes
-给我更改的文件Rule的部分适用于AND规则。