[JIRA] [matrix-project-plugin] (JENKINS-32349) Entering a newline in a Label description makes "slave" matrix axis unavailable

2 views
Skip to first unread message

mmlegra@micron.com (JIRA)

unread,
Jan 7, 2016, 2:39:01 PM1/7/16
to jenkinsc...@googlegroups.com
Matt Legrand created an issue
 
Jenkins / Bug JENKINS-32349
Entering a newline in a Label description makes "slave" matrix axis unavailable
Issue Type: Bug Bug
Assignee: Kohsuke Kawaguchi
Attachments: jenk3-slaves-problem.png
Components: matrix-project-plugin
Created: 07/Jan/16 7:38 PM
Environment: Host: CentOS 7

Jenkins 1.642 (also seen on 1.625)

Plugin-versions:
Ant Plugin 1.2
Authentication Tokens API Plugin 1.2
conditional-buildstep 1.3.3
Credentials Plugin 1.24
Docker Commons Plugin 1.2
Environment Injector Plugin 1.92.1
External Monitor Job Type Plugin 1.4
Git Changelog 1.2
Git server plugin 1.6
Javadoc Plugin 1.3
Jenkins CVS Plug-in 2.12
Jenkins Git client plugin 1.19.1
Jenkins Git plugin 2.4.1
Jenkins Mailer Plugin 1.16
Jenkins Multijob plugin 1.20
Jenkins Parameterized Trigger plugin 2.30
Jenkins SSH Slaves plugin 1.10
Jenkins Subversion Plug-in 2.5.6
Jenkins Translation Assistance plugin 1.12
JUnit Plugin 1.10
Label Linked Jobs Plugin 4.0.3
LDAP Plugin 1.11
MapDB API Plugin 1.0.6.0
Matrix Authorization Strategy Plugin 1.2
Matrix Project Plugin 1.6
Maven Integration plugin 2.12.1
Nested View Plugin 1.14
OWASP Markup Formatter Plugin 1.3
PAM Authentication plugin 1.2
Run Condition Plugin 1.0
SCM API Plugin 1.0
Script Security Plugin 1.15
SSH Credentials Plugin 1.11
Token Macro Plugin 1.12.1
Windows Slaves Plugin 1.1
Labels: configuration matrix labels
Priority: Minor Minor
Reporter: Matt Legrand

Problem
If a newline is present in a Label description (), the matrix job configuration "Slaves' option will not be selectable (jenk3-slaves-problem.png). No error is seen in the log files.

To reproduce
1). Create a Jenkins slave (if needed). Add a label to that slave MY_LABEL. Edit the label's description as follows:

 "This is 
a newline in the description"

2). Create a new Multi-configuration project
3). Attempt to add a "Slaves" axis. The expected dropdown will not appear and it won't be possible to add a Slaves axis.

Possible cause
in (JENKINS_HOME)/labels/label.xml, the tags <description> and </description> must be on the same line. The newline in the description adds a newline before the </description> tag above, which seems to cause the matrix job problem as described above.

Workaround
Avoid newlines in the Label description. HTML is permissable there.
Simple guideline: do not enter a newline when making a label description. One MAY use html <br> and other HTML tags.

Good:

This is <b>my</b> name,<br>Matt

Bad:

This is my name,
<a newline here causes this issue>
Matt 
Add Comment Add Comment
 
This message was sent by Atlassian JIRA (v6.4.2#64017-sha1:e244265)
Atlassian logo

mmlegra@micron.com (JIRA)

unread,
Jan 7, 2016, 2:49:02 PM1/7/16
to jenkinsc...@googlegroups.com

mmlegra@micron.com (JIRA)

unread,
Jan 7, 2016, 2:49:02 PM1/7/16
to jenkinsc...@googlegroups.com

mmlegra@micron.com (JIRA)

unread,
Jan 7, 2016, 2:50:01 PM1/7/16
to jenkinsc...@googlegroups.com
Matt Legrand updated an issue
*Problem*

If a newline is present in a Label description (), the matrix job configuration "Slaves' option will not be selectable (jenk3-slaves-problem.png). No error is seen in the log files.

*To reproduce*

1). Create a Jenkins slave (if needed). Add a label to that slave MY_LABEL. Edit the label's description as follows:
{code}

 "This is 
a newline in the description"
{code}


2). Create a new Multi-configuration project
3). Attempt to add a "Slaves" axis. The expected dropdown will not appear and it won't be possible to add a Slaves axis.

*Possible cause*

in (JENKINS_HOME)/labels/label.xml, the tags <description> and </description> must be on the same line. The newline in the description adds a newline before the </description> tag above, which seems to cause the matrix job problem as described above.
 
 Please see attachments for an example.

*Workaround*

Avoid newlines in the Label description. HTML is permissable there.
Simple guideline: do not enter a newline when making a label description. One MAY use html <br> and other HTML tags.

Good:
{code}

This is <b>my</b> name,<br>Matt
{code}

Bad:
{code}

This is my name,
<a newline here causes this issue>
Matt 
{code}

walther@indel.ch (JIRA)

unread,
Apr 15, 2016, 4:16:01 AM4/15/16
to jenkinsc...@googlegroups.com
Christian Walther commented on Bug JENKINS-32349
 
Re: Entering a newline in a Label description makes "slave" matrix axis unavailable

I just ran into this as well on Jenkins 1.646. It seems to me that the reason is that the hudson.Functions.jsStringEscape() function (https://github.com/jenkinsci/jenkins/blob/ac566a91e44e3482083355bd5cde3cf65610c4a3/core/src/main/java/hudson/Functions.java#L1333 called from hudson.matrix.LabelAxis.DescriptorImpl.buildLabelCheckBox() called from matrix-project-plugin/src/main/resources/hudson/matrix/LabelAxis/config.jelly) does not escape newlines, so that executing the generated JavaScript code fails with a syntax error. The following patch might therefore fix it (I have not tested this however and don’t have time to):

diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java
index 188412b..dd74ada 100644
--- a/core/src/main/java/hudson/Functions.java
+++ b/core/src/main/java/hudson/Functions.java
@@ -1344,6 +1344,9 @@ public class Functions {
             case '"':
                 buf.append("\\\"");
                 break;
+            case '\n':
+                buf.append("\\n");
+                break;
             default:
                 buf.append(ch);
             }

However, maybe showing only the first line of the description would be better – something like this (not tested either):

diff --git a/src/main/java/hudson/matrix/LabelAxis.java b/src/main/java/hudson/matrix/LabelAxis.java
index de8b6d1..672cad7 100644
--- a/src/main/java/hudson/matrix/LabelAxis.java
+++ b/src/main/java/hudson/matrix/LabelAxis.java
@@ -79,7 +79,7 @@ public class LabelAxis extends Axis {
                         Functions.htmlAttributeEscape(la.getName()))
                    +String.format("+has(%s)+",jsstr(la.getName()))
                    +jsstr("/><label class='attach-previous'>%s (%s)</label>",
-                        la.getName(),la.getDescription());
+                        la.getName(),la.getDescription().split("[\\r\\n]", 2)[0]);
             // '${h.jsStringEscape('<input type="checkbox" name="values" json="'+h.htmlAttributeEscape(l.name)+'" ')}'+has("${h.jsStringEscape(l.name)}")+'${h.jsStringEscape('/><label class="attach-previous">'+l.name+' ('+l.description+')</label>')}'
         }
     }

walther@indel.ch (JIRA)

unread,
Apr 15, 2016, 4:17:01 AM4/15/16
to jenkinsc...@googlegroups.com

tom.ghyselinck@excentis.com (JIRA)

unread,
Sep 8, 2016, 8:32:03 AM9/8/16
to jenkinsc...@googlegroups.com
Tom Ghyselinck commented on Bug JENKINS-32349
 
Re: Entering a newline in a Label description makes "slave" matrix axis unavailable

Hi all,

Any update on this?

Not a major issues, but it makes our label descriptions hard to edit...

With best regards,
Tom.

This message was sent by Atlassian JIRA (v7.1.7#71011-sha1:2526d7c)
Atlassian logo

b.brueckmann@codesys.com (JIRA)

unread,
Dec 11, 2019, 3:28:03 AM12/11/19
to jenkinsc...@googlegroups.com

We just ran across this issue.

Reproduced: german Umlauts like ü are not a problem

Reproduced: new lines are the problem

 

Futhermore a "corrupted" label destroys the configuration of a job if one saves the job (without any change by the user). Steps 2 repeat for this:

  • Having a working matrix job
  • create label with newline
  • Opening Job Config
  • Hit save (no manual changes)
  • => Job is no longer working, as the setting of labels/slaves was deleted from the underlying xml
This message was sent by Atlassian Jira (v7.13.6#713006-sha1:cc4451f)
Atlassian logo
Reply all
Reply to author
Forward
0 new messages