【发布时间】:2013-04-29 15:49:42
【问题描述】:
我正在使用 SBT 和 Play!框架。目前,我们的管道中有一个提交阶段,我们发布到工件我们的二进制文件。二进制文件是使用 dist 任务生成的。然后管道运行用 scala 编写的冒烟和验收测试。它们使用 sbt 运行。
我想做的是编译冒烟和验收测试以及二进制文件并将它们发布到工件。这将允许管道下载这些二进制文件(测试套件)并运行它们,而不是每次都重新编译它们,这需要很长时间。
我尝试了生成 jar 的 sbt test:compile,但是我找不到运行测试的方法。
【问题讨论】:
-
你所说的“管道”到底是什么意思? “管道”是否指的是单独的构建服务器,例如 Jenkins?
-
是的,我们有一个由 Jenkins 管理的部署管道。它的作用是每当有人推送到 master 时下载代码,在其上运行测试,如果成功,则使用 dist 任务构建二进制文件。然后它继续将其发布到 Artifactory。
-
我不明白你为什么不在同一个构建节点上同时运行构建和测试,两者都使用 sbt。此外,我的测试运行时间比编译时间长得多,所以我很惊讶你的测试正好相反。
-
好吧,我们正在这样做,有点像:在我们构建的同一个节点中,我运行单元测试。然后我的 Jenkins 与公司的 Jenkins 通信,并让它在 QA 环境中部署二进制文件。然后它会返回信息,然后我们继续测试。在这一步中,我们使用 'sbt smoke:tests' 运行烟雾测试。这是缓慢的一步。因为 jenkins 作业再次下载代码,sbt 更新 ivy 存储库,构建二进制文件,五分钟后,运行一个需要 7 秒的测试套件,即冒烟测试。我想短路它的这一步。希望有帮助!
标签: scala playframework-2.0 integration-testing sbt