当前位置: 首页 > 知识库问答 >
问题:

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

齐健柏
2023-03-14

我正在尝试实现GitLab CI Pipeline来构建和部署Angular应用程序。在我们的项目中,我们有两个一般分支:master(仅用于生产)和开发。对于开发,我们从开发分支创建功能/部分功能分支。开发完成后,我们从功能/部分功能创建合并请求到开发。当合并请求获得批准并合并到开发分支时,我想运行一个Pipeline以构建应用程序并在某些环境上部署构建。

我在中使用以下设置。gitlab ci。yml

image: node:7.5-configured

stages:
    - build
    - deploy

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

...

问题是,每次我进入任何功能/某些功能分支时,管道都会执行。我的设置怎么了?如何强制管道仅在直接推入develope分支时执行?

这是我的错——我有两个不同的解决方案。gitlab ci。developmentbranch和feature/some featurebranch中的yml文件。

共有3个答案

涂选
2023-03-14

您应该添加。gitlab ci。yml文件位于需要在其上运行CI的分支中。

鲁鸿朗
2023-03-14

虽然在这次讨论中已经花了很多时间,但我想提出一个观点,我大部分时间都在使用这个观点。

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/**/* 

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

当做

姬熙云
2023-03-14

这是我的错——我有两个不同的选择。gitlab ci。developebranch和feature/some featurebranch中的yml文件,这就是为什么对所有分支执行管道。

 类似资料:
  • 我对GitHub Actions比较陌生,我有两个工作——一个是运行我的测试,另一个是将我的项目部署到服务器上。 显然,我希望测试在每个分支上运行,但是部署应该只在某个东西被推送到主控时发生。 我正在努力寻找在特定分支机构工作的方法。我知道只在特定分支上运行整个工作流是可能的,但是这意味着我将有一个“测试”工作流和一个“部署”工作流。 这听起来像是一个解决方案,但它们可以并行运行。在理想情况下,测

  • 我对使用Jenkins文件和GIT插件的Jenkins多分支pipleline有一个问题。 问题是,每次向暂存分支推送都会触发master管道。所需的行为是,推送到暂存分支仅触发用于暂存的管道,而推送到主分支仅触发主管道 这是我的詹金斯档案 我将分享一些日志:这是主分支的日志 这是主分支的日志,但只有暂存有一个新的提交: 注意“已发现更改”,即使主分支上的头未更改 詹金斯·弗。2.190.1 Gi

  • 是否可以将多分支管道限制为一次只构建一个分支? 我有一个管道,它包含签出、构建、测试,然后部署的步骤。部署阶段在特定的机器上复制/执行一些文件,这些工作无法与其他分支作业并行完成。 我尝试过: 但这只限制了基于分支的并发,因此仍然有多个分支将并行运行。 此外,在常规非流水线Jenkins作业中,有一个选项复选框: “必要时执行并发生成” 但这在多分支配置中也不可用。 是否有其他配置来实现这一点,或

  • 我有两个分支(和master)。分支2基于分支1基于master。我已经提交了分支1进行审查,它有一些更改,我将其中一些更改重新基于历史并将结果合并到master中。 现在我需要将Branch 2放在master之上,为审查/合并做准备。 问题是分支2仍然包含分支1的原始提交,这些提交已经不存在了,所以git会感到困惑。我尝试rebase -i删除分支1的原始提交,但是分支2的提交并不基于分支1之

  • 有人知道如何使用跨分支的多分支作业中设置的声明性管道来限制并发构建吗? 每当我们为某个阶段设置代理时,就会分配一个新的执行者。这会导致死锁,例如,当您为尽可能多的分支同时触发生成时,您有执行者。不设置代理会导致阶段随机选择执行者,这是不可接受的,因为某些阶段需要在某些代理上运行。。。 经典的方法不起作用: Throttle并发构建插件不适用于多分支 设置属性([disableConcurrentB

  • 问题内容: 目前,我们使用Jenkins作业DSL在每个Git分支上生成许多Jenkins作业。多分支管道插件似乎是一种有趣的方式,可以使用Jenkinsfiles获得一流的作业生成支持,并减少我们维护的Job DSL数量。 例如,我们有 libwidget-server 和 widget-server 开发分支项目。当libwidget- server构建完成时,将触发widget-server