Gitlab-CI:仅针对合并请求的gitlab ci触发器构建

时间:2015-11-25 06:58:05

标签: build continuous-integration gitlab gitlab-ci build-script

我正在使用gitlab 8.1.4。并使用内置的gitlab-ci。默认情况下,gitlab-ci会触发每次推送的构建。如何在创建合并请求期间使其触发?

提前致谢

4 个答案:

答案 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 定义应使用哪个构建的分支。

仅在受保护分支(例如 masterrelease)上运行(完整)构建并且仅在开发分支上运行小型验证构建是一种很好的做法。

rules:
    - if: '$CI_COMMIT_REF_PROTECTED == "true"

在设置中,您可以配置受保护的分支。通常只有维护者才能修改受保护的分支。

您还可以根据分支名称来制定规则。我们使用它来禁用包含名称部分“nosonar”的分支上的声纳扫描。此外,对于通过设置特定标签(如“tools-v1.2.3”)触发的所有构建,我们跳过它:

  rules:
    - if: '$CI_COMMIT_TAG !~ /^(release|tools)-v.*/ && $CI_COMMIT_TAG !~ /nosonar/'