fix(recipe-upgrade): default to extending an existing open upgrade PR, not a parallel one
When an open upgrade PR already exists for a recipe (branch upgrade-*), push the new work onto ITS branch and update+re-test that PR — one evolving upgrade PR per recipe instead of spawning a second parallel PR. Only open a fresh upgrade-<version> PR when none exists. Unrelated open PRs (e.g. backup fixes) are still never touched; merged-upstream PRs still close. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
35f83a4b74
commit
5f814307ad
@@ -76,9 +76,11 @@ ssh cc-ci "GITEA_USERNAME='$GITEA_USERNAME' GITEA_PASSWORD='$GITEA_PASSWORD' GIT
|
||||
< /srv/cc-ci/.claude/skills/recipe-upgrade/open-recipe-pr.sh
|
||||
```
|
||||
This (a) re-syncs mirror `main` to true upstream main, (b) **closes any open PR already merged
|
||||
upstream** (merging it would be a no-op), then pushes the upgrade branch and opens the new PR
|
||||
**alongside** any other still-open PRs — it does **NOT** close superseded/unrelated open PRs; the
|
||||
operator decides which to merge/close. The new PR's diff is still exactly this upgrade against the
|
||||
upstream** (merging it would be a no-op), then handles the upgrade PR: **if an open upgrade PR already
|
||||
exists for this recipe (branch `upgrade-*`), the new work is pushed onto THAT PR's branch and the PR is
|
||||
updated + re-tested** — one evolving upgrade PR per recipe, not a second parallel one. Only if none
|
||||
exists is a fresh `upgrade-<version>` PR opened. Unrelated open PRs (e.g. a backup fix) are **NOT**
|
||||
closed or touched — the operator decides on those. The PR's diff is exactly this upgrade against the
|
||||
real current upstream main. Capture the `PR_URL`. Optionally export `RECIPE_PR_BODY` first (image-tag
|
||||
table + the planned operator-action notes). Re-running with the same target version updates the
|
||||
existing same-branch PR rather than duplicating it.
|
||||
@@ -152,7 +154,8 @@ Always state explicitly that **nothing was merged** — the PR(s) await operator
|
||||
`/upgrade-all` cron always runs the **default** — it never auto-updates tests.
|
||||
- **Mirror reflects reality.** Each run force-syncs the `recipe-maintainers/<recipe>` mirror `main` to
|
||||
true upstream main and closes open PRs already merged upstream. It does NOT close superseded/unrelated
|
||||
open PRs — a new upgrade PR is opened alongside them and the operator decides which to merge/close.
|
||||
open PRs. **An existing open upgrade PR is extended (new work pushed onto its branch + re-tested)
|
||||
rather than spawning a second upgrade PR** — one evolving upgrade PR per recipe.
|
||||
- **Prefer a recipe-only PR.** Only open a cc-ci test PR (under `--with-tests`) when the upgrade is
|
||||
correct but a test is genuinely stale — never to paper over a real upgrade regression.
|
||||
- **Never weaken a test**; **bounded** changes (the upgrade + minimal test update, not rewrites).
|
||||
|
||||
Reference in New Issue
Block a user