2009-08-25 12 views
9

私はmaven2プロジェクトをhudsonで継続的に統合しようとしています。 プロジェクトはいくつかの統合テストにセレンを使用しています。 HudsonはヘッドレスLinuxで動作しています。 私はxvfbを使用して、セレンのxサーバーセッションを開始しています。hudsonでビルドするための環境変数を設定する

テストを実行するには、DISPLAYという名前の環境変数をエクスポートする必要があります。例:

export DISPLAY=:99 

しかし、私はそれがすべてのビルド影響するので、ボックスに変数を設定する必要はありません。 m2の追加ステッププラグインを使用してシェルを実行しようとしましたが、別のbashファイルで実行されるため、環境変数が保持されないため動作しません。

hudsonから環境変数を登録する方法はありますか?

答えて

4

ハドソンには、parameters for buildsを指定できる新しい機能があります。これは、あなたが望むことをするように見えます。

ことけれどもノート:

warning http://wiki.hudson-ci.org/images/icons/emoticons/information.gifこれはまだ非常に若いの機能なので、フィードバックが

を高く評価...

パラメータ[S]環境パラメータとして利用可能です。だからシェル($ FOO、%FOO%)またはAnt($ {env.FOO})はこれらの値にアクセスできます。

+1

私はこれが実際に頼まれた質問に答える確信していないこののpom.xml構成を使用して

Mavenと同じシェルが呼び出されますか? これらのパラメータは非常に便利ですが、ユーザーが求めているものではなく、現在の環境変数を編集することもできません。つまり、自分自身を呼び出すことはできません。 たとえば、export PATH =/usr/bin/foo:$ PATHが$ PATHを認識しないので、$ PATHは機能しません。 – Spedge

+1

@Spedge環境変数の読み込みと設定が競合しています。その問題は変数の設定方法を尋ねられました。あなたの例では、尋ねられていないセットと読み取りの両方を行っています。 –

+0

@リッテンセラー - 謝罪サー。私は今、これについていくつかの作業をしており、コメントの下に答えを説明します(コメントに余裕がないので)。 – Spedge

3

ハドソンのノードプロパティは、ここでうまくいくでしょう。しかし、画面番号を割り当てる自動化された方法を探しているなら、おそらくport-allocator pluginに縛り付けたり、xvfbを自動的に起動する新しいBuildWrapperプラグインを書いたり、SCREENを設定する必要がありますビルドに代わって環境変数。

テスト用に別のXサーバーに切り替える場合は、Xvnc pluginを試してみてください。自動的にvncserverを起動し、SCREEN環境変数も設定します。また、テストが終了したときにスクリーンショットを撮って、そのジョブのHudsonページに表示することもできます。

+0

'PATH'などの環境変数に*(未設定)を追加するにはどうすればよいですか? –

+0

@Sridhar私はそれについて全く新しい質問を開始することをお勧めします。 –

+0

@Sridhar:新しい変数値が現在のビルドステップでも残っている場合は、実行する方法はありません。 –

0

受け入れられた回答に対する私の回答ごとに、私の所見があります。ハドソンでパラメータ化機能を使用すると

あなたは文字列の末尾に環境変数を追加することができ、未初期化変数

を注意してください - 彼らは最初の場所で何かが含まれていることを提供します。例えば

、環境変数$ fooが空白で、あなたが文字列パラメータに次の行を使用した場合...

/usr/bin/ladeda/:$F00 

その後、環境変数に/ usr/binに/ ladedaを読み込みます/:$ F00。私は

export F00=/usr/bin/fiddledede 

をした場合、私が最初のテストとしてこれを実行したとき

はしかし、その後、エクスポートされた変数は......、私はこれを

/usr/bin/ladeda/:/usr/bin/fiddledede 

を働いていなかったことだろう - としたがって、実際には(何かを含んでいなければならない)パラメータフィーチャが外部環境変数を受け入れていないと考えられました。

10

fyi今日はHudsonのために(私がそうするために十分な回復をしたと仮定して)the setenv pluginをリリースしています - パラメータ化されたビルド機能と同様に動作しますが、より簡単なUI(入力 - キー/値のペアは改行で区切られます)、ビルド時にパラメータの値を指定する必要はありません。

1

xvfb-runを使用してセレンを実行していると、DISPLAYを設定するよりも信頼性が高いことがわかりました。したがって:

xvfb-run java -jar selenium-server.jar 
1

あなたはselenium mavenプラグインを使用しようとしましたか?

プラグインは、Xvfbを起動し、テストを実行してから停止するように設定できます。詳細はこちら

<plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>selenium-maven-plugin</artifactId> 
     <executions> 
      <execution> 
       <id>xvfb</id> 
       <phase>pre-integration-test</phase> 
       <goals> 
        <goal>xvfb</goal> 
       </goals> 
      </execution> 

      <execution> 
       <id>selenium</id> 
       <phase>pre-integration-test</phase> 
       <goals> 
        <goal>start-server</goal> 
       </goals> 
       <configuration> 
        <background>true</background> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 

: - どのように私は、環境変数を設定します http://mojo.codehaus.org/selenium-maven-plugin/examples/headless-with-xvfb.html

関連する問題