每天安排一次Jenkins任务,但只有在成功运行其他任务之后

时间:2018-05-01 05:59:15

标签: jenkins

我需要安排一个Jenkins任务,使其每天运行一次,但前提是某些其他任务至少在当天成功完成一次。这种情况使它成为similar to this other question,但没有一个答案描述如何处理我所遇到的突发事件。

我的团队有一个构建软件的Jenkins流程。我们称之为Builder。 Builder每15分钟检查一次我们的GitHub存储库,如果发现代码更改,则会运行。

我们还有另一项运行简单测试的任务。整个测试套件可在不到15分钟的时间内完成。这是Short-Tests任务。每次Builder传递时都会运行Short-Tests。

最后,我们有一组需要数小时才能运行的测试。我们称之为长期测试。我们希望每天运行一次,但仅在Builder和Short-Tests都通过的情况下运行。长期测试从深夜开始,所以我们可以在第二天早上检查结果。

此外,我们希望仅在当天最近成功构建时运行Long-Tests。 如果最近的构建失败,我们希望Jenkins忽略该构建并使用之前传递的构建进行测试。

如果那天没有构建通过,则根本不需要运行Long-Tests。

我可以像这样每晚安排一次Long-Tests,但请告诉我如何设置依赖项。

   01 00 * * * 

1 个答案:

答案 0 :(得分:1)

为了获得这种行为,您需要某种持久性来标记成功构建和成功完成短测试。根据您的实际设置,有多种选择,例如:

  • 基于文件的标志(成功构建/测试时写入文件)
  • 数据库标志(成功构建/测试时写入数据库)
  • Git分支操作(在成功构建步骤中推送/合并到特定分支,例如此处给出的示例:http://andrewtarry.com/jenkins_git_merges/)。

一旦进行了持久性设置,就可以在更改时或定期触发构建。例如,可以设置以下依赖项:

  1. 推送到Git代码分支,触发Jenkins构建作业
  2. 对于这一步,您需要持久性,比如推送到git:成功完成构建阶段后,将触发短测试,如果成功,则推送到git"最新通过短测试"例如,使用Git Publisher插件执行分支。这是为了确保只安排最后通过的短期测试,以便进行长时间的夜间测试。
  3. 最后,定期安排长时间测试,处理分支"最近通过短测试"。
  4. 这只是顶级概述,因为细节很大程度上取决于您的实际设置,权限,git策略,Jenkins配置类型等。