2012-11-27 78 views
0

我開始使用scala提升的cloudapps上的小應用程序。目前沒有涉及Scala,我只想在升降模板的靜態文件夾中部署一個網站。我創建了一個構建工作與SBT CloudBees的,但它提供了以下錯誤:通過git與sbt在cloudbees上部署scala/lift應用程序0.11.3

[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的獲取),並將其部署到通過「CloudBees的蜜蜂應用程序:部署「。這些文件也可以在git的工作區中找到。

我在本地機器上使用sbt 0.12,在雲上使用0.11.3(/opt/sbt/sbt-launch-0.11.3-2.jar)。那是因爲我不知道如何找出哪些是最新的雲端版本,或者我可以如何在雲端使用我自己的jar版本。我也不知道我必須編輯哪些配置文件來調整0.11.3,或者如果這是最後的錯誤。如果我必須改變,我還需要知道如何降級我的本地機器(OS X - >使用自制軟件)。

這裏完整的錯誤,我的build.sbt:http://pastebin.com/bwAu1hGr

回答

2

SBT很脆,當涉及到插件的版本。需要爲每個SBT版本發佈一個單獨的每個插件jar,類似於Scala跨建築。如果您正在使用不同版本的SBT的建立在不同的環境中,這意味着你要麼需要被公佈爲每SBT版本,你會使用或

  • 動態選擇合適的

    • 只能使用插件版本插件版本在您的plugins.sbt文件中,基於所使用的SBT版本。

    就我個人而言,我只是爲您的項目標準化一個特定的SBT版本,並將sbt-launch.jar文件與引用它的腳本一起添加到您的項目中。我沒有用Cloudbees做太多工作,但對於Jenkins,您可以使用如下值來配置SBT啓動器:$ {WORKSPACE} /sbt-launch.jar。假設sbt-launch.jar位於你的git倉庫的根目錄下。

  • 0

    如果您不想使用內置SBT,則不必使用內置SBT;如果尚未在工作空間中緩存所需版本,則可以使用使用外殼的構建步驟並下載所需版本,並使用那一個。

    使用類似:

    if [ ! -e $sbt ] 
    then 
        wget $sbt_url 
        #install it 
    fi 
    
    0

    非常不方便。現在有兩種解決方法。我成功地嘗試了第一個。

    在基於http://repo1.maven.org/maven2/com/github/siasia/的plugin.sbt

    我想出正確的依賴關係爲每個SBT版本選擇正確的SBT版本。所以現在我可以在我的本地機器上運行0.12.1,在同一個文件上運行雲計算上的0.11.3。我希望其他版本也是正確的。我認爲如果我將scala版本從2.9.1更改爲2.9.2,可能會再次導致麻煩,因爲那時你需要0.12。*

    這是我的項目/插件。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一個普里瓦文件夾(也只有這樣,我認爲):

    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 
    

    這我還沒有測試:現在你應該配置sbt在cloudbees。所以,登錄並:

    Builds->Manage Jenkins->Configure System 
    

    而且在SBT部分添加/private/{account-id}/{sbt-launch-your-version}.jar。

    1

    上CloudBees的使用SBT的任意版本,以與SBT-插件是(非常)簡單:

    1. 去管理詹金斯
    2. 添加在SBT-插件部分新SBT版本,稱爲「項目 - 具體路徑'sbt-launch.jar';此路徑將相對於您項目的工作空間根目錄,可以是任何你想要的 - 我有一個play2項目,所以我實際上使用'project/sbt-launch.jar'
    3. 將sbt-launch.jar的副本放入項目與路徑對準在#3
    4. 重新配置你的項目構建作業時使用的SBT-插件下拉
    5. 的「具體項目的SBT」把你的變化

    這實質上是Dave Whittaker方法的改進,但更正了使用$ {WORKSPACE} /sbt-launch.jar的問題不起作用,因爲$ {WORKSPACE}未被Jenkins取代。

    關鍵的變化是將sbt-launch.jar的相對路徑定義到項目工作區中,因爲Jenkins從作業工作區的根目錄執行構建。

    P.S.謝謝,@戴夫惠特克!我用你的答案來解決我自己的構建問題。

    0

    CloudBees使您可以輕鬆地將自己的工具放在構建服務器上,即使您無法直接對它們執行ssh操作。您可以使用WebDav將可執行文件上載到安裝在每個構建機器上的私有存儲庫中。您可以使用它來上傳更新版本的SBT,然後從Jenkins SBT插件中引用它。

    有關設置WebDav連接的更多詳細信息,請參閱本頁的「專用存儲庫」部分:http://wiki.cloudbees.com/bin/view/DEV/Custom+Build+Tools

    相關問題