2013-02-07 70 views
1

我試圖設置一個Jenkins任務,定期檢查一個play 2.1-rc4項目並執行所有的任務,當您執行「玩測試「。Playframework 2.1-RC4:使用sbt在dev @ cloud上運行測試

我們的Jenkins安裝託管在cloudbees(dev @ cloud)上。

我安裝了Jenkins sbt插件,並將其配置爲指向sbt(.11。?我認爲)的有效副本。在我的構建中,我運行一個sbt測試,將當前目錄設置爲play項目的根目錄。

我的理解是,sbt會自行更新到.12,因爲項目下的build.properties文件,下載並安裝play sbt插件,解決所有依賴關係,然後執行測試。

然而,SBT未能解決發揮SBT插件:

注意:一些未解決的依賴有額外的屬性。檢查這些依賴關係是否存在於請求的屬性中。

警告玩法:SBT-插件:2.1 RC4(sbtVersion = 0.11.3,scalaVersion = 2.9.1)

斯卡拉和SBT版本屬性似乎錯了(打2.1用途SBT 0.12)...我一直在試圖拼湊遊戲,SBT和詹金斯怎麼玩在一起,有幾個問題:

  1. 將SBT 0.11更新本身的飛行只爲當前版本,如果build.properties要求較新的版本?
  2. play sbt插件(加載到plugins.sbt中)添加到sbt中的功能是什麼?我可以用「純」的東西來代替它嗎?
  3. 什麼是sbt.boot.properties和play的framework/sbt/boot目錄?當play運行sbt時,它會將-Dsbt.boot.properties設置爲framework/sbt目錄中的引導屬性文件。這個文件定義了一些存儲庫和scala版本等等。在這個sbt目錄中,有一個名爲「boot」的子目錄。其中有一個包含大量罐子的目錄樹。這是什麼引導的東西?它似乎沒有包含在主要的sbt文檔中。我的猜測是它與加載sbt本身有關(解決了sbt等的任何必要問題)
  4. 有沒有人有dev @ cloud執行play 2.1 -rc4測試正確嗎?如果是這樣,你是如何設置它的?

回答

0

我最終採取了稍微不同的方法。

我能夠在cloudbees jenkins奴隸上執行大多數播放命令,並且使用老版本的SBT。將新版本上傳到臨時空間並使用它可能會加快速度,但sbt .11引導程序.12.2很好。

可笑的簡單的兩步演練:

  1. 配置SBT在詹金斯配置
  2. 添加 「建設使用SBT」 的步驟,以構建
    • JVM標誌:-Xms512m -Xmx1536M -Xss1M -XX :+ CMSClassUnloadingEnabled -XX:MaxPermSize參數= 384M
    • SBT標誌:-Dsbt.log.noformat =真-Dconfig.file =如果必要的話
    • 行動: 「項目PROJECT_NAME」 乾淨編譯測試(或無論)

潛在缺陷/注:

  • 在某些情況下,所有的引導,似乎在我的工作空間的根目錄下創建一個「名.bst」目錄。然後Sbt認爲這是項目目錄,並在播放的項目目錄中選擇它。 (它引發了關於使用舊目錄佈局的警告,但不會忽略它。)「project blah」(引號中)確保sbt使用正確的項目配置JVM標記:我從播放構建中抓取了這些標記腳本...我不知道哪些可以忽略
  • sbt flags:你似乎能夠在這裏或在jvm標誌部分傳遞像config.file這樣的播放環境變量。
  • 使用安裝在雲端從服務器上的sbt的默認版本,在構建時似乎有一堆引導程序正在進行。我想象一下,將最新版本的sbt安裝到您的臨時空間並使用它可以縮短構建時間。
0

我們沒有0.12的奴隸,但是,我(和其他人)做的是使用https://github.com/paulp/sbt-extras自舉sbt。您只需將sbt啓動腳本複製到項目的根目錄,然後在jenkins中調用./sbt。

play sbt插件純粹用於部署運行@ cloud,如果您所做的只是測試,則不需要。

+0

你的意思是Cloudbees play插件還是Play的sbt插件? – FullTimeCoderPartTimeSysAdmin

相關問題