forked from RooCodeInc/Roo-Code
-
Notifications
You must be signed in to change notification settings - Fork 11
chore: harden release workflow and update release runbook #83
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
edelauna
wants to merge
1
commit into
main
Choose a base branch
from
chore/release-checklist-actions
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+175
−82
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,45 +1,107 @@ | ||
| --- | ||
| description: "Create a new release of the Roo Code extension" | ||
| description: "Prepare a new release of the Zoo Code extension" | ||
| argument-hint: patch | minor | major | ||
| mode: code | ||
| --- | ||
|
|
||
| 1. Identify the SHA corresponding to the most recent release using GitHub CLI: `gh release view --json tagName,targetCommitish,publishedAt` | ||
| 2. Analyze changes since the last release using: `gh pr list --state merged --base main --json number,title,author,url,mergedAt,closingIssuesReferences --limit 1000 -q '[.[] | select(.mergedAt > "TIMESTAMP") | {number, title, author: .author.login, url, mergedAt, issues: .closingIssuesReferences}] | sort_by(.number)'` | ||
| 3. For each PR with linked issues, fetch the issue details to get the issue reporter: `gh issue view ISSUE_NUMBER --json number,author -q '{number, reporter: .author.login}'` | ||
| 4. Summarize the changes. If the user did not specify, ask them whether this should be a major, minor, or patch release. | ||
| 5. Create a changeset in .changeset/v[version].md instead of directly modifying package.json. The format is: | ||
| 1. Identify the most recent stable extension release: | ||
|
|
||
| ``` | ||
| --- | ||
| "roo-cline": patch|minor|major | ||
| --- | ||
| [list of changes] | ||
| ``` | ||
|
|
||
| - Always include contributor attribution and the PR number: use "(PR #<prNumber> by @username)". | ||
| - For PRs that close issues, include both the issue number and the PR number and authors: "- Fix: Description (#123 by @reporter, PR #456 by @contributor)" | ||
| - For PRs without linked issues, include the PR number and author: "- Add support for feature (PR #456 by @contributor)" | ||
| - Provide brief descriptions of each item to explain the change | ||
| - Order the list from most important to least important | ||
| - Example formats: | ||
| - With issue: "- Fix: Resolve memory leak in extension (#456 by @issueReporter, PR #789 by @prAuthor)" | ||
| - Without issue: "- Add support for Gemini 2.5 Pro caching (PR #789 by @contributor)" | ||
| - CRITICAL: Include EVERY SINGLE PR in the changeset - don't assume you know which ones are important. Count the total PRs to verify completeness and cross-reference the list to ensure nothing is missed. | ||
|
|
||
| 6. If the generate_image tool is available, create a release image at `releases/[version]-release.png` | ||
| - The image should feature a realistic-looking kangaroo doing something human-like that relates to the main highlight of the release | ||
| - Pass `releases/template.png` as the reference image for aspect ratio and kangaroo style | ||
| - Add the generated image to .changeset/v[version].md before the list of changes with format: `` | ||
| 7. If a major or minor release: | ||
| - Ask the user what the three most important areas to highlight are in the release | ||
| - Update the English version relevant announcement files and documentation (webview-ui/src/components/chat/Announcement.tsx, README.md, and the `latestAnnouncementId` in src/core/webview/ClineProvider.ts) | ||
| - Ask the user to confirm that the English version looks good to them before proceeding | ||
| - Use the new_task tool to create a subtask in `translate` mode with detailed instructions of which content needs to be translated into all supported languages (The READMEs as well as the translation strings) | ||
| 8. Create a new branch for the release preparation: `git checkout -b release/v[version]` | ||
| 9. Commit and push the changeset file and any documentation updates to the repository: `git add . && git commit -m "chore: add changeset for v[version]" && git push origin release/v[version]` | ||
| 10. Create a pull request for the release: `gh pr create --title "Release v[version]" --body "Release preparation for v[version]. This PR includes the changeset and any necessary documentation updates." --base main --head release/v[version]` | ||
| 11. The GitHub Actions workflow will automatically: | ||
| - Create a version bump PR when changesets are merged to main | ||
| - Update the CHANGELOG.md with proper formatting | ||
| - Publish the release when the version bump PR is merged | ||
| ```bash | ||
| gh release view --json tagName,targetCommitish,publishedAt | ||
| ``` | ||
|
|
||
| 2. Analyze changes since that release: | ||
|
|
||
| ```bash | ||
| gh pr list --state merged --base main --json number,title,author,url,mergedAt,closingIssuesReferences --limit 1000 -q '[.[] | select(.mergedAt > "TIMESTAMP") | {number, title, author: .author.login, url, mergedAt, issues: .closingIssuesReferences}] | sort_by(.number)' | ||
| ``` | ||
|
|
||
| 3. For each PR with linked issues, fetch the issue reporter: | ||
|
|
||
| ```bash | ||
| gh issue view ISSUE_NUMBER --json number,author -q '{number, reporter: .author.login}' | ||
| ``` | ||
|
|
||
| 4. Summarize the changes. If the user did not specify a release type, ask whether this should be a major, minor, or patch release. | ||
|
|
||
| 5. Review and update the Marketplace-facing root `README.md`. | ||
|
|
||
| - Treat root `README.md` as the source of truth for Marketplace content. | ||
| - Update the "What's New" section for the release when appropriate. | ||
| - Do not manually edit `src/README.md`; the extension bundle step copies root `README.md` into `src/README.md`. | ||
| - Check for stale upstream Roo Code wording that should now say Zoo Code. | ||
|
|
||
| 6. Create a changeset in `.changeset/v[version].md` instead of directly modifying `src/package.json`. The format is: | ||
|
|
||
| ```md | ||
| --- | ||
| "zoo-code": patch|minor|major | ||
| --- | ||
|
|
||
| [list of changes] | ||
| ``` | ||
|
|
||
| - Always include contributor attribution and the PR number: use `(PR #<prNumber> by @username)`. | ||
| - For PRs that close issues, include both issue and PR authors: `- Fix: Description (#123 by @reporter, PR #456 by @contributor)`. | ||
| - For PRs without linked issues, include the PR number and author: `- Add support for feature (PR #456 by @contributor)`. | ||
| - Provide brief descriptions of each item to explain the change. | ||
| - Order the list from most important to least important. | ||
| - Include every PR in the release window. Count the PRs and cross-reference the list before creating the PR. | ||
|
|
||
| 7. If an image generation tool is available, create a release image at `releases/[version]-release.png`. | ||
|
|
||
| - The image should relate to the main release highlight and fit the existing release-image style. | ||
| - Add the generated image to `.changeset/v[version].md` before the list of changes: | ||
|
|
||
| ```md | ||
|  | ||
| ``` | ||
|
|
||
| 8. For a major or minor release: | ||
|
|
||
| - Ask the user what three areas should be highlighted. | ||
| - Update relevant announcement files and documentation, including `webview-ui/src/components/chat/Announcement.tsx`, `README.md`, and the `latestAnnouncementId` in `src/core/webview/ClineProvider.ts`. | ||
| - Ask the user to confirm the English announcement before proceeding. | ||
| - Arrange translation updates for all supported locales affected by README, announcement, or package localization changes. | ||
|
|
||
| 9. Create and push a release-prep branch: | ||
|
|
||
| ```bash | ||
| git checkout -b release/v[version] | ||
| git add .changeset/v[version].md README.md releases/[version]-release.png | ||
| git commit -m "chore: add changeset for v[version]" | ||
| git push origin release/v[version] | ||
| ``` | ||
|
|
||
| Adjust the staged files to match the actual release changes. | ||
|
|
||
| 10. Create the release-prep PR: | ||
|
|
||
| ```bash | ||
| gh pr create --title "Release v[version]" --body "Release preparation for v[version]. This PR includes the changeset, Marketplace README updates, and any release assets or announcement updates." --base main --head release/v[version] | ||
| ``` | ||
|
|
||
| 11. After the release-prep PR is merged, GitHub Actions should create a version-bump PR titled `Zoo Code changeset version bump`. | ||
|
|
||
| - That PR should update `src/package.json`, `CHANGELOG.md`, `src/CHANGELOG.md`, and remove consumed changesets. | ||
| - The validation workflow should verify extension identity, changelog content, README sync, and VSIX packaging. | ||
| - The workflow expects these repository settings: | ||
| - Variable `RELEASE_APP_ID`: the release GitHub App ID. | ||
| - Secret `RELEASE_APP_PRIVATE_KEY`: the release GitHub App private key. | ||
| - Variable `RELEASE_BOT_LOGIN`: the PR author login for release bot PRs, currently expected to be `app/roomote`. | ||
| - A human should review and merge this version-bump PR. | ||
|
|
||
| 12. After the version-bump PR is merged, create the release tag on the resulting `main` commit: | ||
|
|
||
| ```bash | ||
| git switch main | ||
| git pull origin main | ||
| git tag v[version] | ||
| git push origin v[version] | ||
| ``` | ||
|
|
||
| 13. The stable publish workflow runs from the `v[version]` tag. | ||
|
|
||
| - Do not create the tag before the version-bump PR is merged. | ||
| - The publish workflow validates that the tag version matches `src/package.json`. | ||
| - Marketplace and Open VSX publishing use the configured CI secrets. |
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: Zoo-Code-Org/Zoo-Code
Length of output: 943
Remove or correct the non-existent
@roo-code/buildfilter in the build step.The filter
pnpm --filter@roo-code/build`` will not match any workspace packages—@roo-code/builddoes not exist in the repository. The workspace contains `@roo-code/vscode-webview` (from `./webview-ui/package.json`), but no build package. This filter will silently skip the build, potentially leaving stale artifacts in the downstream vsix package.Confirm the intended package name for the first filter, or remove it if no build is needed for this step.
🤖 Prompt for AI Agents