Skip to content

Commit e556910

Browse files
authored
Merge pull request #7128 from JSONbored/fix/release-please-sync-step-group-branches
fix(release): make the branch-sync step content-derived, not per-component
2 parents ec15d24 + bc547c7 commit e556910

1 file changed

Lines changed: 32 additions & 22 deletions

File tree

.github/workflows/mcp-release-please.yml

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,24 @@ jobs:
101101
# lock file"). Patches it directly on whichever release branch(es) release-please just
102102
# created/updated, using the same branch naming convention its own commits already rely on.
103103
#
104-
# The engine branch also needs packages/loopover-miner/expected-engine.version bumped to match
105-
# packages/loopover-engine/package.json's new version: release-please's engine component only
106-
# ever touches files under packages/loopover-engine/**, so it can never update that cross-package
107-
# pin itself -- scripts/check-engine-parity.ts's checkMinerEngineVersionPinSync would otherwise
108-
# fail on every single engine release PR (confirmed live on the engine-v3.1.0 release PR, #5807).
104+
# Also needs packages/loopover-miner/expected-engine.version bumped to match
105+
# packages/loopover-engine/package.json's new version whenever a branch bumps engine:
106+
# release-please's engine component only ever touches files under packages/loopover-engine/**,
107+
# so it can never update that cross-package pin itself -- scripts/check-engine-parity.ts's
108+
# checkMinerEngineVersionPinSync would otherwise fail on every release that bumps engine
109+
# (confirmed live on the engine-v3.1.0 release PR, #5807).
110+
#
111+
# Branches to check are content-derived (git ls-remote --heads matching the release-please
112+
# branch prefix), not a hardcoded per-component list: the linked-versions plugin (grouping
113+
# engine with its dependents, release-please-config.json) puts mcp/engine/miner on ONE shared
114+
# `--groups--<groupName>` branch instead of three separate `--components--<name>` branches, so
115+
# a hardcoded `for component in mcp engine miner ui-kit` loop checking only the old
116+
# `--components--` naming would silently never find/sync that branch at all (confirmed live:
117+
# PR #7127's engine-and-dependents group branch left expected-engine.version stale, failing
118+
# engine-parity:drift-check and two engine-version-display tests). Similarly, the
119+
# expected-engine.version sync itself is now driven by comparing the checked-out branch's own
120+
# committed pin against its own package.json (not an `if [ component = engine ]` check), so it
121+
# fires correctly whether engine's bump landed via a solo branch or a shared group branch.
109122
- name: Sync package-lock.json and engine-version pin on any release branch
110123
env:
111124
GH_TOKEN: ${{ secrets.RELEASE_PLEASE_TOKEN }}
@@ -117,14 +130,13 @@ jobs:
117130
cp scripts/sync-release-lockfile-versions.mjs "$trusted_sync_script"
118131
git remote set-url origin "https://github.com/${GITHUB_REPOSITORY}.git"
119132
gh auth setup-git
120-
for component in mcp engine miner ui-kit; do
121-
branch="release-please--branches--main--components--${component}"
122-
if ! git ls-remote --exit-code --heads origin "$branch" >/dev/null 2>&1; then
123-
echo "No release branch for $component, skipping."
124-
continue
125-
fi
133+
branches="$(git ls-remote --heads origin 'release-please--branches--main--*' | awk '{print $2}' | sed 's#refs/heads/##')"
134+
if [ -z "$branches" ]; then
135+
echo "No release-please branches found, skipping."
136+
fi
137+
for branch in $branches; do
126138
git fetch origin "$branch"
127-
git checkout -B "sync-check-${component}" "origin/$branch"
139+
git checkout -B "sync-check-$(printf '%s' "$branch" | tr '/' '-')" "origin/$branch"
128140
node "$trusted_sync_script" packages/loopover-mcp packages/loopover-engine packages/loopover-miner packages/loopover-ui-kit
129141
if git diff --quiet package-lock.json; then
130142
echo "package-lock.json already in sync on $branch."
@@ -133,16 +145,14 @@ jobs:
133145
git commit -m "chore(release): sync package-lock.json"
134146
git push origin "HEAD:$branch"
135147
fi
136-
if [ "$component" = "engine" ]; then
137-
engine_version="$(node -p "require('./packages/loopover-engine/package.json').version")"
138-
printf '%s\n' "$engine_version" > packages/loopover-miner/expected-engine.version
139-
if git diff --quiet packages/loopover-miner/expected-engine.version; then
140-
echo "expected-engine.version already in sync on $branch."
141-
else
142-
git add packages/loopover-miner/expected-engine.version
143-
git commit -m "chore(release): sync miner engine-version pin"
144-
git push origin "HEAD:$branch"
145-
fi
148+
engine_version="$(node -p "require('./packages/loopover-engine/package.json').version")"
149+
printf '%s\n' "$engine_version" > packages/loopover-miner/expected-engine.version
150+
if git diff --quiet packages/loopover-miner/expected-engine.version; then
151+
echo "expected-engine.version already in sync on $branch."
152+
else
153+
git add packages/loopover-miner/expected-engine.version
154+
git commit -m "chore(release): sync miner engine-version pin"
155+
git push origin "HEAD:$branch"
146156
fi
147157
done
148158

0 commit comments

Comments
 (0)