我有一个参数化的jenkins作业正在访问我的插件。在Java的内部插件代码中,我需要这些参数,我必须在jenkins中触发另一个作业。我无法获取这些参数,现在这是一个非常高优先级的问题。我已经尝试了stackoverflow上的多个解决方案,例如,尝试访问环境变量但没有收到param的值。例如,我的参数是' REPOS'我需要它的价值,我试过:
System.getProperty("REPOS");
但它返回null。
另外,尝试过:
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
System.out.format("%s=%s%n", envName, env.get(envName));
}
但它打印了jenkins&#39;环境变量,而不是工作的参数。
我指的是在param旁边的文本框中传递的值:&#34; url&#34;在下图中。
请协助。
答案 0 :(得分:0)
据我所知,Jenkins参数作为环境变量公开。但是,如果您使用像Maven这样的构建系统来启动Java子流程,那么这些变量可能不会被继承。
可能您最可靠的方法是在Jenkins配置中明确地将参数作为系统属性传递,例如-DREPOS=${REPOS}
答案 1 :(得分:0)
实现这一目标的一个选择是&#34; PASS和GET as ARGUMENT&#34;在你的java代码中。
Jenkins的变量值可以像这样检索。
#!/bin/bash -e
urlValue=${url}
# run java code
java <classNameToRun> $urlValue
然后在java代码中传递此值。这将是作业配置中执行shell 的结构。
{{1}}
答案 2 :(得分:0)
感谢您的建议,但是当我执行以下操作时,它有效: 我点了
JENKINS_HOST_URL/job/JENKINS_SEED_JOB_NAME/api/json?pretty=true
然后找到当前的内部版本号,然后用这个数字(JENKINS_HOST_URL/job/JENKINS_SEED_JOB_NAME/currBuildNum/api/json?pretty=true)
再次击中jenkins,
我能够获取此版本中传递的所有参数。