jenkinsci / jenkinsci/release-plugin
[JENKINS-32637] ReleaseWrapper should prevent parameter duplication when overrideBuildParameters is not set
- Dominant language
- Java
- Stars
- 24
- Forks
- 46
- PR merge metrics
- No merged PRs in 30d
Description
When overrideBuildParameters is not enabled, ReleaseWrapper does not attempt to filter default parameters that are also included in the Release configuration and blindly add new parameter regardless of whether a default parameter (from the regular job) has the same name, this results in release builds with confusing duplicated parameters
```
if (isOverrideBuildParameters()) {
// if overrideBuildParameters is set, then build params are submitted
// within the list of release params -- no need to gather default values
paramValues = new ArrayList();
}
else {
//////////// lack of filtering in regards to getParameterDefinitions()
paramValues = getDefaultParametersValues();
}
if (getParameterDefinitions() != null && !getParameterDefinitions().isEmpty()
|| overrideBuildParameters && getBuildParameterDefinitions() != null && !getBuildParameterDefinitions().isEmpty()) {
JSONObject formData = req.getSubmittedForm();
JSONArray a = JSONArray.fromObject(formData.get("parameter"));
for (Object o : a) {
JSONObject jo = (JSONObject) o;
String name = jo.getString("name");
ParameterDefinition d = getParameterDefinition(name);
if(d==null)
throw new IllegalArgumentException("No such parameter definition: " + name);
ParameterValue value = d.createValue(req, jo);
paramValues.add(d.createValue(req, jo));
}
} else {
```
---
Originally reported by fchuong, imported from: ReleaseWrapper should prevent parameter duplication when overrideBuildParameters is not set
petehayes
Raw content of original issue
When overrideBuildParameters is not enabled, ReleaseWrapper does not attempt to filter default parameters that are also included in the Release configuration and blindly add new parameter regardless of whether a default parameter (from the regular job) has the same name, this results in release builds with confusing duplicated parameters
if (isOverrideBuildParameters()) {
// if overrideBuildParameters is set, then build params are submitted
// within the list of release params -- no need to gather default values
paramValues = new ArrayList<ParameterValue>();
}
else {
//////////// lack of filtering in regards to getParameterDefinitions()
paramValues = getDefaultParametersValues();
}
if (getParameterDefinitions() != null && !getParameterDefinitions().isEmpty()
|| overrideBuildParameters && getBuildParameterDefinitions() != null && !getBuildParameterDefinitions().isEmpty()) {
JSONObject formData = req.getSubmittedForm();
JSONArray a = JSONArray.fromObject(formData.get("parameter"));for (Object o : a) {
JSONObject jo = (JSONObject) o;
String name = jo.getString("name");ParameterDefinition d = getParameterDefinition(name);
if(d==null)
throw new IllegalArgumentException("No such parameter definition: " + name);
ParameterValue value = d.createValue(req, jo);
paramValues.add(d.createValue(req, jo));
}
} else {
- environment:
Release plugin 2.5.4
Contributor guide
Research direction
Start by locating ReleaseWrapper and reading getDefaultParametersValues(), getParameterDefinitions(), and getParameterDefinition(). Trace how default and release parameters are collected when overrideBuildParameters is disabled. Done means a parameter name present in both sources produces only one release-build parameter.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- ci-cd
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100