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

如何在多分支项目顺序而不是并行中运行作业

丌官高远
2023-03-14

我在Jenkins中配置了一个多分支管道项目。该项目在我的所有功能分支(git)上联调运行。对于管道项目中的每个作业,它都会创建一个我的webapp实例(启动tomcat和其他依赖项)。由于端口绑定问题,这会导致许多工作中断。

我可以限制多分支管道项目中的构建,以便每个功能分支的作业顺序运行而不是并行运行吗?

或者有没有更优雅的解决方案?

编辑:情况和问题:

  • 我想在Jenkins中有一个多分支管道项目(因为我在git中有许多功能分支)

问题是,许多这样的工作可以在午夜开始。每个作业都会尝试启动我的webapp实例。第一个作业可以毫无问题地启动webapp。第二个作业无法启动webapp,因为端口已从第一个实例获取。

我不想为我的git存储库中的每个功能分支配置新的端口绑定。我需要一个解决方案来限制多分支管道中的构建,以便只有在“功能”上才能并发运行。

共有2个答案

韩刚洁
2023-03-14

最优雅的解决方案是使您的集成测试能够同时运行。

一种解决方案是使用带有动态端口的嵌入式tomcat。这样,每个作业实例都将在具有不同端口的tomcat中运行。这也是比依赖外部服务器更好的解决方案。

如果这项工作太多,您可以在“jenkinsfile”管道中始终使用以下代码:

node {
  // This limits build concurrency to 1 per branch
  properties([disableConcurrentBuilds()])

  // continue your pipeline ... 

}

解决方案来自于这样的答案。

柯波峻
2023-03-14

从我在其他答案中读到的内容来看,disableConcurrentBuilds命令只能防止在同一分支上进行多个构建。

如果您希望一次仅运行一个构建,请转到运行您的应用程序的特定VM的Nodes/Build执行器配置,将执行器的数量降至1并配置节点标签,以便只有来自您的多分支管道的作业可以在该VM上运行。

我的项目有严格的内存、许可和存储限制,因此通过这种设置,主分支和功能分支上的所有作业都会启动,但在执行器可用之前,一次只能运行一个作业。

 类似资料:
  • 问题内容: 我要查询所有10个表以从中获取用户ID,并将所有用户ID加载到HashSet中,以便可以拥有唯一的用户ID。 截至目前,它是按顺序进行的。我们转到一个表,并从中提取所有user_id并将其加载到哈希集中,然后将其存储在第二个和第三个表中并继续运行。 有什么方法可以使这个多线程的,以便他们为每个表并行地从我的表中获取数据?最后,我需要哈希集,该哈希集应具有所有10个表中的所有唯一用户ID

  • 我正在开始一门Android Studio课程,但我在运行代码时遇到了问题:事实上,当我使用Nexus S API 22点击“Run app”时,启动的是我的旧项目,而不是我的新项目。我有Android Studio 3.5 我试图重启Android Studio并启动全新的项目,但没有成功。 谢谢你的帮助。

  • 一个spark有一个oracle查询。所以我必须并行运行多个作业,以便所有查询都将同时激发。 如何并行运行多个作业?

  • 有没有办法运行(不仅编译)单个类(使用main方法)而不是像Intellij IDEA那样运行整个项目? 而且,是否可以在同一窗口中打开不同的项目,而不是在新窗口中或在当前项目的位置打开它们?

  • 我试图在maven reactor项目的子项目中执行Java文件。这与Maven exec:java goal在多模块项目上的问题类似,但是除非我执行,否则exec插件无法找到我试图在子项目中运行的类。 也许我误解了的预期工作流程,但每次更改时都必须执行mvn install,这确实会使工作流程复杂化。 当我从Eclipse执行文件时,Eclipse会正确设置类路径(即和),我希望从命令行模拟这种

  • 问题内容: 如果我有这样的数据: 我如何将命令连接成这样: 我在下面使用了此查询,但命令列的顺序不依其顺序号而定: 任何意见和建议将不胜感激。^ _ ^ 问题答案: 永远不要使用。阅读为什么不在Oracle中使用WM_CONCAT函数? 请参阅本主题https://stackoverflow.com/a/28758117/3989608。 它没有记录,并且依赖的任何应用程序一旦升级到后都将无法工作