我有一个要求,仅允许在特定时间范围内(例如:04:00至06:00之间)进行生产部署。
我的Jenkins管道是由Git Webhook触发的,并启动了由通常阶段(构建,测试,部署开发,部署前,部署专业)组成的流程。
当我们到达Deploy Pro阶段时,我需要检查当前时间是否在允许范围内。否则,我需要暂停管道(释放Jenkins代理),直到达到该时间范围为止。
可以实现吗?怎么样?
答案 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处于暂停阶段