我目前正在为我的Scala / Akka项目设置Jenkins-CI。
我设法创建与BitBucket集成的构建,并在创建新的pull reuqest /更新旧的pull请求时执行构建。
作为一个测试框架,我们使用Specs2
,它也通过使用JUnit后构建操作与Jenkins集成。现在我想知道如何在我的构建中正确执行e2e测试。
基本上在git存储库中我们有2个项目,我们称之为main-project
和rest-tests
。 rest-tests
包含使用REST-assured
库编写的e2e测试。要执行它们,我需要启动main-project
应用程序(使用Spray
库来设置HTTP服务器),然后在test
sbt
项目中执行rest-test
任务
我的想法是执行main-project
启动脚本(由sbt-native-packager
生成),如下所示:
$WORKSPACE/main-project/target/universal/stage/bin/main-project & echo $! > /tmp/main-project.pid
然后执行test
项目的rest-tests
任务,最后使用保存在/tmp/main-project.pid
文件中的PID终止进程。
最后一步应该使用https://wiki.jenkins-ci.org/display/JENKINS/Post+build+task来实现,因为如果某些rest-tests
会失败,那么下一步的构建将不会被执行(或者至少这是我在想的)并且我可能会以我的应用程序实例在构建完成后运行。
这是我第一次设置CI系统时,我的解决方案似乎有点hacky(至少对我而言)。我想知道是否有更好/更惯用的方法来解决运行e2e测试的问题,这需要运行另一个应用程序。