From d501ab7df2bef85d01f823b78f0d01aa1223b941 Mon Sep 17 00:00:00 2001 From: Jin Seop Kim Date: Tue, 7 Jul 2026 14:57:26 -0400 Subject: [PATCH 1/3] refactor(ci): remove unused split-repository logic from release notes generator --- .../google/cloud/ReleaseNoteGeneration.java | 88 +------------------ 1 file changed, 4 insertions(+), 84 deletions(-) diff --git a/java-cloud-bom/release-note-generation/src/main/java/com/google/cloud/ReleaseNoteGeneration.java b/java-cloud-bom/release-note-generation/src/main/java/com/google/cloud/ReleaseNoteGeneration.java index d1a66ed78833..2eb346bb4fcc 100644 --- a/java-cloud-bom/release-note-generation/src/main/java/com/google/cloud/ReleaseNoteGeneration.java +++ b/java-cloud-bom/release-note-generation/src/main/java/com/google/cloud/ReleaseNoteGeneration.java @@ -16,7 +16,6 @@ package com.google.cloud; -import static com.google.common.collect.ImmutableList.toImmutableList; import com.google.cloud.tools.opensource.dependencies.Artifacts; import com.google.cloud.tools.opensource.dependencies.Bom; @@ -27,13 +26,11 @@ import com.google.common.base.Joiner; import com.google.common.base.Splitter; import com.google.common.base.Verify; -import com.google.common.base.VerifyException; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import com.google.common.collect.Sets.SetView; -import com.google.common.collect.Streams; import com.google.common.io.Files; import java.io.File; import java.io.IOException; @@ -41,8 +38,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; -import java.util.Optional; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -62,9 +57,6 @@ public class ReleaseNoteGeneration { private static final String RELEASE_NOTE_FILE_NAME = "release_note.md"; private static final String GOOGLEAPIS_ORG = "googleapis"; - private static final ImmutableSet splitRepositoryLibraryNames = - ImmutableSet.of("bigtable", "firestore", "pubsub", "pubsublite"); - private static boolean clientLibraryFilter(String coordinates) { if (coordinates.contains("google-cloud-core")) { // Google Cloud Core is reported in core Google library section as this is not meant to be @@ -305,11 +297,7 @@ private void reportCloudClientBomDifference(Bom oldBom, Bom newBom, String googl } report.append("# Notable Changes\n\n"); - reportClientLibrariesNotableChangeLogs( - minorVersionBumpVersionlessCoordinates, - versionlessCoordinatesToVersionOld, - versionlessCoordinatesToVersionNew, - googleCloudJavaVersion); + reportClientLibrariesNotableChangeLogs(googleCloudJavaVersion); report.append("# Version Upgrades\n\n"); if (!majorVersionBumpVersionlessCoordinates.isEmpty()) { @@ -394,22 +382,11 @@ void reportClientLibraryVersionDifference( ImmutableList versionsForReleaseNotes = clientLibraryReleaseNoteVersions(versionlessCoordinates, previousVersion, currentVersion); - String libraryName = null; - if (artifactId.contains("google-cloud-")) { - libraryName = artifactId.replace("google-cloud-", ""); - } else if (artifactId.contains("google-")) { - // Case of google-iam-admin - libraryName = artifactId.replace("google-", ""); - } - List links = new ArrayList<>(); for (String versionForReleaseNotes : versionsForReleaseNotes) { String[] versionAndQualifier = versionForReleaseNotes.split("-"); String version = versionAndQualifier[0]; - String releaseUrl = - splitRepositoryLibraryNames.contains(libraryName) - ? releaseUrlForSplitRepo(libraryName, version) - : releaseUrlForMonorepo(libraryName, googleCloudJavaVersion); + String releaseUrl = releaseUrlForMonorepo(googleCloudJavaVersion); links.add(String.format("[v%s](%s)", versionForReleaseNotes, releaseUrl)); } line.append(Joiner.on(", ").join(links)).append(")"); @@ -418,13 +395,7 @@ void reportClientLibraryVersionDifference( } } - private static String releaseUrlForSplitRepo(String libraryName, String version) { - return String.format( - "https://github.com/googleapis/java-%s/releases/tag/v%s", libraryName, version); - } - - private static String releaseUrlForMonorepo(String libraryName, String version) { - // libraryName is unused for the monorepo release note as of Dec 2022 + private static String releaseUrlForMonorepo(String version) { return String.format( "https://github.com/googleapis/google-cloud-java/releases/tag/v%s", version); } @@ -499,59 +470,8 @@ static boolean isPatchVersionBump(String previousVersion, String currentVersion) * in between the two versions, not including the old version. */ @VisibleForTesting - void reportClientLibrariesNotableChangeLogs( - Iterable artifactsInBothBoms, - Map versionlessCoordinatesToVersionOld, - Map versionlessCoordinatesToVersionNew, - String googleCloudJavaVersion) + void reportClientLibrariesNotableChangeLogs(String googleCloudJavaVersion) throws IOException, InterruptedException { - - ImmutableList sortedVersionlessCoordinates = - Streams.stream(artifactsInBothBoms).sorted().collect(toImmutableList()); - - for (String versionlessCoordinates : sortedVersionlessCoordinates) { - List coordinates = Splitter.on(":").splitToList(versionlessCoordinates); - String artifactId = coordinates.get(1); - String previousVersion = versionlessCoordinatesToVersionOld.get(versionlessCoordinates); - String currentVersion = versionlessCoordinatesToVersionNew.get(versionlessCoordinates); - Optional matchingSplitRepoName = - splitRepositoryLibraryNames.stream() - .map(libraryName -> artifactId.endsWith(libraryName) ? "java-" + libraryName : null) - .filter(Objects::nonNull) - .findFirst(); - matchingSplitRepoName.ifPresent( - splitRepoName -> { - try { - ImmutableList versionsForReleaseNotes = - clientLibraryReleaseNoteVersions( - versionlessCoordinates, previousVersion, currentVersion); - String changelog = - fetchClientLibraryNotableChangeLog(splitRepoName, versionsForReleaseNotes); - if (!changelog.isEmpty()) { - // Only print library name when there are notable changes - report - .append("## ") - .append(artifactId) - .append(" ") - .append(currentVersion) - .append(" (prev: ") - .append(previousVersion) - .append(")"); - report.append(changelog).append("\n"); - } - } catch (MavenRepositoryException | IOException | InterruptedException ex) { - throw new VerifyException( - "Couldn't write notable changelog for " - + versionlessCoordinates - + "'s versions between " - + previousVersion - + " and " - + currentVersion, - ex); - } - }); - } - report.append("## Other libraries\n\n"); String changelog = fetchClientLibraryNotableChangeLog( From b410b84f090c0b2cbdeb92fb452221cc366a9cea Mon Sep 17 00:00:00 2001 From: Jin Seop Kim Date: Tue, 7 Jul 2026 15:06:08 -0400 Subject: [PATCH 2/3] refactor(ci): address review feedback to hoist releaseUrl and clean up unused variables --- .../main/java/com/google/cloud/ReleaseNoteGeneration.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/java-cloud-bom/release-note-generation/src/main/java/com/google/cloud/ReleaseNoteGeneration.java b/java-cloud-bom/release-note-generation/src/main/java/com/google/cloud/ReleaseNoteGeneration.java index 2eb346bb4fcc..9b93a157c794 100644 --- a/java-cloud-bom/release-note-generation/src/main/java/com/google/cloud/ReleaseNoteGeneration.java +++ b/java-cloud-bom/release-note-generation/src/main/java/com/google/cloud/ReleaseNoteGeneration.java @@ -16,7 +16,6 @@ package com.google.cloud; - import com.google.cloud.tools.opensource.dependencies.Artifacts; import com.google.cloud.tools.opensource.dependencies.Bom; import com.google.cloud.tools.opensource.dependencies.MavenRepositoryException; @@ -382,11 +381,9 @@ void reportClientLibraryVersionDifference( ImmutableList versionsForReleaseNotes = clientLibraryReleaseNoteVersions(versionlessCoordinates, previousVersion, currentVersion); + String releaseUrl = releaseUrlForMonorepo(googleCloudJavaVersion); List links = new ArrayList<>(); for (String versionForReleaseNotes : versionsForReleaseNotes) { - String[] versionAndQualifier = versionForReleaseNotes.split("-"); - String version = versionAndQualifier[0]; - String releaseUrl = releaseUrlForMonorepo(googleCloudJavaVersion); links.add(String.format("[v%s](%s)", versionForReleaseNotes, releaseUrl)); } line.append(Joiner.on(", ").join(links)).append(")"); From 3cf7093f157662dc250b94b49f28777d9f38cf88 Mon Sep 17 00:00:00 2001 From: Jin Seop Kim Date: Tue, 7 Jul 2026 15:44:39 -0400 Subject: [PATCH 3/3] refactor(ci): use Guava's ImmutableList.Builder to build and join release links --- .../src/main/java/com/google/cloud/ReleaseNoteGeneration.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java-cloud-bom/release-note-generation/src/main/java/com/google/cloud/ReleaseNoteGeneration.java b/java-cloud-bom/release-note-generation/src/main/java/com/google/cloud/ReleaseNoteGeneration.java index 9b93a157c794..d5da0f6cd2be 100644 --- a/java-cloud-bom/release-note-generation/src/main/java/com/google/cloud/ReleaseNoteGeneration.java +++ b/java-cloud-bom/release-note-generation/src/main/java/com/google/cloud/ReleaseNoteGeneration.java @@ -382,11 +382,11 @@ void reportClientLibraryVersionDifference( clientLibraryReleaseNoteVersions(versionlessCoordinates, previousVersion, currentVersion); String releaseUrl = releaseUrlForMonorepo(googleCloudJavaVersion); - List links = new ArrayList<>(); + ImmutableList.Builder links = ImmutableList.builder(); for (String versionForReleaseNotes : versionsForReleaseNotes) { links.add(String.format("[v%s](%s)", versionForReleaseNotes, releaseUrl)); } - line.append(Joiner.on(", ").join(links)).append(")"); + line.append(Joiner.on(", ").join(links.build())).append(")"); report.append(line).append("\n"); }