Playframework 2.1-RC4:使用sbt在dev @ cloud上运行测试

时间:2013-02-07 05:00:59

标签: playframework jenkins sbt cloudbees playframework-2.1

我正在尝试设置一个Jenkins任务,定期检查一个游戏2.1-rc4项目,并执行当你“进行测试”时可以正常运行的所有任务。

我们的Jenkins安装托管在cloudbees上(dev @ cloud)。

我安装了Jenkins sbt插件并将其配置为指向sbt的有效副本(.11。?我认为)。在我的构建中,我运行sbt测试,当前目录设置为play项目的根目录。

我的理解是,sbt会将自身更新为.12,因为项目下的build.properties文件,下载并安装play sbt插件,解析所有依赖项,然后执行测试。

但是,sbt无法解析播放sbt插件:

注意:某些未解析的依赖项具有额外的属性。检查这些依赖项是否与请求的属性一起存在。

警告:sbt-plugin:2.1-RC4(sbtVersion = 0.11.3,scalaVersion = 2.9.1)

scala和sbt版本属性似乎不对(播放2.1使用sbt .12)...我一直试图拼凑游戏,sbt和Jenkins一起玩,并有几个问题:

  1. 如果build.properties要求更新的版本,那么sbt .11会为当前构建动态更新吗?
  2. play sbt插件(在plugins.sbt中加载)添加到sbt的功能是什么?我可以用“纯”sbt替换它吗?
  3. 什么是sbt.boot.properties和play的framework / sbt / boot目录?当play运行sbt时,它将-Dsbt.boot.properties设置为framework / sbt目录中的引导属性文件。此文件定义了一些存储库和scala版本。在这个sbt目录中,有一个名为“boot”的子目录。在其中,有一个包含大量罐子的目录树。所有这些引导的东西是什么?主要的sbt文档似乎没有涉及。我的猜测是它与加载sbt本身有关(为sbt解析任何必要的deps等等。)
  4. 有没有人让dev @ cloud正确执行2.1-rc4测试?如果是这样,你是如何设置它的?

2 个答案:

答案 0 :(得分:0)

我们在奴隶上还没有0.12,但我(和其他人)所做的是使用https://github.com/paulp/sbt-extras来引导sbt。您需要做的就是将sbt启动脚本复制到项目的根目录,然后在jenkins中调用./sbt。

play sbt插件纯粹用于部署运行@ cloud,如果您正在测试的话,则不需要它。

答案 1 :(得分:0)

我最终采取了略微不同的方法。

我能够在cloudbees jenkins奴隶上使用旧版本的SBT执行大多数播放命令。将较新版本上传到临时空间并使用它可能会加快速度,但sbt .11 bootstraps .12.2很好。

可笑的简单两步演练:

  1. 在jenkins config中配置SBT
  2. 在构建中添加“使用sbt构建”步骤
    • JVM标志:-Xms512M -Xmx1536M -Xss1M -XX:+ CMSClassUnloadingEnabled -XX:MaxPermSize = 384M
    • sbt flags:-Dsbt.log.noformat = true -Dconfig.file = ifnecessary
    • 操作:“项目PROJECT_NAME”清理编译测试(或其他)
  3. 潜在陷阱/注意事项:

    • 在某些情况下,所有引导似乎都在我工作区的根目录中创建了一个“.sbt”目录。 Sbt然后假定这是项目目录并在play的项目目录中选择它。 (它会抛出关于使用旧目录布局的警告,但不会忽略它。)“project blah”(在引号中)确保sbt使用正确的项目配置
    • JVM标志:我从其中一个播放构建脚本中抓取了这些...我不知道哪些可以忽略
    • sbt flags:你似乎能够在这里或jvm标志部分传递像config.file这样的游戏环境变量。
    • 使用安装在cloudbees slave上的默认版本的sbt,似乎在构建时会有一堆bootstrapping。我想将最新版本的sbt安装到你的临时空间并使用它可以减少构建时间。