Repository navigation
Umbrella PRs assistant - #14807
Draft
ArmandPhilippot wants to merge 28 commits into
Draft
Umbrella PRs assistant#14807ArmandPhilippot wants to merge 28 commits into
ArmandPhilippot wants to merge 28 commits into
Conversation
Format PR lists with one helper, carry the umbrella branches in refusals, read the framework repository and release branches from the config, and share the test context and branches of the fake repository.
This was referenced Oct 29, 2026
|
Preview deployment ✅ Deployment complete!
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The "umbrella PR assistant" idea is bigger than I thought and folding everything in a single PR is hard to review. So, I have this PR for the workflow itself, in addition to #14806 that adds a minimal GitHub client. The diff is still big but there are a lot of tests.
Description (required)
Adds a release assistant workflow to handle the umbrella PRs of Astro releases.
Every Astro release is handled by hand today: we find the docs PRs for the release, gather them on a temporary branch, open an umbrella PR, and merge it when the
[ci] releasePR is merged inwithastro/astro. The preparation takes some time and it's not a great experience if someone wants to do a quick release.With this workflow, most of the process is automated. The release assistant:
acceptedand comments with every reason.umbrella/mainformain), and opens the umbrella PR when there is none.A maintainer still decides when a docs PR is ready, by adding the
acceptedlabel. Merging the umbrella PR intomain(or the prerelease branch) is still manual.This relies on new labels:
patch-release,major-release, andaccepted(already created). There's no real distinction betweenpatch-releaseandminor-release. On contributors PRs, it's mostly for maintainers to distinguish small PRs from features. On the umbrella PR, it shows if there are docs for a patch release.Note:
pull_request_targetwill be blocked on public repositories from December 2, 2026, unless an Actions event policy allows it. Five workflows already rely on it, so that policy is needed anyway.How it works
The workflow runs when
acceptedis added to a PR, or by hand to only refresh the umbrellas. A new check (Release assistant / join-umbrella) is added to a PR when a new label is applied, and is skipped when this is notaccepted.In live mode, each run:
[ci] releasePRs ofwithastro/astro: the stable one, and the prerelease one whilenextis in pre mode.accepted, oldest first, after reading it again:patch-releaseorminor-releaseonmaingo toumbrella/main,major-releaseon a prerelease branch goes toumbrella/<branch>. A PR already based on an umbrella branch stays there.mainwait for the next umbrella (or should be retargeted manually).acceptedis removed, with a comment listing every reason.[ci] release astro@x.y.z docs) and labels (merge-on-releaseand the release type), from the release PR;github-actions[bot]requesting changes, with the merge checklist. Dismissing it allows the merge. It comes back when new PRs join after a dismissal.Once the umbrella PR is merged, its branch is deleted and the next
acceptedPR starts a new umbrella.This requires two tokens:
FREDKBOT_GITHUB_TOKENmerges the docs PRs, opens and edits the umbrella PRs, and comments.GITHUB_TOKENreadswithastro/astroand posts the review: GitHub doesn't allow the author of a PR to review it, so the bot can't block its own umbrellas.At the moment, this uses the dry run mode: on each
acceptedlabel, the workflow comments on the PR with what it would do, and removesaccepted. It changes nothing else, and doesn't refresh umbrellas.Switching to live mode requires updating
.github/workflows/release-assistant.yml(--mode dry-runto--mode live). This happens in a follow-up PR that also updates the release process inCONTRIBUTING.md.The script has unit tests using a fake repository. They can be run with
pnpm test:scripts(introduced by #14806) for debugging. Outside GitHub Actions, the script is always read-only: it logs the writes instead of sending them, so it can be run locally to preview a PR.I've done a first test run on my fork; expand to see some examples.
The fork: https://github.com/ArmandPhilippot/astro-docs
These examples predate the rewording of the messages and the rename (
release-queue/mainis nowumbrella/main):main: [ci] release astro@7.4.5 docs ArmandPhilippot/astro-docs#10TODO: Second test run on my fork, after the fixes from the first one.
References