From a58ec25af451278b1dd5edaddf81d0ed61b85d76 Mon Sep 17 00:00:00 2001 From: Twisha Bansal <58483338+twishabansal@users.noreply.github.com> Date: Fri, 17 Oct 2025 16:39:42 +0530 Subject: [PATCH 1/3] docs: include mirror changelog info in developer docs --- DEVELOPER.md | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/DEVELOPER.md b/DEVELOPER.md index 0b9aaad..ee38a23 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., `postgres`), 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 @@ -109,3 +142,4 @@ The release process is automated using `release-please`. `package-and-upload-assets.yml` workflow. This workflow builds the platform-specific extension archives and uploads them as assets to the GitHub Release. + From 7a375d52d36227ae013692f6573689e7c822bb41 Mon Sep 17 00:00:00 2001 From: Twisha Bansal <58483338+twishabansal@users.noreply.github.com> Date: Fri, 17 Oct 2025 16:40:35 +0530 Subject: [PATCH 2/3] Update DEVELOPER.md --- DEVELOPER.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEVELOPER.md b/DEVELOPER.md index ee38a23..ecf6f48 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., `postgres`), passed + extension. The relevance is determined by a keyword (e.g., `mssql`), 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 1af70330c3e8020f1bbd034e9401138191613194 Mon Sep 17 00:00:00 2001 From: Twisha Bansal <58483338+twishabansal@users.noreply.github.com> Date: Fri, 17 Oct 2025 22:56:55 +0530 Subject: [PATCH 3/3] Update DEVELOPER.md --- DEVELOPER.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/DEVELOPER.md b/DEVELOPER.md index ecf6f48..eb6bdb1 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: @@ -109,11 +112,9 @@ 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., `mssql`), passed - as an environment variable in the workflow file. +3. **Filtering:** These release notes are filtered to include only changes + relevant to this extension. The relevance is determined by a keyword (e.g., + `mssql`), 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.