2016-04-15 24 views
-1

我是詹金斯插件开发的新手。
M试图写一个应该执行的插件之前任何多配置类型作业运行在詹金斯。
在这个插件中,我想编写规则,将检查什么配置参数用户选择提交作业时,基于选定的参数,我想决定是否允许作业运行或限制它
应该显示用户应该显示的原因,为什么无法在控制台输出中运行该作业。
有没有人有任何想法,我需要扩展或哪些接口,我需要实现以获得挂钩到Jenkins作业运行?詹金斯插件代码,应该在Jenkins运行任何类型的工作之前执行

回答

1

Blocked queue job plugin是我需要什么
指出,插件支持两种方式来阻止盒作业 -

  1. 根据另一个项目上次运行的结果。

  2. 基于当前项目的最后一次运行

在结果该插件的扩展BlockQueueItemTaskDispatcher.java詹金的QueueTaskDispatcher为我们提供一个勾成詹金斯逻辑来允许或阻止出现在队列中的作业从跑步。
我使用这个插件作为开发新插件的起点,它允许我们根据所选参数和当前时间限制项目。最终目标是限制白天运行的生产迁移。
重写QueueTaskDispatcher的isBlocked()方法可以访问hudson.model.Queue.Item实例作为参数给我。然后我使用Item实例的getParams方法访问用户在运行时选择的构建参数。从中解析出生命周期的价值。检查当前时间。如果生命周期是Production,当前时间是白天,那么通过从isBlocked()方法返回非null CauseOfBlockage来限制工作。如果该条件为false,则返回的为允许排队作业运行的nullCauseOfBlockage。

1

你可以看看Matrix Execution Strategy,它允许Groovy脚本选择运行哪个矩阵组合。我想如果你的脚本抛出一个异常,它会停止构建。

对于后台,多配置项目运行一个控制作业(或flyweight),它运行SCM阶段,然后启动所有实际组合。这个插件在flyweight SCM checkout之后运行。

如果不出意外,这会给你一个工作插件从

免责声明开始:我写这个插件

+0

我认为这个插件不会有帮助。让我详细说明我的问题。它是一个参数化版本。有选择参数 - 生命周期(有效值是QA,QC,PROD),客户名称(有效值是client1,client2)等。我想在上午8:00到下午3:30之间限制选定客户端的生产版本。我们是否有任何插件可以让我配置规则,说客户端2的构建必须在上午8:00到下午3:30之间被阻止。只有在下午3:30之后,它必须进入队列并执行。 – user55926

+0

感谢您的帮助@KeepCalmAndCarryOn – user55926