-
Notifications
You must be signed in to change notification settings - Fork 1k
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
This crate hasn't been released in almost 3 months #3350
Comments
cc @JohnTitor |
@fasterthanlime Unfortunately, the release process is in fact not automated at all, and requires someone with publish permissions on the crate (anyone in the A subset of the folks on There are some plans for better automation in the works, now that https://blog.rust-lang.org/2023/06/23/improved-api-tokens-for-crates-io.html is available. Meanwhile, I'll get a release out. |
I'd greatly appreciate that, thanks!
Would there be interest in automating it? Is that something I can help with? I feel like this would be a good use of the rest of my 2023 Rust foundation grant (if not no big deal, plenty of other projects need help). |
@fasterthanlime I'd suggest coordinating with infra on that to check in (as I think others might also be looking at it and may already have some work in that direction). I've certainly heard various comments to the effect that many people (for many different crates) would be interested in some form of automated make-a-publish-happen workflow (which would need to be determined/proposed). |
Is the best way to reach "infra" the #t-infra stream on zulip? |
I'd expect that to be the best starting point to discuss automating crate publishes, yeah. |
@joshtriplett thanks. Re the 0.2.148 release: I believe it's missing a Git tag / GitHub release with a changelog, see previous releases here: https://github.com/rust-lang/libc/releases |
@fasterthanlime There's a signed tag, just not a release with release notes. cc @JohnTitor or others for adding the GitHub release (also not automated). |
Hey folks, Re the automated releases, there are many ways to do this — I've been using https://github.com/mgeisler/rust-release-gh-action for my own libraries. It works like this:
What I like about this setup is that it automates the tedious bits, but leaves room for me to adjust a release as needed. Because the state of the release is in its own branch, I can fix typos in READMEs and changelogs as needed and have the whole thing tested with the normal CI setup. I like that the Git tag is added on the code after running I know there are other tools for automating this. I feel that cargo-release is lacking the two-step process. Looking at the related tools on their page, I see release-pr Action, which looks close in spirit to my setup. Maybe the ideas here could be useful to someone — they're fairly easy to reimplement or extend to your needs. |
Yeah, I'd also say that the initiating step for releasing libraries should not be automated since there are a bunch of manual judgements that go into making the call whether something is ready to release (or needs release at all) and if this crate ever hits 1.0 (which I hope it tries for), minor vs patch versioning. The toolchain has effectively clockwork scheduled releases but a lot of work is put into making that feasible; I don't think other libraries have put in sufficient work to make that a thing. Not just libc, I'm talking about the bulk of the ecosystem. That said, I'm only talking about the initiating step, the process described by @mgeisler still has manual initiation and automated everything-else which seems great. (certainly something I may look into for my own projects since I hate doing the release two-step) Definitely also having better documentation on who is in charge of a release and how to get their attention is also going to help. There are many places that one might say something to attempt to get a rust team's attention and it's never clear which is the one that team actually pays attention to. |
This sounds like an interesting experiment to run against one of the crates maintained by "the rust libs team". Maybe a smaller one than libc at first? Or maybe set everything up but it publishes to "libc-automated-releases-tryouts" on crates.io or something? The sticking points here are, I'd imagine:
One cautious course of action could be to set up a dummy crate repo somewhere else, so folks currently involved with releasing "official rust libs crates" can play around with the workflow @mgeisler suggested (and/or other similar workflows), making them confident it'll work for bigger/real crates. How does that sound? |
One thing my little contraption lacks is tests... partly because I don't know how to test publish a package. Now that I search for it, I found https://staging.crates.io/ — is that a place where one can test-publish crates? Note that the main point of my comment was to float the idea used here (separation between preparing a release and actually publishing it, always using reversible actions until the final |
Just following up on this, although it'd probably be best to move that conversation somewhere else in the near future. I've tried a couple "crate release automation" solutions since we last spoke, and settled on https://release-plz.ieni.dev by @MarcoIeni. Here's an example release PR: rustls/ktls#35 (automatically opened + updated, step 1 in the two-step release process). You can see that I used to maintain the changelog manually and that release-plz took over: https://github.com/hapsoc/ktls/blame/main/CHANGELOG.md - of course I could've made the effort to edit it before merging the "release" PR, which I'm assuming is what will happen on "rust libs" crates. The releases themselves also contain changelog items: https://github.com/hapsoc/ktls/releases And they're automatically published to crates.io: https://crates.io/crates/ktls/versions release-plz also uses cargo-semver (and conventional commits, if you use them) to determine if the version bump should be major/minor/patch. As far as I can tell, release-plz (an actual Rust executable running in CI, comes with its own GitHub Action) is best-of-class. The changelog management part might be the sticking point here, also "proving it's fine to run this binary with a token that's able to publish an important crate such as libc", but I've briefly spoken with @MarcoIeni and they are interested in supporting the needs of the libs team. I'm happy to act as a facilitator (or not, if none is needed!) to have that happen. It probably involves heading over to Zulip (my nemesis!) but before I do, can I get a quick vibe check from @JohnTitor and @joshtriplett (+ feel free to tag whoever else should be looking at this) |
I actually saw this recently after you tweeted about it — it looks really nice and from skimming the docs, I think it has a similar philosophy to what I've been using. So I'm planning on trying it for my own crates too 😄 |
#3287 was merged on July 16, which is great.
We needed it to implement additional functionality in the nix crate. But the nix crate obviously cannot have a "git dependency" on libc, it needs to point at something released on crates.io.
(This is all in service of https://lib.rs/crates/ktls which uses some APIs I guess nobody else thought to include in the libc crate because they're a bit niche),
I have no idea who maintains the
libc
crate, if there's a release schedule, who to talk to about this.I understand reviewing PRs takes time but.. surely releasing whatever's in the default branch is somewhat automated? Or at least quick enough?
Let me know how to proceed, I'm at a complete loss here.
The text was updated successfully, but these errors were encountered: