我正在使用gitlab 8.1.4。并使用内置的gitlab-ci。默认情况下,gitlab-ci会触发每次推送的构建。如何在创建合并请求期间使其触发?
提前致谢
答案 0 :(得分:4)
Try the following into your .gitlab-ci.yml file.
stage: build
script:
- xxxxx
artifacts:
paths:
- xxxxx
tags:
- xxxx
only:
- merge_requests
Source: https://docs.gitlab.com/ee/ci/yaml/#only-and-except-simplified
答案 1 :(得分:3)
您可以尝试gitlab-ci-build-on-merge-request。 Gitlab问题探讨了其他选项 - https://gitlab.com/gitlab-org/gitlab-ci/issues/360。
免责声明:我是gitlab-ci-build-on-merge-request的作者。
答案 2 :(得分:0)
正确的合成器
在舞台上
stage: build
script:
- xxxxx
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: always
所有ci
workflow:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: always
答案 3 :(得分:0)
您通常不会区分更改是如何到达分支的(通过签入或通过合并),而是根据分支的类型或分支的名称来区分。使用 rules
定义应使用哪个构建的分支。
仅在受保护分支(例如 master
和 release
)上运行(完整)构建并且仅在开发分支上运行小型验证构建是一种很好的做法。
rules:
- if: '$CI_COMMIT_REF_PROTECTED == "true"
在设置中,您可以配置受保护的分支。通常只有维护者才能修改受保护的分支。
您还可以根据分支名称来制定规则。我们使用它来禁用包含名称部分“nosonar”的分支上的声纳扫描。此外,对于通过设置特定标签(如“tools-v1.2.3”)触发的所有构建,我们跳过它:
rules:
- if: '$CI_COMMIT_TAG !~ /^(release|tools)-v.*/ && $CI_COMMIT_TAG !~ /nosonar/'