Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-17009

Parameters with newlines should be stored as TextParameterValue

      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);
      

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

          centic created issue -
          centic made changes -
          Description Original: 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":
          {quote}
          PROJECTPROPERTIES=sonar.projectKey=preismonitor-lokal\nsonar.projectName=preismonitor-lokal
          {quote}

          This correctly passes the parameter with newline characters to the second build.

          In the build.xml of the jenkins-build, the newlines are stored normally

          {quote}
                      <value>sonar.projectKey=preismonitor-lokal
          sonar.projectName=preismonitor-lokal</value>
          {quote}

          However 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:

          {quote}
          ... -Dsonar.projectKey=preismonitor-lokalsonar.projectName=preismonitor-lokal ...
          {quote}
          New: 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":
          {quote}
          PROJECTPROPERTIES=sonar.projectKey=preismonitor-lokal\nsonar.projectName=preismonitor-lokal
          {quote}

          This correctly passes the parameter with newline characters to the second build.

          In the build.xml of the jenkins-build, the newlines are stored normally

          {code:xml}<hudson.model.StringParameterValue>
                      <name>PROJECTPROPERTIES</name>
                      <value>sonar.projectKey=preismonitor-lokal
          sonar.projectName=preismonitor-lokal</value>
                    </hudson.model.StringParameterValue>{code}

          However 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:

          {quote}
          ... -Dsonar.projectKey=preismonitor-lokalsonar.projectName=preismonitor-lokal ...
          {quote}
          centic made changes -
          Component/s New: parameterized-trigger [ 15592 ]
          Component/s Original: rebuild [ 15744 ]
          Description Original: 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":
          {quote}
          PROJECTPROPERTIES=sonar.projectKey=preismonitor-lokal\nsonar.projectName=preismonitor-lokal
          {quote}

          This correctly passes the parameter with newline characters to the second build.

          In the build.xml of the jenkins-build, the newlines are stored normally

          {code:xml}<hudson.model.StringParameterValue>
                      <name>PROJECTPROPERTIES</name>
                      <value>sonar.projectKey=preismonitor-lokal
          sonar.projectName=preismonitor-lokal</value>
                    </hudson.model.StringParameterValue>{code}

          However 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:

          {quote}
          ... -Dsonar.projectKey=preismonitor-lokalsonar.projectName=preismonitor-lokal ...
          {quote}
          New: 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":
          {quote}
          PROJECTPROPERTIES=sonar.projectKey=preismonitor-lokal\nsonar.projectName=preismonitor-lokal
          {quote}

          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":

          {code:xml}<hudson.model.StringParameterValue>
                      <name>PROJECTPROPERTIES</name>
                      <value>sonar.projectKey=preismonitor-lokal
          sonar.projectName=preismonitor-lokal</value>
                    </hudson.model.StringParameterValue>{code}

          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:

          {quote}
          ... -Dsonar.projectKey=preismonitor-lokalsonar.projectName=preismonitor-lokal ...
          {quote}

          I will attach a patch which creates a TextParameterValue if the value contains newlines. This makes this work in all cases.
          Summary Original: Parameters with newlines are not applied correctly when triggering a rebuild New: Parameters with newlines should be stored as TextParameterValue
          centic made changes -
          Assignee Original: ragesh_nair [ ragesh_nair ] New: huybrechts [ huybrechts ]
          centic made changes -
          Description Original: 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":
          {quote}
          PROJECTPROPERTIES=sonar.projectKey=preismonitor-lokal\nsonar.projectName=preismonitor-lokal
          {quote}

          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":

          {code:xml}<hudson.model.StringParameterValue>
                      <name>PROJECTPROPERTIES</name>
                      <value>sonar.projectKey=preismonitor-lokal
          sonar.projectName=preismonitor-lokal</value>
                    </hudson.model.StringParameterValue>{code}

          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:

          {quote}
          ... -Dsonar.projectKey=preismonitor-lokalsonar.projectName=preismonitor-lokal ...
          {quote}

          I will attach a patch which creates a TextParameterValue if the value contains newlines. This makes this work in all cases.
          New: 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":
          {quote}
          PROJECTPROPERTIES=sonar.projectKey=preismonitor-lokal\nsonar.projectName=preismonitor-lokal
          {quote}

          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":

          {code:xml}<hudson.model.StringParameterValue>
                      <name>PROJECTPROPERTIES</name>
                      <value>sonar.projectKey=preismonitor-lokal
          sonar.projectName=preismonitor-lokal</value>
                    </hudson.model.StringParameterValue>{code}

          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:

          {quote}
          ... -Dsonar.projectKey=preismonitor-lokalsonar.projectName=preismonitor-lokal ...
          {quote}

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

          {code}
          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);
          {code}
          R. Tyler Croy made changes -
          Workflow Original: JNJira [ 147839 ] New: JNJira + In-Review [ 177018 ]

            huybrechts huybrechts
            centic centic
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated: