-
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
Simplification of the release process #3825
Comments
i understand this effort stems from the hiccup with the most recent branch split and i welcome simplification to lessen the chances of repeating that. on a related note, i recently opened #3629 to explore other options which might suffice our needs so #3464 becomes a less heavy lift. i'd like to fill in some of my understanding of the current system as i think we can use it a bit longer and we don't need to rush to a new one immediately.
there is a boolean (
if the CHANGELOGs are adjusted to signal a minor bump this alone will cause otherwise unchanged crates to be regarded as changed and also be released. so from how i understand your requirement here we've already implemented this. IIUC combined with the
on a meta note, all declarative data structures are ultimately imperatively processed.
i can see that the statefulness is the least intuitive part of the system, also in that the processing will change the CHANGELOG attributes back to their (implicit) default if they diverge from that. we haven't been making much use of that feature either. e.g. i foresaw that we set
i'm happy to redefine this behavior according to new learnings and document it thoroughly. the predictability is given in form of the dry-run feature of the github workflow.
in my mental model monorepos don't have versions in itself other than commit hashes. i even the timestamps that we put in the CHANGELOG headings somewhat arbitrary. the other aspect here is to be able to define the new version exactly, instead of giving the increment mode. is this preference also caused by the increment mode not being intuitive and predictable enough as of now?
i don't know why the lockstep versioning is a requirement. on the topic of moving crates outside of it, i think there's also a risk to consider that we have no automation for releases in other repositories to the degree that we have it here. granted that with this issue you want to make a case that the state of this repo isn't ideal you may see that as a positive argument 😆
this would mean to either (a) disregard the state of crates.io in the release process, (b) mock its API, or (c) run a standalone crates registry for CI. i don't think (a) is feasible in practice as it is fundamental part of the publish process. my preference here is (c) as it gets use closest to the production runs. i took some notes on (c) a long time ago in a hackmd: Test publishing with a test crate registry Candidates:
despite my efforts to give thorough answers here i think there's still room for discussion. as i might still be missing context of what happened recently in my absence. |
This item has been open for 30 days with no activity. |
Choosing what to release:
0.X+1.0
and0.X.Y.dev.Z
. Then what should happen next? Well its clear to a person that we want theX
in0.X.Y.dev.Z
to becomeX+1
next time that crate changes. However, automating this logic is deeply complex. We haven't currently implemented this and some crates get stuck on the wrong version, requiring manual intervention to move them forwards.Automating semver:
Instead I think we want something simpler that rougly fits these requirements:
The text was updated successfully, but these errors were encountered: