choojs / discuss

🎭 – Discuss project organization, initiatives, and anything else!
Apache License 2.0
8 stars 1 forks source link

changelog bot #4

Open yoshuawuyts opened 7 years ago

yoshuawuyts commented 7 years ago

I was thinking it might be useful to create a GH changelog bot. Whenever a GH release is pushed (e.g. npm tag) it'd look at all the commits that were part of it, and create a changelog as the body of the github release. This would make it easier to look at what changed between versions, credit contributors, and improve the overall quality of the project.

It'd be super neat if someone would be willing to take this on! Any ideas on how to further improve this / approach this would be very welcome!

Stuff that'd probably be good to list in a changelog

Stuff that probably shouldn't be part of these automated changelogs

Stuff that'd be neat if we could pull off

Final thoughts

Before closing this out, I thought it might be fun to create an example changelog of what I was thinking, for the latest Choo release. (Sorry in advance for the mentions, @silawrenc :P)


2017-09-09, Version 6.4.1

This release contains 1 commit, was released by @yoshuawuyts, and comes 3 days after the last release. Many people came together to create Choo v6.4.1. We couldn’t have done it without all of you. Thanks!

Commits

First Time Contributors

Contributors

jakeburden commented 7 years ago

This looks verrrryyy cool. I wonder if something like sematic-release could be used as a starting point.

yoshuawuyts commented 7 years ago

Some more reference material:

ungoldman commented 7 years ago

Here's some other prior art to consider:

Some folks believe a good change log is written, not generated:

Others believe change logs and releases can be fully automated by being methodical about git commits:

For generating change logs and releases from git commits, I prefer standard-version to semantic-release, mainly because of semantic-release's decision to never update the version in package.json -- which to me means version history is inaccurate, and if in the future I switch to another release strategy, my package.json is broken.

I've used both of the methods above and find each to be adequate. One thing they both do is keep a change log file in git history. Though the releases page on github is useful and I understand the appeal of just using that instead of maintaining an actual change log file, I've found a file as the official record to be preferable. Github releases are a commercial platform feature independent of git, and they are not accessible by cloning the repo and would be lost if the platform dies. For the same reason that I think keeping version changes in git history is a good idea, I would say keeping change log in git history is a good idea.

dpaez commented 7 years ago

Hello everybody 👋

Just to add something to the conversation, at GEUT we made this CLI (it can be used programmatically too) based on the ideas behind keepachangelog, it's a tool called chan.

It primarily helps you to maintain a changelog and it can be extended using a plugins mechanism. You can check it out, maybe it helps. 👍