如何强制执行单独Jenkins作业的同步执行?

如何强制执行单独Jenkins作业的同步执行?,jenkins,Jenkins,我们的Jenkins服务器配置了两个主要作业来构建APK。每个作业都有一个子作业,将APK安装到连接到构建服务器并执行UI测试的Android设备上 例如: Project-A-apk 项目A测试 Project-B-apk 项目B测试 在哪里 Project-A-apk启动Project-A-tests Project-B-apk启动Project-B-tests 及 Project-A-tests和Project-B-tests都在同一个测试设备上安装和运行 问题是,我们不能让测试作业同时运

我们的Jenkins服务器配置了两个主要作业来构建APK。每个作业都有一个子作业,将APK安装到连接到构建服务器并执行UI测试的Android设备上

例如:

Project-A-apk
项目A测试
Project-B-apk
项目B测试

在哪里

Project-A-apk启动Project-A-tests
Project-B-apk启动Project-B-tests

Project-A-tests和Project-B-tests都在同一个测试设备上安装和运行

问题是,我们不能让测试作业同时运行,因为它们都会尝试与同一设备交互

有没有办法将作业配置为在执行前等待其他作业(不在其父链中)?

您应该尝试以下方法:

如果队列中至少有一个作业名称,则此插件会将实际作业保留在队列中 当前运行的作业与给定的常规作业之一匹配 表情

另一种方法是将詹金斯遗嘱执行人的数量限制为一人。这将确保只有一个作业正在运行,其他作业在队列中等待。但是,这可能会阻止将来不访问测试设备的其他作业。

我使用来控制作业何时应同时运行

设置类别名称,如android设备,每个节点的最大并发生成数设置为1。将此类别分配给在android设备上运行测试的作业。安装插件后,在作业配置页面上有一个分配类别的位置

分配了相同类别名称的所有作业将连续执行,而不是同时执行。

再执行一个:

您可以对Android作业进行加权以阻止所有执行者。

我们使用来管理必须共享两个不同DB资源的构建。该插件允许您在构建步骤中定义关键块。关键块只有在能够获取特定资源时才会运行。在块的末尾释放资源。这意味着您不必阻塞整个作业,只需阻塞需要资源的部分即可