【问题标题】:CI pipeline run only when Merge Request has new push commit and to specific branchCI 管道仅在合并请求有新的推送提交和特定分支时运行
【发布时间】:2021-06-03 09:36:55
【问题描述】:

我想创建一个仅在对特定分支有合并请求时运行的管道,并且它也可以在每次工作分支有新的推送提交时运行。

这是我的例子,但它不能正常工作:

unit_test:
stage: test
script:
 - echo "unit test running"
only:
 - merge_requests
 - develop
 - push

【问题讨论】:

    标签: continuous-integration gitlab-ci


    【解决方案1】:

    在处理合并请求时,您需要使用workflowrule 来控制运行器应如何触发管道。你可以在 Gitlab 的官方文档中阅读更多关于它们的信息:Gitab CI workflowGitlab CI rules

    workflow一般可以控制stage的执行,rules可以控制特定stage的执行。您可以使用Predefined Variables 甚至自定义变量来编写一些规则。

    例如,在以下示例中,如果存在推送分支并且创建合并请求时,运行程序将触发管道。当您在有打开的合并请求时推送到分支时,它也会禁用分支管道。

    image: ...
    
    workflow:
      rules:
        - if: '$CI_COMMIT_BRANCH' # All branches
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' # Merge requests
        - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS' # Fix detached merge request pipelines
          when: never
    

    在下面的示例中,您可以通过合并请求中的源分支和目标分支的名称来限制阶段的执行。

    job:
      script: echo "Hello, Rules!"
      rules:
        - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH'
          when: always
        - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/'
          when: manual
          allow_failure: true
    

    【讨论】:

    • 感谢您的回答我现在知道如何做我想做的事。但遗憾的是,我们的 devops 团队正在维护一个不支持工作流关键字等的旧 gitlab 版本。但这将在将来有用,感谢您的帮助。
    • 如果我的回答对您有帮助,请采纳或点赞。
    【解决方案2】:

    使用 Gitlab CI 工作流程和 Gitlab CI 规则来做我想做的事。

    image: ...
    
    workflow:
      rules:
        - if: '$CI_COMMIT_BRANCH' # All branches
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' # Merge requests
        - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS' # Fix detached merge request pipelines
          when: never
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-06
      • 2019-07-22
      • 2017-02-26
      • 2020-07-04
      • 2022-11-04
      • 2021-05-21
      • 2018-12-28
      • 2022-11-04
      相关资源
      最近更新 更多