如何从jenkins

时间:2017-03-27 13:18:27

标签: java macos maven jenkins parameter-passing

我想学习如何从jenkins将参数传递给maven项目。 首先,我在Jenkins中选择了General Configuration,然后单击“This project is parameterized”,然后单击

姓名=> my_parameter

选择=>桌面,            ipad公司,            片剂

然后,Source Management => git repositories我写了git repo链接,没关系。

Last Step Build =>执行Shell => Command => mvn test -DdeviceType = $ my_parameter

我的maven Project有一个名为String device的参数。

String device;

public static DesiredCapabilities caps=null;


@BeforeSuite
public void initializeDriver() throws MalformedURLException{
    device=System.getenv("deviceType");
    System.out.println("device type: "+ device);

    if (device.contains("ipad")) {
        caps = new DesiredCapabilities();
        caps.setCapability("browserName", "iPad");
        caps.setCapability("platform", "MAC");
        caps.setCapability("device", "iPad Mini 4");
        caps.setCapability("browserstack.local", "true");
        caps.setCapability("browserstack.debug", "true");
        caps.setCapability("safariAllowPopups", "true");
        caps.setCapability("acceptSslCerts", "true");
        caps.setCapability("browserstack.autoWait", "0");
        caps.setCapability("requireWindowFocus", "true");

        driver=new RemoteWebDriver(new URL(URL), caps);
    }

然后使用jenkins上的参数构建

 $ /bin/sh -xe /var/folders/j9/gyf9715j0hs32m4gd8h_gw4m55zss4 /T/hudson7304038831620598368.sh
 + mvn test -DdeviceType=desktop
 [INFO] Scanning for projects...
 device type: null[0m

为什么设备类型返回null?怎么了? 谢谢你的帮助...

3 个答案:

答案 0 :(得分:0)

嗯,至少," -D"命令行参数为" mvn"设置"系统属性",而不是"环境变量"。不要拨打" System.getenv()",而是拨打" System.getProperty()"。

答案 1 :(得分:0)

我终于通过尝试找到了答案。但我不确定这是否是解决方案的最佳方式。我选择了

BUİLD => invoke top-level maven targets.
Goals => test

但重要的问题是Jenkins中的参数名必须与你的maven项目变量名相同。

 device=System.getenv("deviceType");

然后在jenkins上使用参数构建它可以工作!

答案 2 :(得分:0)

对于试图将变量从Jenkins管道传递到本地pom.xml文件的人,您可以做的是通过mvn clean install console命令传递参数。

在您的POM.xml中

    <properties>
       <maven.test.skip>false</maven.test.skip>
    </properties>

使用此变量设置插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
    <configuration>
     <skipTests>${maven.test.skip}</skipTests>
     <skip>${maven.test.skip}</skip>
    </configuration>
</plugin>

现在,我们将设置詹金斯方面的东西:

我在这里所做的是创建一个布尔构建参数值SKIP_JUNIT_TEST,该值可以控制通过参数传递的值。

创建构建参数后,可以在管道代码中像这样传递参数:

sh 'mvn clean install -Dmaven.test.skip=${SKIP_JUNIT_TEST}'

maven.test.skip是我在pom.xml中设置的变量