我正在尝试为针对多个浏览器运行的项目的硒测试设置 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