Skip to content

Commit b0542fe

Browse files
authored
[Changelog] Restore nightly compilation across branch layouts (isaac-sim#6709)
## 1. Summary Restores scheduled changelog compilation on `develop` while preserving release-branch support by staging tracked compiler outputs independently of the package-version metadata layout. This addresses nine consecutive nightly failures since July 16. ## 2. Root cause - Scheduled runs load `.github/workflows/nightly-changelog.yml` from the default `main` branch. - `develop` now stores package versions in `pyproject.toml` and has no extension manifests, while the release branch still versions packages through `config/extension.toml`. - The main workflow named both layouts in one `git add`, so the absent extension path made the develop job exit 128 after compilation succeeded. - Auto-commit messages only inspected extension-manifest diffs, so they could not describe develop version bumps. ## 3. Test plan - [x] Reproduced the unmatched `extension.toml` pathspec in [nightly run 30070931422](https://github.com/isaac-sim/IsaacLab/actions/runs/30070931422). - [x] Compiled current `upstream/develop`; patched staging captured every tracked output and rendered 14 `pyproject.toml` version transitions. - [x] Compiled the latest release pre-bump state; patched staging captured all three `extension.toml` bumps and rendered the expected package transitions. - [x] Ran `./isaaclab.sh -p -m pytest tools/changelog/test` on `develop` (90 passed). - [x] Ran `./isaaclab.sh -f` before staging, after staging, and after commit. - [x] Confirmed no source-package changelog fragment is required for this workflow-only change.
1 parent 858234d commit b0542fe

1 file changed

Lines changed: 26 additions & 22 deletions

File tree

.github/workflows/nightly-changelog.yml

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
# Nightly auto-compile: rolls accumulated fragments under
77
# ``source/<pkg>/changelog.d/`` into per-package ``CHANGELOG.rst`` entries,
8-
# bumps each ``extension.toml``, deletes consumed fragments, and pushes the
9-
# result back to each branch in the configured list. Keeps every tracked
10-
# branch's changelog current without requiring a maintainer to run
8+
# bumps each package's version metadata, deletes consumed fragments, and
9+
# pushes the result back to each branch in the configured list. Keeps every
10+
# tracked branch's changelog current without requiring a maintainer to run
1111
# ``compile`` by hand.
1212
#
1313
# Scheduled workflow — must live on the default branch (``main``) for the
@@ -210,15 +210,11 @@ jobs:
210210
# them correctly. ID 282401363 is isaaclab-bot[bot]'s user ID.
211211
git config user.name "isaaclab-bot[bot]"
212212
git config user.email "282401363+isaaclab-bot[bot]@users.noreply.github.com"
213-
# ``pyproject.toml`` is staged alongside ``extension.toml`` because
214-
# ``Package.write_version`` bumps both when a ``[project]`` block
215-
# exists. Missing it leaves the pyproject write unstaged, which
216-
# makes the subsequent ``git pull --rebase`` refuse with
217-
# ``cannot pull with rebase: You have unstaged changes``.
218-
git add source/*/changelog.d/ \
219-
source/*/docs/CHANGELOG.rst \
220-
source/*/config/extension.toml \
221-
source/*/pyproject.toml
213+
# Stage every tracked compiler output under ``source/``. Active
214+
# branches store package versions in ``pyproject.toml``, while
215+
# release branches still use ``config/extension.toml``; naming both
216+
# path globs makes ``git add`` fail when either layout is absent.
217+
git add --update -- source/
222218
if git diff --staged --quiet; then
223219
echo "No changelog fragments found — nothing to commit."
224220
else
@@ -231,21 +227,29 @@ jobs:
231227
# action. The trigger event suffix (``schedule`` vs
232228
# ``workflow_dispatch``) is preserved for traceability.
233229
#
234-
# The body lists every package that bumped, derived from the
235-
# staged ``extension.toml`` diff so the entries are accurate
236-
# regardless of which packages happen to have pending
237-
# fragments this run.
230+
# The body lists every package that bumped, derived from whichever
231+
# supported version metadata file changed on the target branch.
238232
MSG_FILE=$(mktemp)
239233
{
240234
echo "[CI][Auto Version Bump] Compile changelog fragments (${{ github.event_name }})"
241235
echo
242236
echo "Bumped packages:"
243-
for tom in $(git diff --staged --name-only -- 'source/*/config/extension.toml'); do
244-
pkg=$(echo "$tom" | sed -E 's|source/([^/]+)/config/extension.toml|\1|')
245-
old=$(git diff --staged "$tom" | awk -F'"' '/^-version/{print $2; exit}')
246-
new=$(git diff --staged "$tom" | awk -F'"' '/^\+version/{print $2; exit}')
247-
echo "- $pkg: $old → $new"
248-
done
237+
git diff --staged --name-only -- \
238+
'source/*/config/extension.toml' \
239+
'source/*/pyproject.toml' \
240+
| sed -E 's|source/([^/]+)/.*|\1|' \
241+
| sort -u \
242+
| while IFS= read -r pkg; do
243+
pyproject="source/$pkg/pyproject.toml"
244+
if git diff --staged --quiet -- "$pyproject"; then
245+
tom="source/$pkg/config/extension.toml"
246+
else
247+
tom="$pyproject"
248+
fi
249+
old=$(git diff --staged -- "$tom" | awk -F'"' '/^-version/{print $2; exit}')
250+
new=$(git diff --staged -- "$tom" | awk -F'"' '/^\+version/{print $2; exit}')
251+
echo "- $pkg: $old → $new"
252+
done
249253
} > "$MSG_FILE"
250254
git commit -F "$MSG_FILE"
251255
# Rebase onto the target branch's current tip in case a human

0 commit comments

Comments
 (0)