2

我正在尝试为针对多个浏览器运行的项目的硒测试设置 Jenkins 多配置作业。我检查了不同的选项,多配置工作似乎很合适,但我不能让 maven 正确地将参数传递给 maven。

我有一些参数需要传递给 maven,主要是 browserName 和 appDomain,还有一个 Profile 来运行测试。要配置作业,我执行以下操作:

  • 定义从中签出代码的 SVN 存储库。
  • 将 browserName 设置为用户定义轴,其值为 FIREFOX、CHROME、IE。
  • 创建一个“调用顶级 Maven 目标”类型的构建步骤,这就是我遇到问题的地方。这部分的配置与其他工作类型不同,通常有一个名为“目标”和“选项”的字段用于放置所有内容,但在这种情况下分为不同的字段。所以我不知道属性和配置文件到底放在哪里。

    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 插件,该插件似乎使用 java 来启动一个调用 Maven 的 Hudson 类,而不是直接调用 mvn 命令,这是在构建步骤时发生的情况键入“调用顶级 Maven 目标”

于 2012-04-11T13:13:32.960 回答