Skip to content

Comments

ci: Update release workflow to include changelog and publish docs#2425

Merged
chtruong814 merged 6 commits intomainfrom
chtruong/update-release-workflow
Feb 19, 2026
Merged

ci: Update release workflow to include changelog and publish docs#2425
chtruong814 merged 6 commits intomainfrom
chtruong/update-release-workflow

Conversation

@chtruong814
Copy link
Contributor

@chtruong814 chtruong814 commented Feb 18, 2026

What does this PR do ?

Update release workflow to include generated changelog and publish docs

Remove CHANGELOG.md

Changelog

  • Add specific line by line info of high level changes in this PR.

GitHub Actions CI

See the CI sectionin the Contributing doc for how to trigger the CI. A Nvidia developer will need to approve and trigger the CI for external contributors.

Before your PR is "Ready for review"

Pre checks:

  • Make sure you read and followed Contributor guidelines
  • Did you write any new necessary tests?
  • Did you add or update any necessary documentation?
  • Does the PR affect components that are optional to install? (Ex: Numba, Pynini, Apex etc)
    • Reviewer: Does the PR have correct import guards for all optional libraries?

If you haven't finished some of the above items you can still open "Draft" PR.

Additional Information

  • Related to # (issue)

Summary by CodeRabbit

  • Chores
    • Updated the release workflow configuration with optional inputs for controlling changelog generation and documentation publishing during releases.
    • Introduced automated changelog generation configuration to streamline release note creation from pull requests and commit history.
    • Replaced manually maintained changelog with auto-generated version built from repository history.

Signed-off-by: Charlie Truong <chtruong@nvidia.com>
@chtruong814 chtruong814 requested a review from a team as a code owner February 18, 2026 05:21
@chtruong814 chtruong814 added the r0.3.0 Cherry-pick label for r0.3.0 release branch label Feb 18, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 18, 2026

📝 Walkthrough

Walkthrough

Introduces a new changelog configuration file for release automation, updates the release workflow to include changelog generation and documentation publishing options, and removes the existing CHANGELOG.md. The release workflow template is bumped to v0.73.0 to support the new configuration-driven changelog generation process.

Changes

Cohort / File(s) Summary
Changelog Configuration
.github/workflows/config/changelog-config.json
New configuration file defining changelog generation settings, including category grouping, filtering, templates, and pull request/commit formatting rules.
Release Workflow
.github/workflows/release.yaml
Added generate-changelog and publish-docs workflow dispatch inputs; removed scheduled cron trigger; updated FW-CI-templates version from v0.54.3 to v0.73.0; passed new inputs to release job with docs-target-path set to nemo/megatron-bridge.
Changelog History
CHANGELOG.md
Deleted the entire file containing release notes for versions 0.1.0a0 through 0.2.2.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

Run CICD

Suggested reviewers

  • ko3n1g
🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: updating the release workflow to support changelog generation and documentation publishing, which aligns with the primary modifications in release.yaml and the addition of changelog configuration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Test Results For Major Changes ✅ Passed PR contains only minor CI/CD and workflow configuration changes with no modifications to source code, models, algorithms, or core functionality.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chtruong/update-release-workflow

Tip

Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
.github/workflows/config/changelog-config.json (3)

6-6: sort: "ASC" lists oldest PRs first — consider "DESC"

Ascending sort means the oldest merged PRs appear at the top of the changelog. The typical convention for release notes is newest-first ("DESC").

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/config/changelog-config.json at line 6, Change the
changelog ordering by updating the "sort" property in changelog-config.json from
"ASC" to "DESC" so the generated changelog lists newest PRs first; locate the
"sort" key in the file and set its value to "DESC" (ensure quotes remain
consistent) to follow newest-first convention.

2-7: All auto-generated entries will be hidden in the collapsed <details> block

With categories: [], ${{CHANGELOG}} always expands to an empty string — every PR is uncategorized and goes to ${{UNCATEGORIZED}} inside the <details> block. The main body of every GitHub release will be blank unless someone manually edits it.

If the intent is for the auto-generated PR list to be visible in the release body, either:

  • Add a catch-all category, or
  • Swap ${{CHANGELOG}} and ${{UNCATEGORIZED}} in the template
♻️ Proposed template with a catch-all category
-    "categories": [],
+    "categories": [
+      {
+        "title": "## Changes",
+        "labels": []
+      }
+    ],

With this, all PRs fall into the "Changes" category and render under ${{CHANGELOG}} in the main body, while the <details> block for truly uncategorized items remains empty.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/config/changelog-config.json around lines 2 - 7, The
template currently hides all generated entries because "categories" is an empty
array so ${{CHANGELOG}} is always empty and everything goes into
${{UNCATEGORIZED}} inside the collapsed <details>; fix by either adding a
catch-all category name to the "categories" array (e.g., a "Changes" category so
PRs populate ${{CHANGELOG}}) or by swapping the placeholders in the "template"
value so ${{UNCATEGORIZED}} is rendered in the collapsed <details> while
${{CHANGELOG}} appears in the main body; update the "categories" or "template"
JSON fields accordingly to implement one of these two options.

10-10: empty_template outputs raw metadata instead of a human-readable fallback

When no changes exist between tags, the release notes body will render the literal values of ${{OWNER}}, ${{REPO}}, ${{FROM_TAG}}, and ${{TO_TAG}} as four separate lines, which looks like debug output.

♻️ Suggested fix
-    "empty_template": "${{OWNER}}\n${{REPO}}\n${{FROM_TAG}}\n${{TO_TAG}}",
+    "empty_template": "No changes between ${{FROM_TAG}} and ${{TO_TAG}}.",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/config/changelog-config.json at line 10, The current
empty_template definition outputs raw metadata lines (empty_template using ${
{OWNER} }, ${ {REPO} }, ${ {FROM_TAG} }, ${ {TO_TAG} }) which appears as debug
output when there are no changes; update the empty_template to a human-friendly
fallback sentence that combines those variables into readable prose (for
example: a single-line message like "No changes in OWNER/REPO between FROM_TAG
and TO_TAG") so release notes show a clear statement instead of raw metadata;
edit the empty_template key accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/release.yaml:
- Around line 69-71: The workflow currently uses the
gh-release-use-changelog-builder input but the upstream template version (
_release_library.yml@v0.73.0 ) may not expose gh-release-changelog-config;
either verify that v0.73.0 includes the gh-release-changelog-config input before
merging, or explicitly set the changelog config input when calling the template
(pass gh-release-changelog-config:
.github/workflows/config/changelog-config.json alongside
gh-release-use-changelog-builder and publish-docs) so the changelog-builder uses
your intended config file rather than template defaults.

---

Nitpick comments:
In @.github/workflows/config/changelog-config.json:
- Line 6: Change the changelog ordering by updating the "sort" property in
changelog-config.json from "ASC" to "DESC" so the generated changelog lists
newest PRs first; locate the "sort" key in the file and set its value to "DESC"
(ensure quotes remain consistent) to follow newest-first convention.
- Around line 2-7: The template currently hides all generated entries because
"categories" is an empty array so ${{CHANGELOG}} is always empty and everything
goes into ${{UNCATEGORIZED}} inside the collapsed <details>; fix by either
adding a catch-all category name to the "categories" array (e.g., a "Changes"
category so PRs populate ${{CHANGELOG}}) or by swapping the placeholders in the
"template" value so ${{UNCATEGORIZED}} is rendered in the collapsed <details>
while ${{CHANGELOG}} appears in the main body; update the "categories" or
"template" JSON fields accordingly to implement one of these two options.
- Line 10: The current empty_template definition outputs raw metadata lines
(empty_template using ${ {OWNER} }, ${ {REPO} }, ${ {FROM_TAG} }, ${ {TO_TAG} })
which appears as debug output when there are no changes; update the
empty_template to a human-friendly fallback sentence that combines those
variables into readable prose (for example: a single-line message like "No
changes in OWNER/REPO between FROM_TAG and TO_TAG") so release notes show a
clear statement instead of raw metadata; edit the empty_template key
accordingly.

Comment on lines +69 to +71
gh-release-use-changelog-builder: ${{ inputs.generate-changelog }}
publish-docs: ${{ inputs.publish-docs }}
docs-target-path: nemo/megatron-bridge
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# First, let's look at the full release.yaml file to understand the context
cat -n .github/workflows/release.yaml

Repository: NVIDIA-NeMo/Megatron-Bridge

Length of output: 3394


🏁 Script executed:

# Search for references to the changelog config file
rg "changelog-config" --type yaml -A 3 -B 3

Repository: NVIDIA-NeMo/Megatron-Bridge

Length of output: 53


🏁 Script executed:

# Look for other uses of _release_library.yml in the repo to see the pattern
rg "_release_library" --type yaml -A 5 -B 5

Repository: NVIDIA-NeMo/Megatron-Bridge

Length of output: 53


🏁 Script executed:

# Check what inputs/outputs are expected from the template by looking at the job definition
rg "gh-release-changelog-builder" --type yaml -A 2 -B 2

Repository: NVIDIA-NeMo/Megatron-Bridge

Length of output: 53


🏁 Script executed:

# List files in .github/workflows/config to verify the config file exists
fd . .github/workflows/config 2>/dev/null || echo "Directory may not exist"

Repository: NVIDIA-NeMo/Megatron-Bridge

Length of output: 117


🏁 Script executed:

# Check the changelog config file content
cat -n .github/workflows/config/changelog-config.json

Repository: NVIDIA-NeMo/Megatron-Bridge

Length of output: 968


🏁 Script executed:

# Search for any documentation about the release process or template
fd "README\|CHANGELOG\|CONTRIBUTING" .github/ --type f

Repository: NVIDIA-NeMo/Megatron-Bridge

Length of output: 53


🏁 Script executed:

# Search for any comments or references to the template or changelog in workflow files
rg -i "changelog|release.*library" .github/workflows/ -A 2 -B 2

Repository: NVIDIA-NeMo/Megatron-Bridge

Length of output: 6531


🏁 Script executed:

# Check if there are any other workflow files that might show how to use this template
ls -la .github/workflows/ | grep -E "\.(yml|yaml)$"

Repository: NVIDIA-NeMo/Megatron-Bridge

Length of output: 1267


🏁 Script executed:

# Search for any environment variables or defaults related to changelog
rg "changelog" . --type json --type yaml --type md -i

Repository: NVIDIA-NeMo/Megatron-Bridge

Length of output: 894


🌐 Web query:

NVIDIA-NeMo FW-CI-templates _release_library.yml v0.73.0 changelog configuration inputs

💡 Result:

As of Feb 18, 2026, the NVIDIA-NeMo/FW-CI-templates repo’s latest published tag is v0.72.0 (Feb 15, 2026); v0.73.0 is not tagged/released yet. [1]

In the current main branch version of .github/workflows/_release_library.yml, the changelog-related workflow_call inputs are: [2]

  • gh-release-use-changelog-builder (boolean, default: false) — use release-changelog-builder-action to dynamically build the changelog
  • gh-release-changelog-config (string, default: .github/workflows/config/changelog-config.json) — path to the changelog-builder config file
  • gh-release-from-tag (string, default: "") — starting tag for the changelog builder (empty = auto-detect)
  • gh-release-changelog-mode (string, default: PR) — changelog builder “mode”

Note: These inputs are not present in v0.72.0’s _release_library.yml; they appear to be changes after v0.72.0 (likely intended for the next release, e.g., v0.73.0). [3]

Sources: [1] [2] [3]


🌐 Web query:

FW-CI-templates _release_library.yml gh-release-changelog-builder inputs documentation

💡 Result:

NVIDIA-NeMo/FW-CI-templates/.github/workflows/_release_library.yml (workflow_call) inputs

This reusable workflow does not use a gh-release-changelog-builder action; instead, when create-gh-release runs it builds the GitHub release body from CHANGELOG.md (and for RCs it uses a short “Prerelease … (DATE)” message). (raw.githubusercontent.com)

Defined workflow_call inputs (name → notes/default):

“gh-release-changelog-builder” inputs documentation (likely mikepenz/release-changelog-builder-action)

If by “gh-release-changelog-builder” you mean Release Changelog Builder (mikepenz/release-changelog-builder-action), its key workflow with: inputs include:

If you paste the snippet where you see gh-release-changelog-builder referenced, I can tell you exactly which action it is and map every supported input to that specific version.

Citations:


Confirm gh-release-changelog-config input is available in v0.73.0 template, or explicitly pass the config path

The template _release_library.yml@v0.73.0 is not yet released (current latest is v0.72.0 from Feb 15, 2026). While the main branch includes a new input gh-release-changelog-config (with default value .github/workflows/config/changelog-config.json), it's unclear whether this will be available in the v0.73.0 release.

Since you're relying on the changelog builder feature via gh-release-use-changelog-builder, either:

  1. Verify v0.73.0 includes the changelog inputs before merging, or
  2. Explicitly pass the config path once v0.73.0 is released:
    gh-release-use-changelog-builder: ${{ inputs.generate-changelog }}
    +gh-release-changelog-config: .github/workflows/config/changelog-config.json

Without explicit configuration or confirmed template support, the builder may not use .github/workflows/config/changelog-config.json and will fall back to defaults.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/release.yaml around lines 69 - 71, The workflow currently
uses the gh-release-use-changelog-builder input but the upstream template
version ( _release_library.yml@v0.73.0 ) may not expose
gh-release-changelog-config; either verify that v0.73.0 includes the
gh-release-changelog-config input before merging, or explicitly set the
changelog config input when calling the template (pass
gh-release-changelog-config: .github/workflows/config/changelog-config.json
alongside gh-release-use-changelog-builder and publish-docs) so the
changelog-builder uses your intended config file rather than template defaults.

@chtruong814 chtruong814 merged commit b847566 into main Feb 19, 2026
60 of 62 checks passed
@chtruong814 chtruong814 deleted the chtruong/update-release-workflow branch February 19, 2026 21:43
ko3n1g pushed a commit that referenced this pull request Feb 19, 2026
)

Signed-off-by: Charlie Truong <chtruong@nvidia.com>
Signed-off-by: NeMo Bot <nemo-bot@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

r0.3.0 Cherry-pick label for r0.3.0 release branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants