Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ColorConsoleAnnotator causing lines to be merged when used with LineNumber plugin #251

Open
PenelopeFudd opened this issue Nov 15, 2022 · 3 comments
Labels

Comments

@PenelopeFudd
Copy link

PenelopeFudd commented Nov 15, 2022

Jenkins and plugins versions report

Environment
Jenkins: 2.377
OS: Linux - 4.15.0-176-generic
---
ace-editor:1.1
allure-jenkins-plugin:2.30.3
analysis-model-api:10.20.0
ansicolor:1.0.2
ant:481.v7b_09e538fcca
antisamy-markup-formatter:155.v795fb_8702324
apache-httpcomponents-client-4-api:4.5.13-138.v4e7d9a_7b_a_e61
authentication-tokens:1.4
blueocean:1.25.8
blueocean-autofavorite:1.2.5
blueocean-bitbucket-pipeline:1.25.8
blueocean-commons:1.25.8
blueocean-config:1.25.8
blueocean-core-js:1.25.8
blueocean-dashboard:1.25.8
blueocean-display-url:2.4.1
blueocean-events:1.25.8
blueocean-git-pipeline:1.25.8
blueocean-github-pipeline:1.25.8
blueocean-i18n:1.25.8
blueocean-jira:1.25.8
blueocean-jwt:1.25.8
blueocean-personalization:1.25.8
blueocean-pipeline-api-impl:1.25.8
blueocean-pipeline-editor:1.25.8
blueocean-pipeline-scm-api:1.25.8
blueocean-rest:1.25.8
blueocean-rest-impl:1.25.8
blueocean-web:1.25.8
bootstrap4-api:4.6.0-5
bootstrap5-api:5.2.1-3
bouncycastle-api:2.26
branch-api:2.1051.v9985666b_f6cc
build-history-manager:1.6.0
build-timeout:1.24
build-with-parameters:1.6
caffeine-api:2.9.3-65.v6a_47d0f4d1fe
checks-api:1.8.0
cloudbees-bitbucket-branch-source:791.vb_eea_a_476405b
cloudbees-disk-usage-simple:178.v1a_4d2f6359a_8
cloudbees-folder:6.795.v3e23d3c6f194
command-launcher:90.v669d7ccb_7c31
commons-lang3-api:3.12.0-36.vd97de6465d5b_
commons-text-api:1.10.0-27.vb_fa_3896786a_7
configuration-as-code:1569.vb_72405b_80249
credentials:1214.v1de940103927
credentials-binding:523.vd859a_4b_122e6
data-tables-api:1.12.1-4
display-url-api:2.3.6
docker-commons:1.21
docker-workflow:528.v7c193a_0b_e67c
durable-task:501.ve5d4fc08b0be
echarts-api:5.4.0-1
email-ext:2.92
extended-read-permission:3.2
external-monitor-job:203.v683c09d993b_9
favorite:2.4.1
font-awesome-api:6.2.0-3
forensics-api:1.16.0
git:4.13.0
git-client:3.13.0
git-server:99.va_0826a_b_cdfa_d
github:1.36.0
github-api:1.303-400.v35c2d8258028
github-branch-source:1696.v3a_7603564d04
global-slack-notifier:1.5
gradle:2.1.1
handlebars:3.0.8
handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953
htmlpublisher:1.31
instance-identity:116.vf8f487400980
ionicons-api:31.v4757b_6987003
jackson2-api:2.13.4.20221013-295.v8e29ea_354141
jakarta-activation-api:2.0.1-2
jakarta-mail-api:2.0.1-2
javadoc:226.v71211feb_e7e9
javax-activation-api:1.2.0-5
javax-mail-api:1.6.2-8
jaxb:2.3.7-1
jdk-tool:63.v62d2fd4b_4793
jenkins-design-language:1.25.8
jersey2-api:2.37-1
jira:3.8
jjwt-api:0.11.5-77.v646c772fddb_0
jquery-detached:1.2.1
jquery3-api:3.6.1-2
jsch:0.1.55.61.va_e9ee26616e7
junit:1159.v0b_396e1e07dd
ldap:2.12
linenumbers:1.3
lockable-resources:2.18
mailer:438.v02c7f0a_12fa_4
mapdb-api:1.0.9-28.vf251ce40855d
matrix-auth:3.1.5
matrix-project:785.v06b_7f47b_c631
mercurial:1260.vdfb_723cdcc81
metrics:4.2.10-405.v60a_9cc74e923
mina-sshd-api-common:2.9.1-44.v476733c11f82
mina-sshd-api-core:2.9.1-44.v476733c11f82
momentjs:1.1.1
nexus-artifact-uploader:2.13
nexus-jenkins-plugin:3.16.455.vd5654e1c14b_a_
notify-events:1.6.2
okhttp-api:4.9.3-108.v0feda04578cf
pam-auth:1.10
parameterized-scheduler:1.1
pipeline-build-step:2.18
pipeline-github-lib:38.v445716ea_edda_
pipeline-graph-analysis:195.v5812d95a_a_2f9
pipeline-groovy-lib:613.v9c41a_160233f
pipeline-input-step:456.vd8a_957db_5b_e9
pipeline-milestone-step:101.vd572fef9d926
pipeline-model-api:2.2118.v31fd5b_9944b_5
pipeline-model-definition:2.2118.v31fd5b_9944b_5
pipeline-model-extensions:2.2118.v31fd5b_9944b_5
pipeline-rest-api:2.27
pipeline-stage-step:296.v5f6908f017a_5
pipeline-stage-tags-metadata:2.2118.v31fd5b_9944b_5
pipeline-stage-view:2.27
pipeline-utility-steps:2.13.1
plain-credentials:139.ved2b_9cf7587b
plugin-usage-plugin:3.0
plugin-util-api:2.18.0
popper-api:1.16.1-3
popper2-api:2.11.6-2
prism-api:1.29.0-1
prometheus:2.0.11
pubsub-light:1.17
purge-build-queue-plugin:82.v4b_92344dd192
resource-disposer:0.20
scm-api:621.vda_a_b_055e58f7
script-security:1189.vb_a_b_7c8fd5fde
slack:631.v40deea_40323b
slack-uploader:1.7
snakeyaml-api:1.33-90.v80dcb_3814d35
sse-gateway:1.26
ssh-credentials:305.v8f4381501156
ssh-slaves:2.854.v7fd446b_337c9
sshd:3.249.v2dc2ea_416e33
structs:324.va_f5d6774f3a_d
subversion:2.16.0
thinBackup:1.12
timestamper:1.21
token-macro:308.v4f2b_ed62b_b_16
trilead-api:2.72.v2a_3236754f73
uno-choice:2.6.4
variant:59.vf075fe829ccb
warnings-ng:9.20.1
windows-slaves:1.8.1
workflow-aggregator:590.v6a_d052e5a_a_b_5
workflow-api:1200.v8005c684b_a_c6
workflow-basic-steps:994.vd57e3ca_46d24
workflow-cps:3536.vb_8a_6628079d5
workflow-durable-task-step:1210.va_1e5d77e122b
workflow-job:1254.v3f64639b_11dd
workflow-multibranch:716.vc692a_e52371b_
workflow-scm-step:400.v6b_89a_1317c9a_
workflow-step-api:639.v6eca_cd8c04a_a_
workflow-support:839.v35e2736cfd5c
ws-cleanup:0.43

What Operating System are you using (both controller, and any agents involved in the problem)?

Controller: Ubuntu 18.04
Agents: Ubuntu 18.04 in Docker

Reproduction steps

  1. Build a job (multibranch or plain) that uses a Jenkinsfile containing the option ansiColor('xterm') that runs an Ansible script, with the LineNumber plugin installed.
  2. Look at the regular console log, or the full console log if the regular one has been truncated (the LineNumber plugin only works on un-truncated console logs).

Expected Results

I expect to see line numbers and colored text, one line number per line.

Actual Results

Some lines (the output lines for each Ansible task) are concatenated together. In this screenshot, line 13822 is shown appended to 13821, but there are several more lines appended, stretching off the edge of the page:
image

Here is the plain-text version of the same output (ESC characters not shown):
image

Here is the html that's being generated (from a different console log file; sorry):
image

It looks like the code that hides the escape sequences is being thrown off by the addition of line numbers, and ends up hiding the </span></p> that follows the escape sequence being hidden. It only seems to happen with escape sequences at the end of a line, possibly just ESC [ 0m, but that's not proven.

I'd guess the bug might be in ColorConsoleAnnotator.java around line 138 (the hideIfNeeded function):
image

Hope that helps!

Anything else?

The output in the BlueOcean console does not exhibit the concatenation problem.

@PenelopeFudd
Copy link
Author

PenelopeFudd commented Nov 16, 2022

Here's a screenshot and htmlshot of the console seen in the BlueOcean plugin:
image
image

@Snafu
Copy link

Snafu commented Nov 2, 2023

I have the same issue now in November 2023 on Ubuntu 23.10. Would be nice if it could be addressed.

@Snafu
Copy link

Snafu commented Nov 3, 2023

@PenelopeFudd in case you are still struggling with this issue, I found out that you can prevent it from happening by adding a trailing space at the end of the line, e.g.

function fancy_echo() {
    printf "\033[95m%s\033[0m \n" "$*" >&2
#                            ^ prevent merging lines by ansicolor-plugin
}
fancy_echo Hello world

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants