2

複数のブラウザーに対して実行されるプロジェクトのセレン テスト用に、Jenkins マルチ構成ジョブをセットアップしようとしています。さまざまなオプションを確認しましたが、マルチ構成ジョブは適切に機能しているように見えますが、maven にパラメーターを正しく渡すことができません。

主に browserName と appDomain、そしてテストを実行するための Profile など、maven に渡す必要があるいくつかのパラメーターがあります。ジョブを構成するには、次のようにします。

  • コードのチェックアウト元となる SVN リポジトリを定義します。
  • 値 FIREFOX、CHROME、IE を使用して、browserName をユーザー定義軸として設定します。
  • 「トップレベルのMavenターゲットを呼び出す」タイプのビルドステップを作成すると、ここで問題が発生します。この部分の構成は他の職種とは異なり、通常はGoals and Optionsと呼ばれるすべてを入れる欄がありますが、この場合は別の分野に分かれています。そのため、プロパティとプロファイルを正確にどこに置くかわかりません。

    a) 論理的に言えば、画像のように、目標を [目標] フィールドに、パラメーターとオプションを [プロパティ] フィールドに入力します。

最初のケース

この場合、プロファイルが実行されないため、ジョブはテストを実行せずに正常に実行されます。

b) プロファイルだけを [目標] フィールドに入力すると、ログの maven 呼び出しは次のようになります。

/opt/apache-maven-2.2.1/bin/mvn -DbrowserName=CHROME "-D-Dappdomain=0 -Dtestenv=test  -Drc=true -DsuiteXmlFile=testOne.xml -U -Dapp.instance.key=jenkins -Denv=default" clean verify -Pwebtests

例外は次のとおりです。

[INFO] [enforcer:enforce {execution: enforce-property}]
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireProperty failed with message:
You must pass the appdomain as parameter! Example: -Dappdomain=20
[WARNING] Rule 1: org.apache.maven.plugins.enforcer.RequireProperty failed with message:
You must pass the test environment as parameter! Example: -Dtestenv=beta

プロパティを取得していない

c) 最後に、すべてをゴール フィールドに入力すると、次の例外が発生します。

[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] One or more required plugin parameters are invalid/missing for 'property:merge'

[0] Inside the definition for plugin 'property-maven-plugin' specify the following:

<configuration>
  ...
  <environment>VALUE</environment>
</configuration>
-OR-
on the command line, specify: '-Denv=VALUE'

通常のパラメーター化されたジョブで試してみましたが、完全に機能します...

Jenkins のバージョンは 1454 で、Maven は 2.2.1 です。

4

1 に答える 1

1

Jenkins マシンが正しく構成されていないことがわかりました。別のインスタンスで試してみましたが、次の構成ですべて問題ありませんでした。

-Goals: clean verify Pwebtests
-Paramenters: (properties file format) 
appDomain=0 
testenv=test 
env=default
....

補足として、他のジョブは Jenkins Maven プラグインを使用していたため機能していました。これは、mvn コマンドを直接呼び出すのではなく、Java を使用して Maven を呼び出す Hudson クラスを起動しているようです。 「トップレベルの Maven ターゲットを呼び出す」と入力します

于 2012-04-11T13:13:32.960 に答える