相关疑难解决方法(0)

如何防止两个Jenkins项目/构建同时运行?

我有两个共享数据库的Jenkins项目.它们不能同时运行.严格来说,除了非并发之外,它们之间没有特定的依赖关系,但是目前我通过运行另一个"下游"来部分地管理这个约束.这大部分时间都有效,但并非总是如此.如果在第二个运行时发生源控制更改,则第一个将再次启动,并且它们将同时运行,并且可能两者都失败了.

这与如何防止某些Jenkins作业同时运行类似但不完全相同区别在于我没有"线程数"问题 - 我在任何时候都只运行任何给定项目的最多一个线程,即使在两个(不同项目)构建的情况下也是如此彼此.这似乎排除了该主题中的所有几个建议.

hudson jenkins

29
推荐指数
3
解决办法
3万
查看次数

从另一个作业禁用Jenkins作业

詹金斯(哈德森)有办法禁止从另一份工作中找到工作吗?

基本上我们有一个构建环境,可以进行标准构建/测试.我们还使用相同的Jenkins实例来执行其他一些操作,例如自动安装我们产品的新版本(这是某些自动化测试所需的).当我们运行一些"额外"作业时,我们希望暂时禁用"标准"作业(然后在以后自动启用它们).

理想情况下,在作业上会有一些额外的构建步骤来说"禁用XYZ作业".或者,如果有通过ANT或某种方式告诉Jenkins禁用某个工作,那也可以.

更新: 看起来有几个插件会阻止两个作业同时运行,但我真的需要:

  1. 运行作业A,禁用作业1
  2. 根据作业A的输出,在Jenkins之外做一些事情
  3. 运行作业B,再次启用作业1

jenkins

11
推荐指数
2
解决办法
2万
查看次数

詹金斯并行触发和等待

我有4个工作需要按以下顺序执行

JOB A 
 |------> JOB B
 |------> JOB C 
            |------> JOB D
Run Code Online (Sandbox Code Playgroud)

在上面

  1. A应该并行触发B&C,C inturn触发D.
  2. A应该保持工作运行直到所有3个工作完成.

我尝试了以下插件,无法实现我想要的

  • 加入插件
  • Multijob插件
  • 多配置项目
  • Paramterized Trigger插件

有没有我试过的插件可以帮助我解决这个问题.或者这可以通过不同的方式实现.请指教.

hudson hudson-plugins jenkins jenkins-plugins

6
推荐指数
1
解决办法
7869
查看次数

如何确保Hudson中只有一种类型的作业同时运行?

我使用Hudson自动测试一个非常大的重要产品.我想让我的测试主机能够运行尽可能多的并发构建,因为它们理论上会支持,除了excel-tests,它必须在每台机器上随时运行一个.任何数量的非excel测试都可以同时运行,但每台机器最多只能运行一次excel测试.

背景:

我的大多数测试都是正常的单元测试 - 我可以轻松地并行运行.遗憾的是,我的单元测试计划中的一个实质性且耗时的部分包括已在Excel中实现的测试.

您可能认为在Excel中实施测试很疯狂 - 实际上有一个重要原因:我们的大多数用户通过Excel访问我们的系统.Excel有自己古怪的数据处理方式,所以保证我们的东西适用于Excel用户的唯一方法就是逐字实现我们的Excel应用程序的注册测试.

我编写了一个测试运行工具,它允许我轻松地启动一组excel测试:每个测试都是一个.xls文件.每个组都是一个充满excel文件的文件夹.我有大约30个小组需要运行进行端到端测试.我的工具将每个测试的结果转换为Hudson能够理解的JUnit样式XML.测试使用pywin32com库来自动化excel.当他们自己运行时,他们是可靠的.

我有一组专门用于运行测试的计算机.每台机器都是四核的,理论上可以同时运行很多东西.不幸的是,我发现COM不能用于一次安全地控制每台机器超过1个excel.

也就是说,如果第二个构建星试图通过COM与Excel通信它可能会干扰已经运行的那个并导致两个测试都失败.

我可以运行许多其他非excel进程,因为机器将允许但我需要找到一种方法,以便Hudson不会尝试启动任何超过1个进程,这需要同时在任何一台机器上excel.

hudson

5
推荐指数
1
解决办法
4369
查看次数

Jenkins多配置项目处理并发设备使用情况

案件

我在移动设备(android,ios)上有一个Jenkins奴隶女巫运行的葫芦测试.要分别运行测试的机器(适用于iOS的Android或适用于Android的Linux),我还使用了Throttle Concurrent Builds插件.通过这种方式,我将设备连接到的Android或Mac Jenkins奴隶分开.

我使用映射表和自编写的bash脚本按名称调用设备并对此特定从站执行测试.映射表映射是设备ID(或iOS的IP)的名称.

架构如下:

[Master]--(Slave-iOS)---------iPhone6
 |             |--------------iPhone5
 |            
 |--------(Slave-Android)-----HTCOne
               |--------------Nexus
               |--------------G4
Run Code Online (Sandbox Code Playgroud)

要将设备移交给bash脚本,我使用Jenkins Matrix Project插件,它允许我创建一个设备和测试用例列表,如:

          HTCOne Nexus G4
Run         x     x     x
Delete      x     x     x
CreateUser  x     x     x
Run Code Online (Sandbox Code Playgroud)

遗憾的是,这个列表只能按顺序执行.现在我还希望在多个设备上并行构建测试,反之亦然.

我搜索一个处理设备分配的Jenkins插件.如果一个触发器需要特定设备,它应该等到可以访问该设备并且可以执行测试.该插件应该与Jenkins中的shell执行集成.

如果它可以与Matrix Project Plugin结合使用,那将是一个很大的优势!

到目前为止我所看到的:

  • 排除-插件,
  • Throttle Concurrent Builds插件,[用于指定slave]
  • 锁定和锁存插件,对于目前为止列出的所有插件,我不知道如何将它们链接到矩阵配置并动态获取设备.我也不知道如何将锁定的资源信息放入我的脚本中.
  • Port Allocator插件,未经测试但似乎有同样的问题
  • 外部资源调度程序,似乎只分配一个资源,如果它是矩阵配置,则找不到任何内容.

我找到的相关问题,虽然有所帮助,但没有解决问题:

testing mobile jenkins calabash

5
推荐指数
1
解决办法
691
查看次数

如何阻止 Jenkins 作业在声明性管道中获取执行器?

如果另一个作业(具有特定名称)已经在运行,如何防止作业抢占执行程序?

我正在寻找类似Build Blocker 插件但用于声明式管道的东西。

我已经尝试过可锁定资源插件,但它并不能阻止作业获取执行器,作业获得执行器,然后等待资源释放以实际执行任何操作。

我们有数百个作业,因此手动配置每个作业是不切实际的,而且也很难维护。

我见过这些类似的问题,但我尝试使用相对较新的声明性管道来做到这一点

jenkins devops

5
推荐指数
0
解决办法
563
查看次数