0

cloudbees のリフトを使用して scala で記述された小さなアプリを使い始めています。現時点では、scala は関係ありません。リフト テンプレートの静的フォルダーに Web サイトをデプロイしたいだけです。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->package を介してアプリ (これも git から取得) をコンパイルし、"bees app:deploy" を介して cloudbees に展開できます。ファイルは、git のワークスペースでも利用できます。

ローカル マシンでは sbt 0.12 を使用し、cloudbees (/opt/sbt/sbt-launch-0.11.3-2.jar) では 0.11.3 を使用しています。これは、cloudbees の最新バージョンを確認する方法や、自分の sbt jar を cloudbees で使用する方法がわからないためです。また、0.11.3 に合わせて調整するためにどの設定ファイルを編集する必要があるのか​​ 、それがエラーなのかどうかもわかりません。それを変更する必要がある場合は、ローカル マシンでダウングレードする方法も知る必要があります (OS X -> 自作を使用)。

ここに完全なエラーと私の build.sbt: http://pastebin.com/bwAu1hGr

4

5 に答える 5

2

プラグインのバージョンに関しては、SBT はかなり脆弱です。Scala クロス ビルドと同様に、各プラグインの個別の jar を SBT バージョンごとに公開する必要があります。異なる環境でビルドするために異なるバージョンの SBT を使用している場合、次のいずれかが必要です。

  • 使用するすべての SBT バージョンに対して公開されているプラ​​グイン バージョンのみを使用するか、
  • 使用中の SBT バージョンに基づいて、plugins.sbt ファイルで適切なプラグイン バージョンを動的に選択します。

個人的には、プロジェクトの特定の SBT バージョンを標準化し、それを参照するスクリプトと共に sbt-launch.jar ファイルをプロジェクトに追加するだけです。私は Cloudbees で多くのことを行っていませんが、Jenkins では ${WORKSPACE}/sbt-launch.jar のような値で SBT ランチャーを構成できます。これは、sbt-launch.jar が git リポジトリのルートにあることを前提としています。

于 2012-11-27T20:45:24.317 に答える
1

sbt-plugin を使用して CloudBees で任意のバージョンの sbt を使用するのは (かなり) 簡単です。

  1. ジェンキンスの管理に移動します
  2. 「sbt-launch.jar」のパスを持つ「プロジェクト固有の sbt」と呼ばれる sbt-plugin セクションに新しい sbt バージョンを追加します。このパスはプロジェクトのワークスペース ルートからの相対パスで、好きなように指定できます。私は play2 プロジェクトを持っているので、実際には「project/sbt-launch.jar」を使用します。
  3. sbt-launch.jar のコピーをプロジェクトに入れ、#3 のパスに合わせます
  4. sbt-plugin ドロップダウンで「プロジェクト固有の sbt」を使用するようにプロジェクト ビルド ジョブを再構成します。
  5. 変更をプッシュする

これは基本的に Dave Whittaker のアプローチを改良したものですが、${WORKSPACE} が Jenkins に置き換えられないため、${WORKSPACE}/sbt-launch.jar を使用すると機能しないという問題が修正されています。

主な変更点は、Jenkins がジョブのワークスペースのルートからビルドを実行するため、sbt-launch.jar への相対パスをプロジェクト ワークスペースに定義することです。

PS ありがとう、@dave-whittaker! あなたの回答を使用して、自分のビルドの問題を解決しました。

于 2012-12-31T16:07:08.717 に答える
0

CloudBeesを使用すると、直接SSHで接続できない場合でも、ビルドサーバーに独自のツールを簡単に配置できます。WebDavを使用して、各ビルドマシンにマウントされているプラ​​イベートリポジトリに実行可能ファイルをアップロードできます。これを使用して、新しいバージョンのSBTをアップロードし、JenkinsSBTプラグインから参照できます。

WebDav接続の設定の詳細については、このページの「プライベートリポジトリ」セクションを参照してください:http ://wiki.cloudbees.com/bin/view/DEV/Custom+Build+Tools

于 2013-01-16T02:32:49.683 に答える
0

組み込みの SBT を使用したくない場合は、使用する必要はありません。シェルを使用するビルド ステップを使用して、ワークスペースにまだキャッシュされていない場合は必要なバージョンをダウンロードし、それを使用できます。 1。

次のようなものを使用します。

if [ ! -e $sbt ]
then
    wget $sbt_url 
    #install it
fi
于 2012-11-28T00:14:27.370 に答える
0

非常に不便です。ここでは、現時点で 2 つの回避策を示します。私は最初のものをうまく試しました。

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 を介してファイルをプライベート フォルダーにアップロードすることもできます (この方法のみだと思います)。

  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 を追加します。

于 2012-11-28T08:01:43.167 に答える