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

Long hyperlinks in build description not displayed correctly in history widget when using Markdown syntax

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved (View Workflow)
    • Minor
    • Resolution: Fixed
    • core
    • Firefox 24
      Jenkins 1.509.3
      PegDown Formatter plugin 1.3
    • 2.198

    Description

      Use case:
      I want build description to contain two links separated by a space: "link1 link2". Link texts, "link1" and "link2", are at most ten characters each.

      What works:
      HTML links, i.e. "<a href="url">link text</a>", seem to work in all cases. Markdown links, i.e. "[link text](url)", seem to work on build page. Markdown links work also on project page (build history table) if they are short enough.

      What does not work:
      Markdown links do not display correctly on project page if the url is too long. I have seen two invalid representations 1) "link1..." where the link1 was ok, but the second link was missing. 2) "[link1](part-of-the-url..." where url was partially visible (consuming three lines), and the second link was missing.

      I have used Description Setter plugin and Jenkins CLI with same results.

      Configuration:
      PegDown is selected as Markup Formatter in Global Security and all extensions have been enabled. (With this fix, I could also check SUPPRESS_ALL_HTML.)

      Attachments

        Issue Links

          Activity

            salsa Sami Salonen created issue -
            salsa Sami Salonen made changes -
            Field Original Value New Value
            Component/s www [ 15484 ]
            danielbeck Daniel Beck added a comment -

            Could you provide a sample description that can be set as a project description and that demonstrates the problem?

            danielbeck Daniel Beck added a comment - Could you provide a sample description that can be set as a project description and that demonstrates the problem?
            salsa Sami Salonen added a comment -

            This issue is about build descriptions only. I have not tested setting project descriptions. Build descriptions are visible on project page (Build History table) and naturally on the build page itself. Displaying build descriptions in Build History table (project page) seems to be the problem here.

            Here is a sample shell script that sets the build description during the build.

            jcli="ssh -p <port> <jenkins host>"
            
            function get_first_link()
            {
              local text="first"
              local url="http://xxxxx.xxxxx.xxxxx.xxxxx/xxxxx/xxxxx/xxxxx/xxxxx?zzz=yyy&aaa=bbb&ccc=ddd&eee=123"
              # this does not work:
              echo "[$text]($url)"
              # this works:
              # echo "<a\ href=\"$url\">$text</a>"
            }
            
            function get_second_link()
            {
              <this is similar to get_first_link>
            }
            
            first=$( get_first_link )
            second=$( get_second_link )
            desc="$first\ $second"
            $jcli set-build-description "$JOB_NAME" "$BUILD_NUMBER" "$desc"
            
            salsa Sami Salonen added a comment - This issue is about build descriptions only. I have not tested setting project descriptions. Build descriptions are visible on project page (Build History table) and naturally on the build page itself. Displaying build descriptions in Build History table (project page) seems to be the problem here. Here is a sample shell script that sets the build description during the build. jcli= "ssh -p <port> <jenkins host>" function get_first_link() { local text= "first" local url= "http: //xxxxx.xxxxx.xxxxx.xxxxx/xxxxx/xxxxx/xxxxx/xxxxx?zzz=yyy&aaa=bbb&ccc=ddd&eee=123" # this does not work: echo "[$text]($url)" # this works: # echo "<a\ href=\" $url\ ">$text</a>" } function get_second_link() { < this is similar to get_first_link> } first=$( get_first_link ) second=$( get_second_link ) desc= "$first\ $second" $jcli set-build-description "$JOB_NAME" "$BUILD_NUMBER" "$desc"
            danielbeck Daniel Beck added a comment -

            Thanks, now it's clear that it's about the automatic truncating of build descriptions in the history widget.

            hudson/widgets/HistoryWidget/entry.jelly calls app.markupFormatter.translate(build.truncatedDescription) and Run.getTruncatedDescription operates on the raw text when determining where to truncate, so the markup formatter receives an incomplete format string.

            Should probably add MarkupFormatter.translateAndTruncate(String markup, Writer output, int maxLength) for this case.

            danielbeck Daniel Beck added a comment - Thanks, now it's clear that it's about the automatic truncating of build descriptions in the history widget. hudson/widgets/HistoryWidget/entry.jelly calls app.markupFormatter.translate(build.truncatedDescription) and Run.getTruncatedDescription operates on the raw text when determining where to truncate, so the markup formatter receives an incomplete format string. Should probably add MarkupFormatter.translateAndTruncate(String markup, Writer output, int maxLength) for this case.
            danielbeck Daniel Beck made changes -
            Component/s www [ 15484 ]
            Component/s pegdown-formatter-plugin [ 15899 ]
            Assignee bap [ bap ]
            Labels build-description html markdown pegdown markup-formatter
            Summary Long hyperlinks in build description not displayed correctly on project page when using Markdown syntax Long hyperlinks in build description not displayed correctly in history widget when using Markdown syntax
            danielbeck Daniel Beck made changes -
            Assignee Daniel Beck [ danielbeck ]
            rtyler R. Tyler Croy made changes -
            Workflow JNJira [ 151279 ] JNJira + In-Review [ 177903 ]

            We are experiencing a similar problem in our production environment, with a slightly different variation. It appears as though the truncation logic in the history widget is taking into account the build ID and time stamp strings in it's calculations for truncation. As a result when our build numbers went from being 5 digits to 6 digits in certain jobs, information that used to be present in the history widget (ie: from the build description) is now being truncated.

            What's even stranger is that even though presumably the summary content only grows by 1 or 2 characters (ie: 1 extra digit in the build number, and perhap 1 extra carriage return character to put to the timestamp on the following line) the build description seems to have an entire line of output being truncated which had previously been present.

            First off, I wouldn't have expected the timestamp to be wrapped in this case at all since there is plenty of white space surrounding the text currently. So that was odd. Secondly, it seemed odd that the build description would get truncated differently dependent upon how the summary / header information is displayed in the history. I would have expected the descriptive text to be truncated consistently regardless of the header info.

            leedega Kevin Phillips added a comment - We are experiencing a similar problem in our production environment, with a slightly different variation. It appears as though the truncation logic in the history widget is taking into account the build ID and time stamp strings in it's calculations for truncation. As a result when our build numbers went from being 5 digits to 6 digits in certain jobs, information that used to be present in the history widget (ie: from the build description) is now being truncated. What's even stranger is that even though presumably the summary content only grows by 1 or 2 characters (ie: 1 extra digit in the build number, and perhap 1 extra carriage return character to put to the timestamp on the following line) the build description seems to have an entire line of output being truncated which had previously been present. First off, I wouldn't have expected the timestamp to be wrapped in this case at all since there is plenty of white space surrounding the text currently. So that was odd. Secondly, it seemed odd that the build description would get truncated differently dependent upon how the summary / header information is displayed in the history. I would have expected the descriptive text to be truncated consistently regardless of the header info.

            On a related note, is there any way to customize the truncation length for the history widget?

            leedega Kevin Phillips added a comment - On a related note, is there any way to customize the truncation length for the history widget?
            slonopotamusorama Marat Radchenko made changes -
            Remote Link This issue links to "PR#4209 (Web Link)" [ 23725 ]
            slonopotamusorama Marat Radchenko added a comment - - edited

            Fixed by https://github.com/jenkinsci/jenkins/pull/4209 and should be released in 2.198 next week. History widget no longer truncates build description.

            slonopotamusorama Marat Radchenko added a comment - - edited Fixed by https://github.com/jenkinsci/jenkins/pull/4209 and should be released in 2.198 next week. History widget no longer truncates build description.
            slonopotamusorama Marat Radchenko made changes -
            Released As 2.198
            Resolution Fixed [ 1 ]
            Status Open [ 1 ] Fixed but Unreleased [ 10203 ]
            slonopotamusorama Marat Radchenko made changes -
            Link This issue is duplicated by JENKINS-31209 [ JENKINS-31209 ]
            slonopotamusorama Marat Radchenko made changes -
            Status Fixed but Unreleased [ 10203 ] Resolved [ 5 ]

            People

              danielbeck Daniel Beck
              salsa Sami Salonen
              Votes:
              2 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: