2010-12-13 5 views
2

私は自分のハドソンジョブを設定しました。ジョブAはジョブBとCに依存しています。私はそれらを "他のプロジェクトをビルド"して設定しました。これはうまくいきますが、各ジョブは私のワークスペースの別のディレクトリにあります(デフォルトの構造)。しかし、私はジョブAとBの作業が必要です。ワークスペース(ルートフォルダ)。ハドソン依存度

私は2つのアプローチを検討している:

  1. 変更ジョブAのためのワークスペースを、その場所にコピーするAntビルドスクリプトを使用し、「他のプロジェクトでトリガパラメータ化されたビルド」を介してジョブにその変数をプッシュすると、私はジョブBまたはCが行くはずのフォルダを変更するオプションを見つけることができませんでした
  2. ジョブAの一部としてビルドスクリプトからジョブBをトリガーし、次にCを実行します。これはリモートコール(stackoverflowのどこかで見つけました)私の設定でそのオプションが見つからず、追加するプラグインが見つかりませんでした。

私にとって理想的なアプローチは、Antビルドスクリプトを使用して、そこからantsvnなどを使用してジョブBとCをトリガーすることです。しかし、私はこれのしっかりした例を見つけることができません。

ジョブBはジョブAに必須のCMSであり、ジョブCには新しいバージョンがプロダクションサーバーに着陸する前に実行する必要のあるPythonスクリプトがあります(これはpyで既に行われています)。 -蟻)。

また、このような依存関係を管理するためのより良い方法があります。どんな助けもありがとうございます。

私はそれが理に適ったと思います。

答えて

4

ジョブ "B"と "C"は、ジョブ "A"に必要な "アーティファクト"を生成するものと考えてください。次に、ジョブ "A"をビルドするたびに、ジョブ "B"と "C"によって生成された成果物をインポートするだけです。

あなたの仕事は仕事場を共有すべきではありません。それ以外の場合、ジョブ "B"または "C"がトリガされたときにジョブ "A"が構築されている場合はどうなりますか?一度に複数のビルドが行われます。しかし、ジョブ "B"と "C"から "A"に必要なものを分けると、ジョブ "A"にそれらの依存関係をインポートさせることができます。

  • ハードしかし正しい方法:あなたは仕事は、彼らが必要とする成果物を取得することができリリースリポジトリを作成する必要があり、これを行うには2つの方法があります。これがあなたにMavinishと聞こえる場合は、そうです。しかし、私はMavenプロジェクトなしでMavenアーキテクチャのものを使用しました。 ArtifactoryやNexusのようなものをあなたのリリースリポジトリとして使うことができます。次にwgetまたはcurlを使用して、リポジトリから項目を取得し、Mavenのdeploy:deploy-fileプラグインを使用して項目を送信します。 deploy:deploy-fileを実行するにはMaven(Javaプロセス)が必要ですが、MavenプロジェクトやJavaプロジェクトは必要ありません。 deploy:deploy-fileプラグインには、Maven pom.xmlファイルは必要ありません。あなたのリリースリポジトリに物を送るためのコマンドラインユーティリティのようなものと考えてください。
  • 簡単ですが、が間違っています方法:ハドソンはこれを行うために使用できるCopy Artifacts pluginです。問題はセットアップが簡単だが、追跡を開始するのが難しいということだ。さらに、非常に特殊なツールに依存するようになります。ハドソンから離れる場合、この機能を複製することはできません。