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