我有两个共享数据库的Jenkins项目.它们不能同时运行.严格来说,除了非并发之外,它们之间没有特定的依赖关系,但是目前我通过运行另一个"下游"来部分地管理这个约束.这大部分时间都有效,但并非总是如此.如果在第二个运行时发生源控制更改,则第一个将再次启动,并且它们将同时运行,并且可能两者都失败了.
这与如何防止某些Jenkins作业同时运行类似但不完全相同?区别在于我没有"线程数"问题 - 我在任何时候都只运行任何给定项目的最多一个线程,即使在两个(不同项目)构建的情况下也是如此彼此.这似乎排除了该主题中的所有几个建议.
詹金斯(哈德森)有办法禁止从另一份工作中找到工作吗?
基本上我们有一个构建环境,可以进行标准构建/测试.我们还使用相同的Jenkins实例来执行其他一些操作,例如自动安装我们产品的新版本(这是某些自动化测试所需的).当我们运行一些"额外"作业时,我们希望暂时禁用"标准"作业(然后在以后自动启用它们).
理想情况下,在作业上会有一些额外的构建步骤来说"禁用XYZ作业".或者,如果有通过ANT或某种方式告诉Jenkins禁用某个工作,那也可以.
更新: 看起来有几个插件会阻止两个作业同时运行,但我真的需要:
我有4个工作需要按以下顺序执行
JOB A
|------> JOB B
|------> JOB C
|------> JOB D
Run Code Online (Sandbox Code Playgroud)
在上面
我尝试了以下插件,无法实现我想要的
有没有我试过的插件可以帮助我解决这个问题.或者这可以通过不同的方式实现.请指教.
我使用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.
我在移动设备(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结合使用,那将是一个很大的优势!
到目前为止我所看到的:
我找到的相关问题,虽然有所帮助,但没有解决问题:
如果另一个作业(具有特定名称)已经在运行,如何防止作业抢占执行程序?
我正在寻找类似Build Blocker 插件但用于声明式管道的东西。
我已经尝试过可锁定资源插件,但它并不能阻止作业获取执行器,作业获得执行器,然后等待资源释放以实际执行任何操作。
我们有数百个作业,因此手动配置每个作业是不切实际的,而且也很难维护。
我见过这些类似的问题,但我尝试使用相对较新的声明性管道来做到这一点