Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java代码中从jenkins作业获取参数_Java_Jenkins_Parameters - Fatal编程技术网

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

在java代码中从jenkins作业获取参数,java,jenkins,parameters,Java,Jenkins,Parameters,我有一个参数化的jenkins作业,正在访问我的插件。在java的插件代码中,我需要这些参数,我必须使用这些参数触发jenkins中的另一个作业。我无法获取这些参数,这是一个非常重要的问题。我在stackoverflow上尝试了多种可用的解决方案,例如,尝试访问环境变量,但没有收到参数的值。例如,我的参数是'REPOS',我需要它的值,我尝试过: System.getProperty("REPOS"); 但它返回null 此外,还尝试: Map<String, String> en

我有一个参数化的jenkins作业,正在访问我的插件。在java的插件代码中,我需要这些参数,我必须使用这些参数触发jenkins中的另一个作业。我无法获取这些参数,这是一个非常重要的问题。我在stackoverflow上尝试了多种可用的解决方案,例如,尝试访问环境变量,但没有收到参数的值。例如,我的参数是'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));
              }
Map env=System.getenv();
for(字符串envName:env.keySet()){
System.out.format(“%s=%s%n”,envName,env.get(envName));
}
但它打印的是詹金斯的环境变量,而不是作业的参数

我指的是在下图中param:“url”旁边的文本框中传递的值


请协助。

据我所知,Jenkins参数作为环境变量公开。然而,如果您使用像Maven这样的构建系统来启动Java子进程,那么这些变量可能不会被继承


最可靠的方法可能是在Jenkins配置中显式地将参数作为系统属性传递,例如
-DREPOS=${REPOS}

实现这一点的选项之一是java代码中的“作为参数传递和获取”

Jenkins的变量值可以这样检索

urlValue=${url} 
然后在java代码中传递该值。这将是作业配置中执行shell的结构

#!/bin/bash -e
urlValue=${url} 
# run java code
java <classNameToRun> $urlValue
#/bin/bash-e
urlValue=${url}
#运行java代码
java$urlValue

谢谢你的建议,但当我做了以下工作时,它起了作用: 我击中了目标

JENKINS_HOST_URL/job/JENKINS_SEED_JOB_NAME/api/json?pretty=true
然后找到了当前的版本号,用这个号码再次点击jenkins(jenkins\u HOST\u URL/job/jenkins\u SEED\u job\u NAME/currBuildNum/api/json?pretty=true)


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

您好,感谢您的快速响应,但只有在阅读此参数后,我才能启动新的子进程。因此,它首先是必需的。另外,您能解释一下在jenkins配置中(对于这个特定的工作),我需要提供您建议的命令吗?jenkins中的配置位置取决于构建的性质。例如,如果您使用的是Maven,“调用顶级Maven目标”构建步骤包含一个“属性”文本区域。无论您使用什么构建系统,都应该有一点可以指定命令行参数。这也是为了从jenkins传递值,但我可以使用job。但是我想在我的java代码中访问它们,这就是我需要帮助的地方。例如,在publicstaticvoidmain(args[])中,可以获得args[1]和args[2]这样的值。我再次给出了插件开发中使用的java文件的名称,它给出了一条错误消息“找不到或加载主类J.java”。此外,这个参数将由SVN的post-commit钩子传递,它只能传递url参数给我。