From 53bf46d615d9a9e14d7c38018680529d9a59c8ca Mon Sep 17 00:00:00 2001 From: Twisha Bansal <58483338+twishabansal@users.noreply.github.com> Date: Fri, 17 Oct 2025 16:19:21 +0530 Subject: [PATCH 1/4] Update DEVELOPER.md --- DEVELOPER.md | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/DEVELOPER.md b/DEVELOPER.md index 932c317..aa65cd9 100644 --- a/DEVELOPER.md +++ b/DEVELOPER.md @@ -97,7 +97,40 @@ The primary maintainers for this repository are defined in the ### Releasing -The release process is automated using `release-please`. +The release process is automated using `release-please`. It consists of an automated changelog preparation step followed by the manual merging of a Release PR. + +#### Automated Changelog Enrichment + +Before a Release PR is even created, a special workflow automatically mirrors relevant changelogs from the core `googleapis/genai-toolbox` dependency. This ensures that the release notes for this extension accurately reflect important upstream changes. + +The process is handled by the [`mirror-changelog.yml`](.github/workflows/mirror-changelog.yml) workflow: + +1. **Trigger:** The workflow runs automatically on pull requests created by + Renovate for `toolbox` version updates. +2. **Parsing:** It reads the detailed release notes that Renovate includes in + the PR body. +3. **Filtering:** A Node.js script located at + [`.github/scripts/mirror-changelog.js`](.github/scripts/mirror-changelog.js) + filters these release notes to include only changes relevant to this + extension. The relevance is determined by a keyword (e.g., `alloydb`), passed + as an environment variable in the workflow file. +4. **Changelog Injection:** The script formats the filtered entries as + conventional commits and injects them into the PR body within a + `BEGIN_COMMIT_OVERRIDE` block. +5. **Release Please:** When the main Release PR is created, `release-please` + reads this override block instead of the standard `chore(deps): ...` commit + message, effectively mirroring the filtered upstream changelog into this + project's release notes. + +> **Note for Maintainers:** The filtering script is an automation aid, but it +> may occasionally produce "false positives" (e.g., an internal logging change +> that happens to contain the keyword). Before merging a `toolbox` dependency +> PR, maintainers must **review the generated `BEGIN_COMMIT_OVERRIDE` block** +> and manually delete any lines that are not relevant to the end-users of this +> extension. The curated override block is the final source of truth for the +> release changelog. + +#### Release Process 1. **Release PR:** When commits with conventional commit headers (e.g., `feat:`, `fix:`) are merged into the `main` branch, `release-please` will From a9472bc866995ff5ffa9322ae316402dd0eaca8c Mon Sep 17 00:00:00 2001 From: Twisha Bansal <58483338+twishabansal@users.noreply.github.com> Date: Fri, 17 Oct 2025 16:22:05 +0530 Subject: [PATCH 2/4] Update DEVELOPER.md --- DEVELOPER.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEVELOPER.md b/DEVELOPER.md index aa65cd9..f97407b 100644 --- a/DEVELOPER.md +++ b/DEVELOPER.md @@ -112,7 +112,7 @@ The process is handled by the [`mirror-changelog.yml`](.github/workflows/mirror- 3. **Filtering:** A Node.js script located at [`.github/scripts/mirror-changelog.js`](.github/scripts/mirror-changelog.js) filters these release notes to include only changes relevant to this - extension. The relevance is determined by a keyword (e.g., `alloydb`), passed + extension. The relevance is determined by a keyword (e.g., `mysql`), passed as an environment variable in the workflow file. 4. **Changelog Injection:** The script formats the filtered entries as conventional commits and injects them into the PR body within a From 8f1f1e757462aad0c25e684b55489d38ff85264e Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 17 Oct 2025 10:16:27 -0700 Subject: [PATCH 3/4] Apply suggestion from @averikitsch --- DEVELOPER.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/DEVELOPER.md b/DEVELOPER.md index f97407b..911d949 100644 --- a/DEVELOPER.md +++ b/DEVELOPER.md @@ -109,10 +109,8 @@ The process is handled by the [`mirror-changelog.yml`](.github/workflows/mirror- Renovate for `toolbox` version updates. 2. **Parsing:** It reads the detailed release notes that Renovate includes in the PR body. -3. **Filtering:** A Node.js script located at - [`.github/scripts/mirror-changelog.js`](.github/scripts/mirror-changelog.js) - filters these release notes to include only changes relevant to this - extension. The relevance is determined by a keyword (e.g., `mysql`), passed +3. **Filtering:** These release notes are filtered to include only changes + relevant to this extension. The relevance is determined by a keyword (e.g., `mysql`), passed as an environment variable in the workflow file. 4. **Changelog Injection:** The script formats the filtered entries as conventional commits and injects them into the PR body within a From f0b1ea65b6f4ede3430f9d8cfffd3c3e8276f04a Mon Sep 17 00:00:00 2001 From: Twisha Bansal <58483338+twishabansal@users.noreply.github.com> Date: Fri, 17 Oct 2025 22:54:12 +0530 Subject: [PATCH 4/4] Update DEVELOPER.md --- DEVELOPER.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/DEVELOPER.md b/DEVELOPER.md index 911d949..94f1fb1 100644 --- a/DEVELOPER.md +++ b/DEVELOPER.md @@ -101,7 +101,10 @@ The release process is automated using `release-please`. It consists of an autom #### Automated Changelog Enrichment -Before a Release PR is even created, a special workflow automatically mirrors relevant changelogs from the core `googleapis/genai-toolbox` dependency. This ensures that the release notes for this extension accurately reflect important upstream changes. +Before a Release PR is even created, a special workflow automatically mirrors +relevant changelogs from the core `googleapis/genai-toolbox` dependency. This +ensures that the release notes for this extension accurately reflect important +upstream changes. The process is handled by the [`mirror-changelog.yml`](.github/workflows/mirror-changelog.yml) workflow: @@ -110,8 +113,8 @@ The process is handled by the [`mirror-changelog.yml`](.github/workflows/mirror- 2. **Parsing:** It reads the detailed release notes that Renovate includes in the PR body. 3. **Filtering:** These release notes are filtered to include only changes - relevant to this extension. The relevance is determined by a keyword (e.g., `mysql`), passed - as an environment variable in the workflow file. + relevant to this extension. The relevance is determined by a keyword (e.g., + `mysql`), passed as an environment variable in the workflow file. 4. **Changelog Injection:** The script formats the filtered entries as conventional commits and injects them into the PR body within a `BEGIN_COMMIT_OVERRIDE` block.