我开始使用scala编写的小应用程序,并在cloudbees上提升。目前没有涉及scala,我只想在电梯模板的静态文件夹中部署一个网站。我使用sbt在cloudbees上创建了一个构建作业,但它出现以下错误:
[error] {file:/scratch/jenkins/workspace/igem%20sbt/project/}default-81f689/*:update:
sbt.ResolveException: unresolved dependency: com.github.siasia#xsbt-web-plugin_2.9.1;0.12.0-0.2.11.1: not found
我可以通过sbt->包在本地计算机上编译应用程序(也是从git获取),并通过“bees app:deploy”将其部署到cloudbees。这些文件也可以在git的工作区中找到。
我在本地计算机上使用sbt 0.12,在cloudbees上使用0.11.3(/opt/sbt/sbt-launch-0.11.3-2.jar)。那是因为我不知道如何找出哪个是关于cloudbees的最新版本,或者我如何在cloudbees上使用我自己的jar版本。我也不知道我需要编辑哪些配置文件来调整0.11.3,或者这毕竟是错误。如果我必须改变它,我还需要知道如何在我的本地机器上降级(OS X - >使用自制软件)。
这里是完整的错误,我的build.sbt:http://pastebin.com/bwAu1hGr
答案 0 :(得分:2)
对于插件版本,SBT非常脆弱。每个插件都需要为每个SBT版本发布一个单独的jar,类似于Scala cross building。如果您使用不同版本的SBT在不同环境中构建,则意味着您需要
就个人而言,我只是为您的项目标准化特定的SBT版本,并将sbt-launch.jar文件与引用它的脚本一起添加到您的项目中。我没有对Cloudbees做过多少工作,但是对于Jenkins,您可以使用以下值来配置SBT启动器:$ {WORKSPACE} /sbt-launch.jar。假设sbt-launch.jar位于你的git repo的根目录中。
答案 1 :(得分:1)
使用sbt-plugin在CloudBees上使用任意版本的sbt非常简单:
这实质上是对Dave Whittaker方法的改进,但纠正了使用$ {WORKSPACE} /sbt-launch.jar的问题不起作用,因为$ {WORKSPACE}没有被Jenkins取代。
关键的变化是将sbt-launch.jar的相对路径定义到项目工作区中,因为Jenkins从作业工作区的根目录执行构建。
P.S。谢谢,@ dave-whittaker!我用你的答案来解决我自己的构建问题。
答案 2 :(得分:0)
如果您不想使用内置SBT,则不必使用 - 您可以使用使用shell的构建步骤,并下载所需的版本(如果尚未在工作区中缓存)并使用那个。
使用类似的东西:
if [ ! -e $sbt ]
then
wget $sbt_url
#install it
fi
答案 3 :(得分:0)
非常不方便。现在有两个解决方法。我成功地尝试了第一个。
在plugin.sbt
中选择正确的sbt版本基于http://repo1.maven.org/maven2/com/github/siasia/我找出了每个sbt版本的正确依赖关系。所以现在我可以在我的本地机器上运行0.12.1,在同一个文件的cloudbees上运行0.11.3。我希望其他版本也是正确的。我想如果我将scala版本从2.9.1更改为2.9.2可能会再次造成麻烦,因为那时你需要0.12。*
这是我的project / plugin.sbt的样子
libraryDependencies <+= sbtVersion(v => v match {
case "0.11.0" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.0-0.2.8"
case "0.11.1" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.1-0.2.10"
case "0.11.2" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.2-0.2.10"
case "0.11.3" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.3-0.2.11.1"
case "0.12.0" => "com.github.siasia" %% "xsbt-web-plugin" % "0.12.0-0.2.11.1"
case "0.12.1" => "com.github.siasia" %% "xsbt-web-plugin" % "0.12.0-0.2.11.1"
})
将最新的SBT插件上传到cloudbees
你也可以通过WebDav将文件上传到privat文件夹(我认为只是这样):
https://repository-{account-id}.forge.cloudbees.com/private/
这样你就可以上传sbt-launch-0.12.jar了。得到这个(模板也很适合启动一个项目):
https://github.com/lift/lift_25_sbt/tree/master/scala_29/lift_basic
我还没有测试过:现在你应该在cloudbees中配置sbt。所以登录并:
Builds->Manage Jenkins->Configure System
在sbt部分添加/private/{account-id}/{sbt-launch-your-version}.jar。
答案 4 :(得分:0)
CloudBees可以轻松地将自己的工具放在构建服务器上,即使您无法直接将它们添加到构建服务器中。您可以使用WebDav将可执行文件上载到安装在每台构建计算机上的专用存储库中。您可以使用它来上传更新版本的SBT,然后从Jenkins SBT插件中引用它。
有关设置WebDav连接的详细信息,请参阅本页的“私有存储库”部分:http://wiki.cloudbees.com/bin/view/DEV/Custom+Build+Tools