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

多分支管道与管道作业

富辰阳
2023-03-14

现在多分支管道作业类型已经成熟,还有什么理由再使用简单的管道作业类型吗?即使您现在只有一个分支,考虑到未来多个分支的可能性可能是明智的,那么假设您将Jenkins管道存储在SCM中,那么为您的Jenkins管道使用管道作业类型与始终使用多分支管道作业类型的动机是什么?现在这两种作业类型之间是否存在功能平价?

共有3个答案

别帅
2023-03-14

在CI/CD情况下,可能不希望将每个分支发送到目标环境。使用管道并指定单个分支将允许您进行筛选,并仅将/master发送到暂存或生产环境。多分支将有助于将任何分支上的任何更改专门发送到测试环境。

另一方面,如果QA/AutomatedTesting过程足够彻底,那么将任何分支机构投入生产的风险都是可以接受的。

邓浩漫
2023-03-14

如果您的Jenkins作业处理单个git存储库,那么多分支管道工作得很好。另一方面,当使用单个Jenkins作业处理多个git存储库时,管道作业可以是存储库中立和分支中立的,并且非常灵活。

例如,假设您有来自repo-1的artiface-1、来自repo-2的artiface-2和来自repo-3的集成测试。artiface-2依赖于artiface-1。Jenkins作业必须构建artiface-1,然后构建artiface-2,最后从repo-3运行集成测试。并假设您的代码更改转到repo-1的特征1分支和repo-3中的新测试的特征1分支。在这种情况下,Jenkins作业为artiface-1构建特征1,然后使用“dev”分支作为repo-2的默认值(如果在repo-2中未检测到特征1),并从repo-3运行“特征1”以进行新的集成测试。如您所见,该作业适用于三个git存储库。回购中性/分支中性管道作业在此设置中是理想的。

朱硕
2023-03-14

根据我使用多分支管道的经验,唯一的缺点是在Jenkins主页上看不到最后的成功/失败/持续时间列。他们只是在詹金斯的头版上显示“NA”,因为从技术上讲,它是一个包含子作业的“文件夹”。

除此之外,我想不出使用multibranch还有什么其他的“缺点”。

我不同意另一个答案......这种情况是多分支发送“任何”分支的更改。这不一定是真的。如果Jenkinsfile存在于随机特征分支上,但该分支未在管道中定义,那么您不能使用典型的if/否则条件对其执行任何操作。

例如:

node {
  checkout scm
  def workspace = pwd()

  if (env.BRANCH_NAME == 'master') {
    stage ('Some Stage 1 for master') {
      sh 'do something'
    }
    stage ('Another Stage for Master') {
      sh 'do something else here'
    }
  }

  else if (env.BRANCH_NAME == 'stage') {
    stage ('Some stage branch step') {
      sh 'do something'
    }
    stage ('Deploy to stage target') {
      sh 'do something else'
    }
  }

  else {
    sh 'echo "Branch not applicable to Jenkins... do nothing"'
  }
}
 类似资料:
  • 我有一个场景,但我有两个项目(a和B),都在Jenkins中配置了多分支管道作业,问题是项目B依赖于项目a。 所以我发现有时候当我在项目A中签入代码时,我也需要在项目A构建后构建项目B。现在,在我开始调查管道构建之前,我将每个分支都有一个作业,然后在Jenkins中为相应的分支触发项目B的适当作业。 我想在Jenkins文件中设置什么,这样当ProjectA/develop执行时,它就会触发Pro

  • null null 我怎样才能想象这些工作类型之间的关系?还有其他插件支持这些类型吗?

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

  • 对于一个新项目,我想使用Jenkins CI的新管道功能。我们的Git存储库中有几个分支,应该以同样的方式进行测试。它还应该自动跟踪和处理新的分支。因此,我创建了一个多分支管道作业。但它的配置有两个问题: 1) 为了被Jenkins标记为有效,分行需要一个“Jenkinsfile”。如果这不存在,詹金斯将忽略该分支。有没有办法标记与模式匹配的所有分支,而不需要在其中包含此文件? 2) 每个分支都应

  • 我正在努力使用Jenkins 2.1多分支管道,在这里,我从同一个git存储库构建了多个工件。一些工件是独立的,应该根据它们各自目录中的更改触发构建。有些是依赖的,应该由先前的步骤/构建触发。 存储库有一个控制整个管道的文件。Jenkins多分支管道作业会在所有更改时触发(无其他行为)。 我不知道如何在目录dirA发生变化时触发工件A的构建。 git回购协议中的Jenkins文件file:///r

  • 我遇到了JENKINS-38706。由于它已经开放了一段时间,我正在努力解决这个问题。 我的问题是我正在运行一个多节点管道,其中一个节点是Windows从节点,具有255个字符路径限制。 因此,我正在尝试更改我的Windows从属阶段的工作区,而不是使用多分支管道使用的C:\jenkins\workspace\job-分支-随机字符,我正在尝试将其移动到c:\w\Jobs\分支。 它立即失效: 我