是否可以将JVM参数传递给Jenkins 2.0构建?

时间:2017-05-09 22:31:10

标签: java jenkins

我有一个Java应用程序,它从资源属性文件中检索用户名/密码。

由于显而易见的原因,我在提交SVN时不包含实际的用户名/密码值。我只是确保在提交之前用伪造的值替换它们。

现在我想在远程Jenkins 2.0盒子上构建我的应用程序,但是,因为存储在SVN中的值是假的,当Jenkins检出我的代码并运行我的集成测试时,它们会失败,因为它们不能使用虚假值时进行身份验证。

我想也许我可以在我的应用程序中添加一些逻辑,首先尝试通过System.getProperty()检索用户名/密码信用,如果这些属性不存在,那么请尝试查看资源文件。

那么,Jenkins 2.0是否有可能在构建期间将参数传递给JVM,以便System.getProperty()可以工作?

1 个答案:

答案 0 :(得分:1)

您可以使用具有声明性语法的Jenkins Pipeline执行此操作:

<强> Jenkinsfile:

pipeline {
    agent {
        label 'master'
    }

    environment  {
        //foo var
        foo = "Hello !";
    }

    stages {
        stage("test-var") {
            steps {
                // If you are using LINUX use EXPORT
                bat "set foo=\"${env.foo}\""
                bat "java -jar /someplace/DummyMain.jar"
            }
        }
    }
}

请注意我正在使用:系统。 getenv (“foo”);而不是getProperty Java类:

/**
 *
 * @author daniel
 */
public class DummyMain {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String property = System.getenv("foo");
        System.out.println(property);
    }

}

你会得到:你好!当你运行你的管道。如果您更熟悉Script Groovy语法而不是Pipeline声明性语法应该不是问题。

只需编写读取属性文件的逻辑就可以了!