我正在使用Jenkins将更改部署到一个系统,该系统管理和运行每天安排的许多不同的工作。我们有一个不会写入真实数据库的暂存设置,以及一个生产设置。
Jenkins流程我希望在推送更改时发生这种情况
可以在任何时间同时运行这些构建中的多个 - 例如。我在上午11点推送更改,将它们部署到分段。下午5点,我推出更多更改,他们也被部署到舞台上。第二天上午11点,第一组更改仅部署到prod。当天下午5点,部署了第二组更改。
现在,我已经设法构建了一个系统来实现这一点,使用Build Flow插件,并创建一个名为wait_one_day
的作业,该作业在bash shell中运行sleep $((24 * 60 * 60))
。
这似乎不是最优雅的解决方案,并且缺点是我将24个小时的两个Build Executor捆绑在一起(一个用于构建流程作业,一个用于wait_one_day
),每次我们做出改变。
有没有更好的方法,或任何旨在帮助这个过程的插件? Jenkins的工作可以安排另一个Jenkins工作作为一次性运行吗?
如果有人对我的设计有任何建议或建设性的批评,我同样很乐意听到解决同一问题的另一种方法。
答案 0 :(得分:2)
我最近回复了similar SO question,但我不确定my answer there是否完全适合您的情况。
您可以动态创建执行第4步和第4步的作业。 5每隔24小时定期运行。这里的问题是你实际上只会运行一次这个作业,并在该作业中有一个删除自身的构建步骤(groovy代码或shell脚本)。创建一个已停用的模板作业很容易,您只需克隆然后修改特定任务即可。在完成运行步骤1和2的任何作业时,将需要中间作业。中间作业将从模板创建临时作业。
或者,您可以在jenkins或外部创建某种处理程序,这些处理程序将运行某些属性文件或数据库,其中包含需要触发作业的计划。当然,如果你打算去写一个处理程序的路线,你可以考虑加一点额外的努力并写一个jenkins插件...