1

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

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

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

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

但是,sbt 无法解析 play sbt 插件:

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

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

scala 和 sbt 版本属性似乎是错误的(play 2.1 使用 sbt .12)...我一直在尝试拼凑 play、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”的子目录。在其中,有一个目录树,其中包含大量的 jar。这些引导材料是什么?它似乎没有包含在主要的 sbt 文档中。我的猜测是它与加载 sbt 本身有关(解决 sbt 的任何必要的 deps 等)
  4. 有人让 dev@cloud 正确执行 play 2.1-rc4 测试吗?如果是这样,您是如何设置的?
4

2 回答 2

0

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

play sbt 插件纯粹用于部署到 run@cloud,如果您所做的只是测试,则不需要它。

于 2013-02-07T21:47:41.283 回答
0

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

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

非常简单的两步演练:

  1. 在 jenkins config 中配置 SBT
  2. 在构建中添加“使用 sbt 构建”步骤
    • JVM 标志:-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M
    • sbt 标志:-Dsbt.log.noformat=true -Dconfig.file=ifnecessary
    • 行动:“project PROJECT_NAME”干净编译测试(或其他)

潜在的陷阱/注意事项:

  • 在某些情况下,所有引导似乎都在我的工作空间的根目录中创建了一个“.sbt”目录。然后 Sbt 假设这是项目目录并选择它而不是 play 的项目目录。(它会抛出关于使用旧目录布局的警告,但不会忽略它。)“project blah”(引号中)确保 sbt 使用正确的项目配置
  • JVM 标志:我从其中一个 play 构建脚本中获取了这些...我不知道哪些可以忽略
  • sbt flags:您似乎可以在此处或在 jvm flags 部分中传递诸如 config.file 之类的播放环境变量。
  • 使用安装在 cloudbees 从属服务器上的默认版本的 sbt,在构建时似乎有一堆引导。我想将最新版本的 sbt 安装到您的暂存空间并使用它会缩短构建时间。
于 2013-05-04T00:23:13.443 回答