From 5b8d8b91c16f29f2740d001642bbeea7d710b7ae Mon Sep 17 00:00:00 2001 From: Sylvain Juge <763082+SylvainJuge@users.noreply.github.com> Date: Thu, 9 Apr 2026 16:17:52 +0200 Subject: [PATCH 1/6] version and 'ga' not required to add --- .ci/changelog-upstream-update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/changelog-upstream-update.sh b/.ci/changelog-upstream-update.sh index f329967a..7cad1f43 100755 --- a/.ci/changelog-upstream-update.sh +++ b/.ci/changelog-upstream-update.sh @@ -12,7 +12,7 @@ docs-builder changelog add \ --title "${PR_TITLE}" \ --type enhancement \ --prs "${PR_URL}" \ - --products "edot-java NEXT ga" \ + --products "edot-java" \ --description "${description}" # will overwrite any prior update, if there is any From a5d38fff3489d1720a6fa07d43bd70a8299d5bd8 Mon Sep 17 00:00:00 2001 From: Sylvain Juge <763082+SylvainJuge@users.noreply.github.com> Date: Thu, 9 Apr 2026 16:44:52 +0200 Subject: [PATCH 2/6] generate release bundle on release --- .github/workflows/pre-post-release.yml | 9 ++++++++- docs/changelog.yml | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pre-post-release.yml b/.github/workflows/pre-post-release.yml index 090b65e5..f978564b 100644 --- a/.github/workflows/pre-post-release.yml +++ b/.github/workflows/pre-post-release.yml @@ -95,7 +95,8 @@ jobs: with: command: ./gradlew -q setNextVersion - - name: Generate documentation changelog (post release) + # TODO: remove this step after changelog generation is migrated to docs-builder + - name: Generate documentation changelog markdown (post release) if: inputs.phase == 'post' run: | echo '' >> CHANGELOG.next-release.md @@ -103,6 +104,12 @@ jobs: ./gradlew -q printUpstreamDependenciesMarkdown >> CHANGELOG.next-release.md echo '' >> CHANGELOG.next-release.md java .ci/ReleaseChangelog.java CHANGELOG.next-release.md docs/release-notes ${{ env.RELEASE_VERSION }} + + - name: Generate documentation changelog bundle (post release) + if: inputs.phase == 'post' + run: | + docs-builder changelog bundle edot-java-release ${{ env.RELEASE_VERSION }} + docs-builder changelog remove edot-java-release - name: Push the ${{ inputs.phase }} release branch run: | diff --git a/docs/changelog.yml b/docs/changelog.yml index 30b5d297..7d3a71c3 100644 --- a/docs/changelog.yml +++ b/docs/changelog.yml @@ -41,5 +41,6 @@ bundle: profiles: edot-java-release: - products: "edot-java {version} {lifecycle}" + products: "edot-java * *" output: "{version}.yaml" + output_products: "edot-java {version} ga" From e17236754fb76e8cca8aebcc38ea9224870e412a Mon Sep 17 00:00:00 2001 From: Sylvain Juge <763082+SylvainJuge@users.noreply.github.com> Date: Thu, 9 Apr 2026 17:02:33 +0200 Subject: [PATCH 3/6] cleanup --- .ci/ReleaseChangelog.java | 295 ------------------------- .github/workflows/pre-post-release.yml | 13 +- .github/workflows/release-step-3.yml | 14 +- CHANGELOG.md | 73 ------ CHANGELOG.next-release.md | 39 ---- 5 files changed, 11 insertions(+), 423 deletions(-) delete mode 100644 .ci/ReleaseChangelog.java delete mode 100644 CHANGELOG.md delete mode 100644 CHANGELOG.next-release.md diff --git a/.ci/ReleaseChangelog.java b/.ci/ReleaseChangelog.java deleted file mode 100644 index bf3826a4..00000000 --- a/.ci/ReleaseChangelog.java +++ /dev/null @@ -1,295 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Locale; -import java.util.OptionalInt; -import java.util.function.Predicate; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class ReleaseChangelog { - - public static void main(String[] args) throws IOException { - if (args.length != 3) { - System.out.println( - "Expected exactly three arguments: "); - System.exit(-1); - } - Path nextChangelogFile = Paths.get(args[0]); - Path releaseNotesDir = Paths.get(args[1]); - Path releaseNotesFile = releaseNotesDir.resolve("index.md"); - Path deprecationsFile = releaseNotesDir.resolve("deprecations.md"); - Path breakingChangesFile = releaseNotesDir.resolve("breaking-changes.md"); - VersionNumber version = VersionNumber.parse(args[2].trim()); - - Lines nextChangelogLines = new Lines( - Files.readAllLines(nextChangelogFile, StandardCharsets.UTF_8)); - Lines fixes = nextChangelogLines.cutLinesBetween("", ""); - Lines enhancements = nextChangelogLines.cutLinesBetween("", - ""); - Lines deprecations = nextChangelogLines.cutLinesBetween("", - ""); - Lines breakingChanges = nextChangelogLines.cutLinesBetween("", - ""); - - Lines dependenciesNotes = nextChangelogLines.cutLinesBetween("", - ""); - - var formatter = DateTimeFormatter.ofPattern("LLLL d, yyyy", Locale.ENGLISH); - String releaseDateLine = "**Release date:** " + formatter.format(LocalDate.now()); - - Lines allReleaseNotes = new Lines(Files.readAllLines(releaseNotesFile, StandardCharsets.UTF_8)); - int insertBeforeLine = findHeadingOfPreviousVersion(allReleaseNotes, version); - if (insertBeforeLine < 0) { - insertBeforeLine = allReleaseNotes.lineCount(); - } - allReleaseNotes.insert( - generateReleaseNotes(version, releaseDateLine, enhancements, fixes, breakingChanges, - dependenciesNotes), - insertBeforeLine); - - if (!deprecations.isEmpty()) { - Lines allDeprecations = new Lines( - Files.readAllLines(deprecationsFile, StandardCharsets.UTF_8)); - int insertDepsBeforeLine = findHeadingOfPreviousVersion(allDeprecations, version); - if (insertDepsBeforeLine < 0) { - // in case no previous version was listed - insertDepsBeforeLine = allDeprecations.lineCount(); - } - allDeprecations.insert(generateDeprecations(version, releaseDateLine, deprecations), - insertDepsBeforeLine); - Files.writeString(deprecationsFile, allDeprecations + "\n", StandardCharsets.UTF_8); - } - if (!breakingChanges.isEmpty()) { - Lines allBreakingChanges = new Lines( - Files.readAllLines(breakingChangesFile, StandardCharsets.UTF_8)); - int insertBcBeforeLine = findHeadingOfPreviousVersion(allBreakingChanges, version); - if (insertBcBeforeLine < 0) { - // in case no previous version was listed - insertBcBeforeLine = allBreakingChanges.lineCount(); - } - allBreakingChanges.insert(generateBreakingChanges(version, releaseDateLine, breakingChanges), - insertBcBeforeLine); - Files.writeString(breakingChangesFile, allBreakingChanges + "\n", StandardCharsets.UTF_8); - } - Files.writeString(releaseNotesFile, allReleaseNotes + "\n", StandardCharsets.UTF_8); - Files.writeString(nextChangelogFile, nextChangelogLines + "\n", StandardCharsets.UTF_8); - } - - private static Lines generateReleaseNotes(VersionNumber version, String releaseDateLine, - Lines enhancements, Lines fixes, Lines breaking, Lines dependenciesNotes) { - Lines result = new Lines() - .append("## " + version.dotStr() + " [edot-java-" + version.dashStr() + "-release-notes]") - .append(releaseDateLine); - if (!enhancements.isEmpty()) { - result - .append("") - .append("### Features and enhancements [edot-java-" + version.dashStr() - + "-features-enhancements]") - .append(enhancements); - } - if (!fixes.isEmpty()) { - result - .append("") - .append("### Fixes [edot-java-" + version.dashStr() + "-fixes]") - .append(fixes); - } - if (!breaking.isEmpty()) { - result - .append("") - .append("### Breaking changes [edot-java-" + version.dashStr() + "-fixes]") - .append(breaking); - } - if (!dependenciesNotes.isEmpty()) { - result - .append("") - .append(dependenciesNotes); - } - result.append(""); - return result; - } - - private static Lines generateDeprecations(VersionNumber version, String releaseDateLine, - Lines deprecations) { - return new Lines() - .append("## " + version.dotStr() + " [edot-java-" + version.dashStr() + "-deprecations]") - .append(releaseDateLine) - .append("") - .append(deprecations) - .append(""); - } - - private static Lines generateBreakingChanges(VersionNumber version, String releaseDateLine, - Lines breakingChanges) { - return new Lines() - .append("## " + version.dotStr() + " [" + version.dotStr() + "]") - .append("") - .append(releaseDateLine) - .append("") - .append(breakingChanges) - .append(""); - } - - static int findHeadingOfPreviousVersion(Lines lines, VersionNumber version) { - Pattern headingPattern = Pattern.compile("## (\\d+\\.\\d+\\.\\d+) .*"); - Comparator comp = VersionNumber.comparator(); - int currentBestLineNo = -1; - VersionNumber currentBestVersion = null; - for (int i = 0; i < lines.lineCount(); i++) { - Matcher matcher = headingPattern.matcher(lines.getLine(i)); - if (matcher.matches()) { - VersionNumber headingForVersion = VersionNumber.parse(matcher.group(1)); - if (comp.compare(headingForVersion, version) < 0 - && (currentBestVersion == null - || comp.compare(headingForVersion, currentBestVersion) > 0)) { - currentBestLineNo = i; - currentBestVersion = headingForVersion; - } - } - } - return currentBestLineNo; - } - - record VersionNumber(int major, int minor, int patch) { - public static VersionNumber parse (String versionString){ - if (!versionString.matches("\\d+\\.\\d+\\.\\d+")) { - throw new IllegalArgumentException( - "Version must be in the format x.x.x but was not: " + versionString); - } - String[] parts = versionString.split("\\."); - return new VersionNumber(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), - Integer.parseInt(parts[2])); - } - - static Comparator comparator () { - return Comparator - .comparing(VersionNumber::major) - .thenComparing(VersionNumber::minor) - .thenComparing(VersionNumber::patch); - } - - String dashStr () { - return major + "-" + minor + "-" + patch; - } - - String dotStr () { - return major + "." + minor + "." + patch; - } - - } - - static class Lines { - - private final List lines; - - public Lines() { - this.lines = new ArrayList<>(); - } - - public Lines(List lines) { - this.lines = new ArrayList<>(lines); - } - - int lineCount() { - return lines.size(); - } - - boolean isEmpty() { - return lines.isEmpty(); - } - - Lines cutLinesBetween(String startLine, String endLine) { - int start = findLine(l -> l.trim().equals(startLine), 0) - .orElseThrow( - () -> new IllegalStateException("Expected line '" + startLine + "' to exist")); - int end = findLine(l -> l.trim().equals(endLine), start + 1) - .orElseThrow(() -> new IllegalStateException( - "Expected line '" + endLine + "' to exist after '" + startLine + "'")); - Lines result = cut(start + 1, end).trim(); - - lines.add(start + 1, ""); - - return result; - } - - OptionalInt findLine(Predicate condition, int startAt) { - for (int i = startAt; i < lines.size(); i++) { - if (condition.test(lines.get(i))) { - return OptionalInt.of(i); - } - } - return OptionalInt.empty(); - } - - Lines cut(int startInclusive, int endExclusive) { - List cutLines = new ArrayList<>(); - for (int i = startInclusive; i < endExclusive; i++) { - cutLines.add(lines.remove(startInclusive)); - } - return new Lines(cutLines); - } - - void insert(Lines other, int insertAt) { - this.lines.addAll(insertAt, other.lines); - } - - Lines append(String line) { - lines.add(line); - return this; - } - - Lines append(Lines toAppend) { - lines.addAll(toAppend.lines); - return this; - } - - /** - * Trims lines consisting of only blanks at the top and bottom - */ - Lines trim() { - while (!lines.isEmpty() && lines.get(0).matches("\\s*")) { - lines.remove(0); - } - while (!lines.isEmpty() && lines.get(lines.size() - 1).matches("\\s*")) { - lines.remove(lines.size() - 1); - } - return this; - } - - @Override - public String toString() { - return String.join("\n", lines); - } - - public String getLine(int number) { - return lines.get(number); - } - } - -} diff --git a/.github/workflows/pre-post-release.yml b/.github/workflows/pre-post-release.yml index f978564b..daf7bd4a 100644 --- a/.github/workflows/pre-post-release.yml +++ b/.github/workflows/pre-post-release.yml @@ -74,6 +74,9 @@ jobs: with: github-token: ${{ steps.get_token.outputs.token }} + - name: Docs builder setup + uses: elastic/docs-actions/docs-builder/setup@v1 + - name: Create the release tag (post phase) if: inputs.phase == 'post' run: | @@ -95,16 +98,6 @@ jobs: with: command: ./gradlew -q setNextVersion - # TODO: remove this step after changelog generation is migrated to docs-builder - - name: Generate documentation changelog markdown (post release) - if: inputs.phase == 'post' - run: | - echo '' >> CHANGELOG.next-release.md - echo -e "This release is based on the following upstream versions:\n\n" >> CHANGELOG.next-release.md - ./gradlew -q printUpstreamDependenciesMarkdown >> CHANGELOG.next-release.md - echo '' >> CHANGELOG.next-release.md - java .ci/ReleaseChangelog.java CHANGELOG.next-release.md docs/release-notes ${{ env.RELEASE_VERSION }} - - name: Generate documentation changelog bundle (post release) if: inputs.phase == 'post' run: | diff --git a/.github/workflows/release-step-3.yml b/.github/workflows/release-step-3.yml index 981aae21..5d1103b2 100644 --- a/.github/workflows/release-step-3.yml +++ b/.github/workflows/release-step-3.yml @@ -223,14 +223,16 @@ jobs: command: "" - name: Print Release Notes id: print_release_notes - # note: release notes here will be copied as-is from 'CHANGELOG.next-release.md' - # the 'pre-post-release' workflow executed after this will reset contents of 'CHANGELOG.next-release.md' + # FIXME using temporary workaround from https://github.com/elastic/docs-builder/issues/3057 run: | echo 'notes<> $GITHUB_OUTPUT - cat CHANGELOG.next-release.md >> $GITHUB_OUTPUT - printf '\nThis release is based on the following upstream versions:\n\n' >> $GITHUB_OUTPUT - ./gradlew -q printUpstreamDependenciesMarkdown >> $GITHUB_OUTPUT - echo 'RELNOTESEOF' >> $GITHUB_OUTPUT + tmp="$(mktemp -d)" + version="${{ inputs.version }}" + docs-builder changelog render --input "${tmp}/${version}.yaml" --output "${tmp}" + cat "${tmp}/${version}/index.md" \ + | sed -e "/## ${version} \[elastic-release-notes-${version}/d" \ + | sed -e "/###/s/ \[elastic-${version}.*$//g" >> $GITHUB_OUTPUT + echo 'RELNOTESEOF' >> $GITHUB_OUTPUT post-release: diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 2ab5de19..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,73 +0,0 @@ -# 1.5.0 - 28/07/2025 -* Add support of `elastic.otel.verify.server.cert` config option to disable server certificate validation - #726 -* tech preview release of central configuration support for dynamically changing instrumentation and sending, using OpAMP protocol - -This release is based on the following upstream versions: - -* opentelemetry-javaagent: [2.17.1](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.17.1) -* opentelemetry-sdk: [1.51.0](https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.51.0) -* opentelemetry-semconv: [1.34.0](https://github.com/open-telemetry/semantic-conventions-java/releases/tag/v1.34.0) -* opentelemetry-java-contrib: [1.46.0](https://github.com/open-telemetry/opentelemetry-java-contrib/releases/tag/v1.46.0) -# 1.4.1 - 16/04/2025 -* Fix `otel.exporter.otlp.metrics.temporality.preference` config option having no effect. - #610 - -This release is based on the following upstream versions: - -* opentelemetry-javaagent: [2.15.0](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.15.0) -* opentelemetry-sdk: [1.49.0](https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.49.0) -* opentelemetry-semconv: [1.32.0](https://github.com/open-telemetry/semantic-conventions-java/releases/tag/v1.32.0) -* opentelemetry-java-contrib: [1.45.0](https://github.com/open-telemetry/opentelemetry-java-contrib/releases/tag/v1.45.0) -# 1.4.0 - 15/04/2025 -* Switched the default of `otel.exporter.otlp.metrics.temporality.preference` from `CUMULATIVE` to `DELTA` to improve dashboarding experience with Kibana. If you want to restore the previous behaviour, you can manually override `otel.exporter.otlp.metrics.temporality.preference` to `CUMULATIVE` via JVM-properties or environment variables. - #583 -* Set elastic-specific User-Agent header for OTLP exporters - #593 -* Add support for openAI client 1.1+, drop support for older versions - #607 -* Enable Azure resource provider by default with `otel.resource.providers.azure.enabled` = `true`. - #596 - -This release is based on the following upstream versions: - -* opentelemetry-javaagent: [2.15.0](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.15.0) -* opentelemetry-sdk: [1.49.0](https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.49.0) -* opentelemetry-semconv: [1.32.0](https://github.com/open-telemetry/semantic-conventions-java/releases/tag/v1.32.0) -* opentelemetry-java-contrib: [1.45.0](https://github.com/open-telemetry/opentelemetry-java-contrib/releases/tag/v1.45.0) -# 1.3.0 - 10/03/2025 -* Add support for OpenAI client 0.14 to 0.31 - #531, #564 -* Add support for OpenAI developer messages and raise minimum supported version to 0.8.0 - #539 - -This release is based on the following upstream versions: - -* opentelemetry-javaagent: [2.13.3](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.13.3) -* opentelemetry-sdk: [1.47.0](https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.47.0) -* opentelemetry-semconv: [1.30.0-rc.1](https://github.com/open-telemetry/semantic-conventions-java/releases/tag/v1.30.0-rc.1) -* opentelemetry-java-contrib: [1.44.0](https://github.com/open-telemetry/opentelemetry-java-contrib/releases/tag/v1.44.0) -# 1.2.1 - 23/01/2025 -* Add support for OpenAI client 0.13.0 - #514 - -This release is based on the following upstream versions: - -* opentelemetry-javaagent: [2.12.0](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.12.0) -* opentelemetry-sdk: [1.46.0](https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.46.0) -* opentelemetry-semconv: [1.29.0](https://github.com/open-telemetry/semantic-conventions-java/releases/tag/v1.29.0) -* opentelemetry-java-contrib: [1.42.0](https://github.com/open-telemetry/opentelemetry-java-contrib/releases/tag/v1.42.0) -# 1.2.0 - 20/01/2025 -* add dynamically disabled instrumentation capability - #422 -* add disable all instrumentations option - #471 -* add stop-sending option - #474 -* Add OpenAI client instrumentation - #497 - -This release is based on the following upstream versions: - -* opentelemetry-javaagent: [2.12.0](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.12.0) -* opentelemetry-sdk: [1.46.0](https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.46.0) -* opentelemetry-semconv: [1.29.0](https://github.com/open-telemetry/semantic-conventions-java/releases/tag/v1.29.0) -* opentelemetry-java-contrib: [1.42.0](https://github.com/open-telemetry/opentelemetry-java-contrib/releases/tag/v1.42.0) -# 1.1.0 - 21/11/2024 -* Fixed missing transitive dependencies when using universal profiling integration standalone - #423 - -This release is based on the following upstream versions: - -* opentelemetry-javaagent: [2.10.0](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.10.0) -* opentelemetry-sdk: [1.44.1](https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.44.1) -* opentelemetry-semconv: [1.28.0](https://github.com/open-telemetry/semantic-conventions-java/releases/tag/v1.28.0) -* opentelemetry-java-contrib: [1.40.0](https://github.com/open-telemetry/opentelemetry-java-contrib/releases/tag/v1.40.0) -# 1.0.0 -GA Release diff --git a/CHANGELOG.next-release.md b/CHANGELOG.next-release.md deleted file mode 100644 index 6a6671b5..00000000 --- a/CHANGELOG.next-release.md +++ /dev/null @@ -1,39 +0,0 @@ -This file contains all changes which are not released yet. - - -# Fixes - - - -# Features and enhancements - - - -# Deprecations - - - - -# Breaking Changes - - - - - - - - -This release is based on the following upstream versions: - - -* opentelemetry-javaagent: [2.26.1](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.26.1) -* opentelemetry-sdk: [1.60.1](https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.60.1) -* opentelemetry-semconv: [1.40.0](https://github.com/open-telemetry/semantic-conventions-java/releases/tag/v1.40.0) -* opentelemetry-java-contrib: [1.54.0](https://github.com/open-telemetry/opentelemetry-java-contrib/releases/tag/v1.54.0) - From 941e2f7a4796862d10565bcea87bb90ef0096640 Mon Sep 17 00:00:00 2001 From: Sylvain Juge <763082+SylvainJuge@users.noreply.github.com> Date: Thu, 9 Apr 2026 17:22:29 +0200 Subject: [PATCH 4/6] remove unused gradle task --- build.gradle.kts | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index b30319f4..c2b38619 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -49,23 +49,6 @@ tasks { } } - /** - * Used from within our release automation as part of the release note generation. - */ - register("printUpstreamDependenciesMarkdown") { - dependsOn(printDependencyVersions) - doLast { - val agentVer = getResolvedDependency("io.opentelemetry.javaagent:opentelemetry-javaagent")!!.version - val sdkVer = getResolvedDependency("io.opentelemetry:opentelemetry-sdk")!!.version - val semconvVer = libs.versions.opentelemetrySemconv.get() - val contribVer = libs.versions.opentelemetryContribAlpha.get().replace("-alpha", "") // -alpha suffix is only on artifact, not release tag - println("* opentelemetry-javaagent: [$agentVer](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v$agentVer)") - println("* opentelemetry-sdk: [$sdkVer](https://github.com/open-telemetry/opentelemetry-java/releases/tag/v$sdkVer)") - println("* opentelemetry-semconv: [$semconvVer](https://github.com/open-telemetry/semantic-conventions-java/releases/tag/v$semconvVer)") - println("* opentelemetry-java-contrib: [$contribVer](https://github.com/open-telemetry/opentelemetry-java-contrib/releases/tag/v$contribVer)") - } - } - /** * Used from within our release automation as part of the changelog generation. */ From ac4b775203472f76189381b55dc153adf03066d5 Mon Sep 17 00:00:00 2001 From: Sylvain Juge <763082+SylvainJuge@users.noreply.github.com> Date: Thu, 9 Apr 2026 17:28:35 +0200 Subject: [PATCH 5/6] forgot to add docs-builder to release --- .github/workflows/release-step-3.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release-step-3.yml b/.github/workflows/release-step-3.yml index 5d1103b2..e9f58638 100644 --- a/.github/workflows/release-step-3.yml +++ b/.github/workflows/release-step-3.yml @@ -221,6 +221,8 @@ jobs: uses: ./.github/workflows/gradle-goal with: command: "" + - name: Docs builder setup + uses: elastic/docs-actions/docs-builder/setup@v1 - name: Print Release Notes id: print_release_notes # FIXME using temporary workaround from https://github.com/elastic/docs-builder/issues/3057 From 5faef99e3ab750ce57b24b5a8e2dd2b2f4f01a06 Mon Sep 17 00:00:00 2001 From: Sylvain Juge <763082+SylvainJuge@users.noreply.github.com> Date: Thu, 9 Apr 2026 17:51:24 +0200 Subject: [PATCH 6/6] use env variable to generate gh changelog --- .github/workflows/release-step-3.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release-step-3.yml b/.github/workflows/release-step-3.yml index e9f58638..243962d9 100644 --- a/.github/workflows/release-step-3.yml +++ b/.github/workflows/release-step-3.yml @@ -229,11 +229,10 @@ jobs: run: | echo 'notes<> $GITHUB_OUTPUT tmp="$(mktemp -d)" - version="${{ inputs.version }}" - docs-builder changelog render --input "${tmp}/${version}.yaml" --output "${tmp}" - cat "${tmp}/${version}/index.md" \ - | sed -e "/## ${version} \[elastic-release-notes-${version}/d" \ - | sed -e "/###/s/ \[elastic-${version}.*$//g" >> $GITHUB_OUTPUT + docs-builder changelog render --input "${tmp}/${{ env.RELEASE_VERSION }}" --output "${tmp}" + cat "${tmp}/${{ env.RELEASE_VERSION }}/index.md" \ + | sed -e "/## ${{ env.RELEASE_VERSION }} \[elastic-release-notes-${{ env.RELEASE_VERSION }}/d" \ + | sed -e "/###/s/ \[elastic-${{ env.RELEASE_VERSION }}.*$//g" >> $GITHUB_OUTPUT echo 'RELNOTESEOF' >> $GITHUB_OUTPUT