如何将长延迟纳入Jenkins构建过程?

时间:2016-05-04 08:37:24

标签: jenkins jenkins-plugins continuous-deployment

我正在使用Jenkins将更改部署到一个系统,该系统管理和运行每天安排的许多不同的工作。我们有一个不会写入真实数据库的暂存设置,以及一个生产设置。

Jenkins流程我希望在推送更改时发生这种情况

  1. 运行检查。
  2. 部署到登台系统。
  3. 等24小时。
  4. 检查日志以确保登台系统在过去24小时内没有任何错误。
  5. 部署到生产系统。
  6. 可以在任何时间同时运行这些构建中的多个 - 例如。我在上午11点推送更改,将它们部署到分段。下午5点,我推出更多更改,他们也被部署到舞台上。第二天上午11点,第一组更改仅部署到prod。当天下午5点,部署了第二组更改。

    现在,我已经设法构建了一个系统来实现这一点,使用Build Flow插件,并创建一个名为wait_one_day的作业,该作业在bash shell中运行sleep $((24 * 60 * 60))

    这似乎不是最优雅的解决方案,并且缺点是我将24个小时的两个Build Executor捆绑在一起(一个用于构建流程作业,一个用于wait_one_day),每次我们做出改变。

    有没有更好的方法,或任何旨在帮助这个过程的插件? Jenkins的工作可以安排另一个Jenkins工作作为一次性运行吗?

    如果有人对我的设计有任何建议或建设性的批评,我同样很乐意听到解决同一问题的另一种方法。

1 个答案:

答案 0 :(得分:2)

我最近回复了similar SO question,但我不确定my answer there是否完全适合您的情况。

您可以动态创建执行第4步和第4步的作业。 5每隔24小时定期运行。这里的问题是你实际上只会运行一次这个作业,并在该作业中有一个删除自身的构建步骤(groovy代码或shell脚本)。创建一个已停用的模板作业很容易,您只需克隆然后修改特定任务即可。在完成运行步骤1和2的任何作业时,将需要中间作业。中间作业将从模板创建临时作业。

或者,您可以在jenkins或外部创建某种处理程序,这些处理程序将运行某些属性文件或数据库,其中包含需要触发作业的计划。当然,如果你打算去写一个处理程序的路线,你可以考虑加一点额外的努力并写一个jenkins插件...