是否可以在Jenkins声明式管道中暂停阶段直到到达某个时间?

时间:2019-01-15 12:32:43

标签: jenkins jenkins-pipeline

我有一个要求,仅允许在特定时间范围内(例如:04:00至06:00之间)进行生产部署。

我的Jenkins管道是由Git Webhook触发的,并启动了由通常阶段(构建,测试,部署开发,部署前,部署专业)组成的流程。

当我们到达Deploy Pro阶段时,我需要检查当前时间是否在允许范围内。否则,我需要暂停管道(释放Jenkins代理),直到达到该时间范围为止。

可以实现吗?怎么样?

2 个答案:

答案 0 :(得分:0)

为此,您可以使用sleep方法,该方法可以获得不同的单位:NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS(默认为SECONDS)。

例如sleep(time:3,unit:"SECONDS")(或仅仅是sleep 3-都一样)。

因此,检查当前时间是否在允许范围内,如果不在允许范围内,则将sleep方法的时间指定为04:00 - <current time>的值(您需要在此处使用一些算法才能正确使用)值,以秒或分钟为单位,但是应该不难)。

但是,如果所有其他阶段都非常快,我建议您对所有管道使用Poll SCM选项(指定时间范围),因为这样更容易,并且结果将相同-作业将是仅在04:00之后完成。

答案 1 :(得分:0)

您的Jenkins管道由Git Webhook触发,并启动由通常阶段(构建,测试,部署Dev,部署Pre,部署Pro)组成的流程。

选项1: 如果时间不在中间,则使用“何时”条件跳过部署

选项2:将CI和CD的管道分开,并且CD仅在此期间触发,或者使用shell cmd处于暂停阶段