-
Notifications
You must be signed in to change notification settings - Fork 136
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
Quest: update release process for independent versioning #1237
Comments
Maybe an option: https://github.com/statelyai/xstate/tree/main/.changeset (still getting details): |
This is pretty cool, I asked:
Andarist answered Changesets publish when there are no changeset files in your base branch - so be cautious when initing it because if you have some dirty state in your monorepo (package.json version bumped without a version being actually published) then it will publish that (because it syncs to the registry what has not yet been published but what’s available locally. With a changesets action a versioning PR gets created and publish only happens when you land that So, I think what we want to do is setup the changeset action, add some changeset files, and make sure the PR it generates looks good -- once we merge it, it'll do the releasing for us |
PR: #1259 |
This is reopened because changesets is pretty far from what I described in this issue. Having tried it, it's really not what I'm looking for. From a correctness perspective, the biggest gap is:
I want a system that asks you to account for every code change as either major, minor, or patch and then guarantees those changes go out. With changesets, you don't get that guarantee unless you buy into their whole workflow, putting a required changeset into every PR (and locking down the possibility of any changes that don't go through PRs). |
Can you expand on this? This is not required
You mean you want these prevented? This would only affect those who have push-to-main access, yeah?
You want to force this? Semantic-release does, but then forces a commit convention, and monorepo support is pretty rough, imo |
I'm saying that if you don't require it, changesets offers no other line of defense to guarantee that a change will get released.
No, all I'm saying is that changesets doesn't read git to decide what needs to be released. It reads changeset files. And the tools they give you to make sure there are appropriate changeset files are all about controlling things during PRs.
I want to force this at the time of release. Not at the time you're making a commit. |
What I'm asking for can be described very briefly: if a package has been changed since it was last released, when you're doing a new release the system needs to ask you if you want that change to major, minor, or patch. Right now the system will just happily ignore that package, leaving your fix unreleased. There is no check to point out that you have code changes with no changeset file. |
For a preview of changeset releasing multiple packages automatically:
This repo just did it's first releases, so (imo) it's easier to digest. |
Presently, all the packages in the embroider monorepo release together with one version number. But we have reached the point where that is problematic. It would be much better to pick between major, minor, or patch for each package that has changed since being released last, and not release unchanged packages at all.
The specific motivating use cases right now include:
Requirements:
I like release-it overall and I am open to contributing to (or forking and maintaining if there is delay) https://github.com/release-it-plugins/workspaces which has open issues discussing how to add most of this capability. See release-it-plugins/workspaces#40 and release-it-plugins/workspaces#36.
I am also open to adopting an entirely different tool (for example, lerna) if someone wants to figure out how to get it to do what we need.
A final alternative I will mention is that we could keep the same release setup but move some packages out of the monorepo. I'm open to discussing that, but the main work involved would be keeping our integrated test suite. We really want to know before releasing if changes to one package cause test suite failures in another.
The text was updated successfully, but these errors were encountered: