-
Notifications
You must be signed in to change notification settings - Fork 0
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
Release "workflow" for @cubing projects #3
Comments
Thanks for filing this, I've been hoping to implement a process for this for a long time!
That's definitely not the case, we have a few projects that sometimes have a dozen or more commits to I'll have to take a closer look at those links, but I'm definitely agreed that:
I think the most "common" approach using the GitHub UI is to create a release by clicking in the GitHub releases page for the repo, but I think this is a worse approach than something integrated with package versioning and publication. Regarding versioning semantics: In practice, I think semantic versioning would cause the fewest complications (and it's effectively what we've been using for a very long time). Footnotes
|
Additional things: Scoped tokensSomething that came up in conversation with @jfly: if we use GitHub Actions to publish, I would like to insist that each project has its own token that is scoped to just that project when possible. In particular, I would be okay creating these tokens by hand in the short-term, but I don't want it to be easy to use a token with overly broad permissions by accident (failing to add restrictions) or on purpose (e.g. when rushing to fix an issue). Best would be to have a tool for developers to generate and upload these tokens without any room for human mistakes. Related packagesWe have some related packages that are commonly published together. In particular, when we release
I think the simplest approach would be for the There are also other situations like:
DeploymentsMoved to: #4 DNSMoved to: #5 |
IMO, this does not seem like a good reason not to release on every change to
This is a good reason.
I agree on the visual noise issue. I believe that changesets (implemented by knope, but the concept comes from https://github.com/changesets/changesets) might be a nice alternative to conventional commits. Instead of putting weird keywords in your commit messages, you document your changes in changeset files, which tooling converts into a "next release number" and a changelog.
For the record, it is common for convention commits to include a parenthesized "scope".
Are you familiar with Knope/release-please's solutions to this? See:
I prefer the preview workflow more than the release button approach:
I believe this is a pretty common pattern these days, especially in the JS/Rust ecosystem. For example, see Knope's docs on Releasing multiple packages.
I don't think this would be an issue with any of the tools mentioned above. Definitely should try it out.
At first glance, this smells like an antipattern to me. Perhaps these things should live in a monorepo? That said, I'm sure we can figure something out here.
There are some interesting thoughts here, which I'm super down to discuss, but I think we're getting out of scope. Let's keep this issue about picking a release workflow we're happy with (and ideally a tool that implements that workflow). IMO, the actual "getting stuff deployed to npm.js/crates.io/GH pages/Dreamhost" is an important, but separate problem. |
Sounds good, agreed with the updated scope/title. I don't want to lose track of the deployment topic, though, so I'll remove that from above and put it in a new issue! |
Also: neat, didn't realize that! TIL, thanks! (I guess I've been so fussed by the visual noise that I developed warning fatigue and never really picked up on that.) |
I guess my implicit reason here was "this interacts badly with other ecosystems if we published on every commit to
Oooh, this is the first I'm hearing of this idea, I love it! (Assuming that it can be done without notification churn for maintainers.)
Ooh, very encouragning!
In principle, I kind of agree. That's how (In particular, I would still like to split "Twizzle the branded app that is designed be a few parts of |
Today, releasing @cubing projects requires running scripts on a developer's laptop. This is error-prone, and we don't always do it correctly. See cubing/icons#143 (comment).
We do have some tooling to generate github releases for commits that appear to have version tags: https://github.com/cubing/actions-workflows/blob/02f6b937ac2a350970b0aa47b30e1acb4ec038ad/.github/workflows/publish-github-release.yaml
For my personal open source projects, releasing every time
main
changes is sufficient. My understanding is that this would be sufficient for all @cubing projects at their current level of activity/maturity. @lgarron, feel free to disagree.I am familiar with a few tools in the Conventional Commits* ecosystem:
package.json
with all your plugins).*Note: I don't actually love Conventional Commits, but I am sold on the fact that they automate releasing (no human needs to be involved to pick a "next version" number). Another way to get humans out of the loop is CalVer (which I personally prefer to semver).
The text was updated successfully, but these errors were encountered: