如何仅在合并请求上配置GitLab CI管道,而仅在特定分支上配置GitLab CI管道?

时间:2019-11-11 05:23:57

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

我具有以下配置以启用合并请求上的管道。我希望此管道仅在对几个特定分支的合并请求上运行。 例如:“ release / some-xyz-branch”和“ develop”分支。 怎么做?

test_job:
    stage: test
    only:
        - merge_requests
    script:
        - npm run test

我尝试按如下所示在“-merge_requests”之后添加分支名称,但未按预期工作。

test_job:
    stage: test
    only:
        - merge_requests
        - develop
        - release/some-xyz-branch
    script:
        - npm run test

2 个答案:

答案 0 :(得分:1)

您可以将variablesrefs一起使用来运行管道。

test_async:
  script:
    - echo "Test Async"
  only:
    refs:
      - merge_requests
    variables:
      - $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^release\/.*$/

test_db:
  script:
    - echo "Test db"
  only: 
    - master  

在上述yaml中,test_async仅在创建合并请求且目标分支为develop或以release/开头时运行。 test_db仅在提交给master时运行。

答案 1 :(得分:0)

我们可以将$CI_COMMIT_REF_NAME预定义的环境变量与only:variables结合使用来完成此行为

test_job:
    stage: test
    only: [merge_requests]
    except:
      variables:
         - $CI_COMMIT_REF_NAME =~ /^docs-/
    script:
        - npm run test

注意:docs-代表refs/merge-requests/:iid/head