jenkinsci / jenkinsci/parameterized-trigger-plugin

[JENKINS-17009] Parameters with newlines should be stored as TextParameterValue

Open
#556 3 comments 0 reactions 0 assignees View on GitHub
component:parameterized-trigger-plugin imported-jira-issue priority:major resolution:unresolved
Dominant language
Java
Stars
77
Forks
174
Avg merge
22h 27m
Merged PRs (30d)
1

Description

For one of my Jobs I need multiple lines of text in one parameter, e.g.

In the parameterized build trigger plugin I specify this parameter with "\n":



PROJECTPROPERTIES=sonar.projectKey=preismonitor-lokal\nsonar.projectName=preismonitor-lokal

The "\n" correctly passes the parameter with newline characters to an upcoming biuld.

In the build.xml of the jenkins-build, the newlines are stored normally, however there are problems later on if other plugins work with this data because the parameter-type is "StringParameterValue" instead of "TextParameterValue":



PROJECTPROPERTIES
sonar.projectKey=preismonitor-lokal
sonar.projectName=preismonitor-lokal

E.g. if I use the rebuild-plugin to re-trigger the build later on, it seems to cut off the newlines and pass the string in one single line, which causes the rebuild to fail:


... -Dsonar.projectKey=preismonitor-lokalsonar.projectName=preismonitor-lokal ...

The following patch creates a TextParameterValue if the value contains newlines. This makes this work locally for me:

diff --git a/src/main/java/hudson/plugins/parameterizedtrigger/PredefinedBuildParameters.java b/src/main/java/hudson/plugins/parameterizedtrigger/PredefinedBuildParameters.java

index b1cbc73..26f2e50 100644
--- a/src/main/java/hudson/plugins/parameterizedtrigger/PredefinedBuildParameters.java
+++ b/src/main/java/hudson/plugins/parameterizedtrigger/PredefinedBuildParameters.java
@@ -2,13 +2,14 @@

import hudson.EnvVars;
import hudson.Extension;
-import hudson.model.AbstractBuild;
import hudson.model.Action;
-import hudson.model.Descriptor;
import hudson.model.ParameterValue;
+import hudson.model.TaskListener;
+import hudson.model.AbstractBuild;
+import hudson.model.Descriptor;
import hudson.model.ParametersAction;
import hudson.model.StringParameterValue;
-import hudson.model.TaskListener;
+import hudson.model.TextParameterValue;

import java.io.IOException;
import java.util.ArrayList;
@@ -38,8 +39,14 @@

List values = new ArrayList();
for (Map.Entry<Object, Object> entry : p.entrySet()) {
- values.add(new StringParameterValue(entry.getKey().toString(),
- env.expand(entry.getValue().toString())));
+ // support multi-line parameters correctly
+ if(entry.getValue().toString().contains("\n")) {
+ values.add(new TextParameterValue(entry.getKey().toString(),
+ env.expand(entry.getValue().toString())));
+ } else {
+ values.add(new StringParameterValue(entry.getKey().toString(),
+ env.expand(entry.getValue().toString())));
+ }
}

return new ParametersAction(values);

---
Originally reported by centic, imported from: Parameters with newlines should be stored as TextParameterValue


  • assignee: huybrechts
  • status: Open
  • priority: Major
  • component(s): parameterized-trigger-plugin
  • resolution: Unresolved
  • votes: 1
  • watchers: 5
  • imported: 2025-12-07

Raw content of original issue

For one of my Jobs I need multiple lines of text in one parameter, e.g.

In the parameterized build trigger plugin I specify this parameter with "\n":



PROJECTPROPERTIES=sonar.projectKey=preismonitor-lokal\nsonar.projectName=preismonitor-lokal

The "\n" correctly passes the parameter with newline characters to an upcoming biuld.

In the build.xml of the jenkins-build, the newlines are stored normally, however there are problems later on if other plugins work with this data because the parameter-type is "StringParameterValue" instead of "TextParameterValue":


<hudson.model.StringParameterValue>

<name>PROJECTPROPERTIES</name>
<value>sonar.projectKey=preismonitor-lokal
sonar.projectName=preismonitor-lokal</value>
</hudson.model.StringParameterValue>

E.g. if I use the rebuild-plugin to re-trigger the build later on, it seems to cut off the newlines and pass the string in one single line, which causes the rebuild to fail:


... -Dsonar.projectKey=preismonitor-lokalsonar.projectName=preismonitor-lokal ...

The following patch creates a TextParameterValue if the value contains newlines. This makes this work locally for me:


diff --git a/src/main/java/hudson/plugins/parameterizedtrigger/PredefinedBuildParameters.java b/src/main/java/hudson/plugins/parameterizedtrigger/PredefinedBuildParameters.java

index b1cbc73..26f2e50 100644
--- a/src/main/java/hudson/plugins/parameterizedtrigger/PredefinedBuildParameters.java
+++ b/src/main/java/hudson/plugins/parameterizedtrigger/PredefinedBuildParameters.java
@@ -2,13 +2,14 @@

import hudson.EnvVars;
import hudson.Extension;
-import hudson.model.AbstractBuild;
import hudson.model.Action;
-import hudson.model.Descriptor;
import hudson.model.ParameterValue;
+import hudson.model.TaskListener;
+import hudson.model.AbstractBuild;
+import hudson.model.Descriptor;
import hudson.model.ParametersAction;
import hudson.model.StringParameterValue;
-import hudson.model.TaskListener;
+import hudson.model.TextParameterValue;

import java.io.IOException;
import java.util.ArrayList;
@@ -38,8 +39,14 @@

List<ParameterValue> values = new ArrayList<ParameterValue>();
for (Map.Entry<Object, Object> entry : p.entrySet()) {
- values.add(new StringParameterValue(entry.getKey().toString(),
- env.expand(entry.getValue().toString())));
+ // support multi-line parameters correctly
+ if(entry.getValue().toString().contains("\n")) {
+ values.add(new TextParameterValue(entry.getKey().toString(),
+ env.expand(entry.getValue().toString())));
+ } else {
+ values.add(new StringParameterValue(entry.getKey().toString(),
+ env.expand(entry.getValue().toString())));
+ }
}

return new ParametersAction(values);

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.