Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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 如何更改Jenkin';s属性/参数定义对象_Java_Jenkins Plugins - Fatal编程技术网

Java 如何更改Jenkin';s属性/参数定义对象

Java 如何更改Jenkin';s属性/参数定义对象,java,jenkins-plugins,Java,Jenkins Plugins,目前,我的设置包含两个项目/作业,我们将它们分别称为job1和job2。我的插件会在job1中运行东西,然后它会在job2中安排一个带有一些参数的新构建。我正在使用参数化触发器插件,以便将参数传递给新的构建。目前,我可以获取job2,并且可以找到包含job2中所需的默认参数设置的属性。但是我不知道如何修改job1中的设置值。事情是,job2中的每个构建都需要自己的param值,所以这些值不能硬编码,job1生成这些值 void perform(Run<?, ?> run, FileP

目前,我的设置包含两个项目/作业,我们将它们分别称为job1和job2。我的插件会在job1中运行东西,然后它会在job2中安排一个带有一些参数的新构建。我正在使用参数化触发器插件,以便将参数传递给新的构建。目前,我可以获取job2,并且可以找到包含job2中所需的默认参数设置的属性。但是我不知道如何修改job1中的设置值。事情是,job2中的每个构建都需要自己的param值,所以这些值不能硬编码,job1生成这些值

void perform(Run<?, ?> run, FilePath workspace, TaskListener listener) throws AbortException {
  // do stuff.

  Job job = getJobWithName("job2");

  if (job != null) {
    ParameterDefinition property = getProperty(job);

    if (property != null) {
      // TODO: how to modify the property?
    } else {
      // throw error 
    }
  }

  // starting a new build in a job2.
  if (job instanceof AbstractProject) {
    // TODO: change the Cause at some point
    ((AbstractProject) job).scheduleBuild(0, new Cause.UserIdCause());
  } else if (job instanceof WorkflowJob) {
    ((WorkflowJob) job).scheduleBuild(0, new Cause.UserIdCause());
  }
}


// fetches the correct job, in this case job2
private Job getJobWithName(String jobName) {
  Jenkins jenkinsInstance = Jenkins.getInstanceOrNull();

  if (jenkinsInstance != null) {
    List<Job> jobs = jenkinsInstance.getAllItems(Job.class);

    for (Job job : jobs) {
      if (job.getDisplayName().equals(jobName)) {
        return job;
      }
    }
  }

  return null;
}

// fetches the correct property
private ParameterDefinition getProperty(Job job) {
  ParametersDefinitionProperty property = (ParametersDefinitionProperty) job.getProperty(ParametersDefinitionProperty.class);

  for (ParameterDefinition pd : property.getParameterDefinitions()) {
    ParameterValue param = pd.getDefaultParameterValue();
    if (param != null) {
      if (name.equals("my_parameter_name") && pd.getType().equals("StringParameterDefinition")) {
        return pd;
      }
    }
  }
  return null;
}
void perform(运行、文件路径工作区、TaskListener侦听器)引发异常中止{
//做事。
Job Job=getJobWithName(“job2”);
如果(作业!=null){
ParameterDefinition property=getProperty(作业);
if(属性!=null){
//TODO:如何修改属性?
}否则{
//抛出错误
}
}
//在job2中启动新构建。
if(抽象项目的作业实例){
//TODO:在某个时候改变原因
((AbstractProject)作业).scheduleBuild(0,new-Cause.UserIdCause());
}else if(工作流作业的作业实例){
((WorkflowJob)作业).scheduleBuild(0,新原因.UserIdCause());
}
}
//获取正确的作业,在本例中为job2
私有作业getJobWithName(字符串jobName){
Jenkins-jenkinsInstance=Jenkins.getInstanceOrNull();
if(jenkinsInstance!=null){
List jobs=jenkinsInstance.getAllItems(Job.class);
for(职务:职务){
if(job.getDisplayName().equals(jobName)){
返回工作;
}
}
}
返回null;
}
//获取正确的属性
私有参数定义getProperty(作业){
ParametersDefinitionProperty=(ParametersDefinitionProperty)job.getProperty(ParametersDefinitionProperty.class);
对于(ParameterDefinition pd:property.getParameterDefinitions()){
ParameterValue param=pd.getDefaultParameterValue();
如果(参数!=null){
if(name.equals(“my_参数_name”)&&pd.getType().equals(“StringParameterDefinition”)){
返回pd;
}
}
}
返回null;
}
job.addProperty(new ParametersDefinitionProperty(
new StringParameterDefinition("StringProp", "DefaultValue1"), 
new BooleanParameterDefinition("BoolProp", false, "Desc")));