You have two options.
In your jenkins file, call property properties again after processing.
#!groovy
@Library('shared') _
properties()
properties()
def properties() {
properties([
buildDiscarder(logRotator(numToKeepStr: '20')),
parameters([
])
}
Pro, just? Cons: It works only if the steps are successful and do not exit earlier.
: ( , , , ). : script
def setParam(String paramName, String paramValue) {
List<ParameterValue> newParams = new ArrayList<>();
newParams.add(new StringParameterValue(paramName, paramValue))
$build().addOrReplaceAction($build().getAction(ParametersAction.class).createUpdated(newParams))
}
def addChoice(String paramName, String optionValue) {
addChoice($build().getParent(), paramName, optionValue)
}
def addChoice(Job job, String paramName, String optionValue) {
ParametersDefinitionProperty paramsJobProperty = job.getProperty(ParametersDefinitionProperty.class);
ChoiceParameterDefinition oldChoiceParam = (ChoiceParameterDefinition)paramsJobProperty.getParameterDefinition(paramName);
List<ParameterDefinition> oldJobParams = paramsJobProperty.getParameterDefinitions();
List<ParameterDefinition> newJobParams = new ArrayList<>();
for (ParameterDefinition p: oldJobParams) {
if (!p.getName().equals(paramName)) {
newJobParams.add(0,p);
}
}
List<String> choices = new ArrayList(oldChoiceParam.getChoices());
choices.add(optionValue);
ChoiceParameterDefinition newChoiceParam = new ChoiceParameterDefinition(paramName, choices, oldChoiceParam.getDefaultParameterValue().getValue(), oldChoiceParam.getDescription());
newJobParams.add(newChoiceParam);
ParametersDefinitionProperty newParamsJobProperty = new ParametersDefinitionProperty(newJobParams);
job.removeProperty(paramsJobProperty);
job.addProperty(newParamsJobProperty);
}
/vars . /vars/jobParams.groovy. Jenkinsfile , :
jobParams.addChoice("ARTIFACT_NAME", "da-name")