从java代码中的jenkins作业中获取参数

时间:2017-08-18 06:08:49

标签: java jenkins parameters

我有一个参数化的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;在下图中。

enter image description here

请协助。

3 个答案:

答案 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,

我能够获取此版本中传递的所有参数。