仅限特定分支上的GitLab CI管道

时间:2017-10-26 08:10:42

标签: git continuous-integration gitlab pipeline gitlab-ci

我正在尝试实施GitLab CI Pipelines来构建和部署Angular应用。在我们的项目中,我们有两个一般分支:master(仅限生产)和develop。对于开发,我们从feature/some-feature分支创建develop个分支。开发完成后,我们会创建从feature/some-featuredevelop的合并请求。当合并请求被批准并合并到develop分支时,我想运行管道以构建应用程序并在某些环境中部署构建。

我在.gitlab-ci.yml中使用以下设置:

image: node:7.5-configured

stages:
    - build
    - deploy

build_job:
    stage: build
    only:
        - develop
    script:
        - /bin/bash <some script here>

...

问题是每次推入任何feature/some-feature分支时都会执行Pipeline。我的设置有什么问题?当直接执行develop分支时,如何强制管道执行?

解决方案 这是我的错误 - 我在develop分支和feature/some-feature分支中有两个不同的.gitlab-ci.yml文件。

4 个答案:

答案 0 :(得分:5)

我建议移动

    only:
    - develop
脚本后的

标记:标记

答案 1 :(得分:5)

这是我的错误 - 我在develop分支和feature/some-feature分支中有两个不同的.gitlab-ci.yml文件,这就是为什么所有分支都执行了Pipeline的原因。

答案 2 :(得分:4)

尽管讨论已经过去了很多时间,但我还是想提出一个我大部分时间都在使用的意见。

rules:
    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "master"'
      when: on_success
      changes:
        - folder/some_folder/**/* 
    - if: '$CI_PIPELINE_SOURCE == "web" && $CI_COMMIT_BRANCH == "development"'
      when: manual
      changes:
        - folder/some_other_folder/**/* 

这个结构解决了我的各种问题,希望对你有帮助!

问候。

答案 3 :(得分:2)

您应该在运行CI的分支中添加.gitlab-ci.yml文件。