Repository navigation
ci(release): Release clients and server as Craft workspaces - #737
Merged
Merged
Conversation
Co-Authored-By: Lorenzo Cian <17258265+lcian@users.noreply.github.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #737 +/- ##
==========================================
- Coverage 91.58% 91.57% -0.02%
==========================================
Files 116 116
Lines 22081 22081
==========================================
- Hits 20223 20220 -3
- Misses 1858 1861 +3
☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Co-Authored-By: Lorenzo Cian <17258265+lcian@users.noreply.github.com>
sentry-junior
Bot
force-pushed
the
ci/craft-workspaces
branch
from
October 28, 2026 09:13
bd4790e to
6002762
Compare
Without a prefix, Craft finds the previous server release with an unfiltered git describe, so a client tag released after the last server release becomes the changelog base and drops the server PRs merged in between. With server@, Craft only considers server tags, for both the changelog base and the CalVer patch scan. Co-Authored-By: Lorenzo Cian <17258265+lcian@users.noreply.github.com>
lcian
marked this pull request as ready for review
October 28, 2026 11:18
Craft writes the server changelog on prepare but only commits tracked files, so without a checked-in file the first release commit would leave it out. Both clients already have one.
BYK
added a commit
to getsentry/craft
that referenced
this pull request
Oct 28, 2026
…942) Closes #941. The changelog preview workflow didn't work in repos that define release workspaces. `craft changelog --pr N` failed because no workspace was selected, and the workflow hid the error, so every PR showed "No changelog entries" with no bump. Even with a workspace selected, the current PR was always added to the preview without the workspace path rules, so a server-only PR showed up as a bump in a client's changelog. **What changes** - If the config defines workspaces and none is selected, `craft changelog --pr N` previews the PR in each workspace, starting from that workspace's latest tag. It keeps only the workspaces whose changelog would list the PR. The JSON output gets a `workspaces` array (`name`, `bumpType`, `versioningPolicy`). `changelog` holds the PR's own entry once, since the entry text is the same in every workspace. - With a workspace selected, the PR's changed files (from the GitHub API, including the old path of renamed files) go through the same rules as the release changelog: owned paths, `includePaths`, `unownedPaths`. A PR outside the workspace is left out and doesn't bump the version. To support this, the path matching in `getChangesSince` moved into `getWorkspaceChangeFilter()` so both callers share it. - The workflow still posts one comment or one commit status. It lists each workspace the PR lands in with its bump (CalVer workspaces show `CalVer`), and the status description reads e.g. `clients/python: Minor, clients/rust: Patch`. When a PR lands in no workspace, the preview says so, and title enforcement is skipped as it is for `skip-changelog`. Repos without workspaces get the same output as before. I ran the built binary against the three-workspace config in getsentry/objectstore#737: - getsentry/objectstore#690 only changes `objectstore-service`. It now lands only in `objectstore-server` (CalVer). - getsentry/objectstore#721 lands only in `clients/python`, as a major bump. - getsentry/objectstore#728 is CI-only. Every workspace uses `unownedPaths: exclude`, so it lands in none. Callers that pin `craft-version` need a release with this change. The default `latest` picks it up. <!-- junior-request-attribution:start --> via @BYK. <!-- junior-request-attribution:end --> <!-- junior-session-footer:start --> <!-- junior-conversation-id:slack%3AC0CACQ70E8Z%3A1793125577.652579 --> -- [View Junior Session](https://junior-prod.sentry.dev/conversations/slack%3AC0CACQ70E8Z%3A1793125577.652579) [[Sentry]](https://sentry.sentry.io/explore/conversations/slack%3AC0CACQ70E8Z%3A1793125577.652579/?project=4510944073809921) <!-- junior-session-footer:end --> Co-authored-by: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com> Co-authored-by: Burak Yigit Kaya <126780+BYK@users.noreply.github.com>
Craft 3.4.0's changelog preview supports release workspaces: one PR comment lists each workspace whose changelog lists the PR, with its bump, using the same path rules as the release changelog. Co-Authored-By: Lorenzo Cian <17258265+lcian@users.noreply.github.com>
lcian
approved these changes
Oct 28, 2026
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 3524bd1. Configure here.
jan-auer
approved these changes
Oct 28, 2026
lcian
added a commit
that referenced
this pull request
Oct 29, 2026
Fixes the changelog preview added in #737, which fails at startup on every PR ([run on #700](https://github.com/getsentry/objectstore/actions/runs/40873702019): "likely failed because of a workflow file issue"). Craft's reusable preview job requests `contents: read`, `pull-requests: write` and `statuses: write`. A called workflow can't get more permissions than its caller, and our caller only granted the first two. This adds `statuses: write`, matching the old per-client preview workflows. The preview runs from the base branch (`pull_request_target`), so it starts working on other PRs once this merges. #skip-changelog --------- Co-authored-by: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com> Co-authored-by: Lorenzo Cian <17258265+lcian@users.noreply.github.com>
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.

Releases now go through a single root
.craft.ymlwith three Craft workspaces: the Python client, the Rust client and the server. The release workflow asks which one to release.py-client@x.y.z/rs-client@x.y.zautomatically.server@YY.M.N. Its changelog covers PRs that changeobjectstore-serverorobjectstore-service, starting from this PR. No artifacts are published yet, only the GitHub release.getsentry-bot.#skip-changelog
via @lcian.
--
View Junior Session [Sentry]