背景
我正在使用Jenkins来编译,测试,打包和部署我的Play Framework应用程序 .
玩Frameowrk版本:2.3.8(但2.2.3相同)
基本上有三个工作:测试,打包和部署 .
-
在每个git提交上执行测试,编译代码并使用sbt命令运行测试"clean test" . 如果成功..
-
包作业检出上面的提交,使用sbt命令"clean dist"将应用程序编译并打包成zip . 如果成功..
-
部署作业将zip复制到目标实例,解压缩并启动应用程序 .
实际上有更多的第2步工作(如代码覆盖,检查式,...)
问题
问题是,进程变慢(110个Java文件/ 70个Scala(模板)文件),因此没有我希望的那样有用 . 整个过程的构建时间约为15分钟 .
我尝试过的事情
我发现,编译时间占用了大部分构建时间,并作为每个构建步骤的一部分执行 .
为了解决这个问题,我添加了一个新工作,它只是编译项目,将整个jenkins工作原理保存为工件并将其复制到其他工作 . 但是sbt继续在其他构建作业中重新编译整个项目 .
我知道sbt使用了一些缓存文件夹,我使用以下sbt命令行选项更改了这些文件夹:
-Dsbt.log.noformat=true -Dsbt.global.base=project/.sbtboot -Dsbt.boot.directory=project/.boot -Dsbt.ivy.home=project/.ivy -Dsbt.global.staging=project/.staging
但是仍然会重新编译整个事情 .
问题:
-
如何汇总每个工作的编译阶段?
-
还有其他缓存选项吗?
-
也许将已编译的源打包成* .jar或simliar?
-
任何其他改善构建时间的想法?
谢谢!
PS:当然,我在复制已编译的工作区时从sbt中删除了clean命令