From e2a545fe490de2666bba39ebc3b8881ed7c22d2f Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Wed, 3 Jun 2026 00:03:32 +0200 Subject: [PATCH 1/6] Fix streaming partial lines in overallLog Adopt AnnotatedLargeText#writeHtmlToFilter to do the heavy lifting of the fix. --- .../jenkinsci/plugins/workflow/log/ConsoleAnnotators.java | 5 ++--- .../jenkinsci/plugins/workflow/log/FileLogStorage.java | 8 +++----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/jenkinsci/plugins/workflow/log/ConsoleAnnotators.java b/src/main/java/org/jenkinsci/plugins/workflow/log/ConsoleAnnotators.java index 1bcfd311..f883b06c 100644 --- a/src/main/java/org/jenkinsci/plugins/workflow/log/ConsoleAnnotators.java +++ b/src/main/java/org/jenkinsci/plugins/workflow/log/ConsoleAnnotators.java @@ -46,16 +46,15 @@ import jenkins.model.Jenkins; import jenkins.security.CryptoConfidentialKey; import org.apache.commons.io.output.ByteArrayOutputStream; -import org.kohsuke.accmod.Restricted; -import org.kohsuke.accmod.restrictions.Beta; import org.kohsuke.stapler.Stapler; import org.kohsuke.stapler.StaplerRequest2; import org.kohsuke.stapler.StaplerResponse2; /** * Some utility code extracted from {@link AnnotatedLargeText} which probably belongs in {@link ConsoleAnnotator} or {@link ConsoleAnnotationOutputStream}. + * @deprecated Use {@link AnnotatedLargeText#writeHtmlToFilter}. */ -@Restricted(Beta.class) +@Deprecated public class ConsoleAnnotators { private static final CryptoConfidentialKey PASSING_ANNOTATOR = new CryptoConfidentialKey(ConsoleAnnotators.class, "consoleAnnotator"); diff --git a/src/main/java/org/jenkinsci/plugins/workflow/log/FileLogStorage.java b/src/main/java/org/jenkinsci/plugins/workflow/log/FileLogStorage.java index 44a318fa..ab96bebe 100644 --- a/src/main/java/org/jenkinsci/plugins/workflow/log/FileLogStorage.java +++ b/src/main/java/org/jenkinsci/plugins/workflow/log/FileLogStorage.java @@ -213,10 +213,10 @@ private void maybeFlush() { @Override public AnnotatedLargeText overallLog(@NonNull FlowExecutionOwner.Executable build, boolean complete) { maybeFlush(); return new AnnotatedLargeText(log, StandardCharsets.UTF_8, complete, build) { - @Override public long writeHtmlTo(long start, Writer w) throws IOException { + @Override + protected long writeHtmlToFilter(long start, Writer w, ConsoleAnnotationOutputStream caos) throws IOException { try (BufferedReader indexBR = index.isFile() ? Files.newBufferedReader(index.toPath(), StandardCharsets.UTF_8) : new BufferedReader(new NullReader(0))) { - ConsoleAnnotationOutputStream caos = new ConsoleAnnotationOutputStream<>(w, ConsoleAnnotators.createAnnotator(build), build, StandardCharsets.UTF_8); - long r = this.writeRawLogTo(start, new FilterOutputStream(caos) { + return super.writeRawLogTo(start, new FilterOutputStream(caos) { // To insert startStep/endStep annotations into the overall log, we need to simultaneously read index-log. // We use the standard LargeText.FileSession to get the raw log text (we need not think about ConsoleNote here), having seeked to the start position. // Then we read index-log in order, looking for transitions from one step to the next (or to or from non-step overall output). @@ -261,8 +261,6 @@ private void maybeFlush() { super.flush(); } }); - ConsoleAnnotators.setAnnotator(caos.getConsoleAnnotator()); - return r; } } }; From c125d5c3ec2a49bd3ed89881701d5dd946c77ab0 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Wed, 3 Jun 2026 23:32:11 +0200 Subject: [PATCH 2/6] Use incremental from Jenkins core PR 26871 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0650100a..41297ad3 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,7 @@ 999999-SNAPSHOT 2.528 - 2.532 + 2.568-rc38327.64a_f81969036 false jenkinsci/${project.artifactId}-plugin true From eb2ee4b51804945a963aa92da75493b66d1af537 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Thu, 4 Jun 2026 20:55:36 +0200 Subject: [PATCH 3/6] Bump Jenkins baseline to 2.555 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 41297ad3..ef9573aa 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ 999999-SNAPSHOT - 2.528 + 2.555 2.568-rc38327.64a_f81969036 false jenkinsci/${project.artifactId}-plugin @@ -75,7 +75,7 @@ io.jenkins.tools.bom bom-${jenkins.baseline}.x - 5577.vea_979d35b_b_ff + 6509.v993a_c958a_e35 import pom From 09f4c3aaf1bb7c36c7a51791b590cc47d9813d5d Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Sat, 6 Jun 2026 09:45:58 +0200 Subject: [PATCH 4/6] Fix consuming the incremental core PR --- consume-incrementals | 1 + 1 file changed, 1 insertion(+) create mode 100644 consume-incrementals diff --git a/consume-incrementals b/consume-incrementals new file mode 100644 index 00000000..d2c600f5 --- /dev/null +++ b/consume-incrementals @@ -0,0 +1 @@ +https://github.com/jenkinsci/jenkins/pull/26871 From aa8ccefb01c570fc508208ba63a9deebf67d3fa0 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Tue, 16 Jun 2026 22:37:21 +0200 Subject: [PATCH 5/6] Use Jenkins weekly release with the PR changes --- consume-incrementals | 1 - pom.xml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 consume-incrementals diff --git a/consume-incrementals b/consume-incrementals deleted file mode 100644 index d2c600f5..00000000 --- a/consume-incrementals +++ /dev/null @@ -1 +0,0 @@ -https://github.com/jenkinsci/jenkins/pull/26871 diff --git a/pom.xml b/pom.xml index ef9573aa..8af17cb1 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,7 @@ 999999-SNAPSHOT 2.555 - 2.568-rc38327.64a_f81969036 + 2.569 false jenkinsci/${project.artifactId}-plugin true From 0d771c2adb7720b21585c024a7501a5e4faa7c58 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Tue, 16 Jun 2026 22:40:21 +0200 Subject: [PATCH 6/6] Bump BOM again --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8af17cb1..c7a7e9ac 100644 --- a/pom.xml +++ b/pom.xml @@ -75,7 +75,7 @@ io.jenkins.tools.bom bom-${jenkins.baseline}.x - 6509.v993a_c958a_e35 + 6585.va_085f4d47c41 import pom