我有一个Java应用程序,它从资源属性文件中检索用户名/密码。
由于显而易见的原因,我在提交SVN时不包含实际的用户名/密码值。我只是确保在提交之前用伪造的值替换它们。
现在我想在远程Jenkins 2.0盒子上构建我的应用程序,但是,因为存储在SVN中的值是假的,当Jenkins检出我的代码并运行我的集成测试时,它们会失败,因为它们不能使用虚假值时进行身份验证。
我想也许我可以在我的应用程序中添加一些逻辑,首先尝试通过System.getProperty()
检索用户名/密码信用,如果这些属性不存在,那么请尝试查看资源文件。
那么,Jenkins 2.0是否有可能在构建期间将参数传递给JVM,以便System.getProperty()
可以工作?
答案 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声明性语法应该不是问题。
只需编写读取属性文件的逻辑就可以了!