MarkBind / markbind

MarkBind is a tool for generating content-heavy websites from source files in Markdown format
https://markbind.org/
MIT License
135 stars 124 forks source link

Automated release changelog #1713

Closed ang-zeyu closed 1 year ago

ang-zeyu commented 2 years ago

Filler issue for project board sticking.

Ups for research / discussion 😀

tlylt commented 2 years ago

If I may chip in 😅 (for discussion)

I recently explored using semantic-release with commitizen, as shared in a course by Kent C. Dodds and found the releasing workflow to be very manageable (together with the use of github action to automate it). It generates a changelog based on the commit messages. Example from my sample project: image

Not too sure how well it plays with lerna though.

ang-zeyu commented 2 years ago

Sounds interesting! I would be ok with imposing the conventional commits spec here as well since its rather well known.

Not too sure how well it plays with lerna though.

Wonder if there's a lighter weight package / option inside to generate just the changelog, I think we would want to stick with one tool for managing packages / dependencies in general to avoid possible dependency issues / differences

tlylt commented 2 years ago

Thought this might be helpful https://github.com/release-drafter/release-drafter

tlylt commented 2 years ago

Thought this might be helpful release-drafter/release-drafter

  • will automate some parts of the release note based on the custom-defined template
  • make release less painful by working on the draft and updating as PRs are merged in

Hi @jonahtanjz, I thought it might be a good time to bump this:) Wonder if you think we should try using the above-mentioned action to help with our release workflow? (Given that you just did a release yesterday, do you think this will be helpful?)

jonahtanjz commented 2 years ago

@tlylt Sure this would definitely be helpful in keeping track of the changelog as PRs are merged instead of consolidating it at each release. We can try it out first for the next release and see how it goes :)

tlylt commented 2 years ago

@tlylt Sure this would definitely be helpful in keeping track of the changelog as PRs are merged instead of consolidating it at each release. We can try it out first for the next release and see how it goes :)

Okay I have experimented with the release-drafter action a little, and here's my finding/plan moving forward: (@MarkBind/active-devs seeking comments/suggestions before I put up a PR):

Release-drafter action will be used to help automate part of the release process. It can

To help with the above, maintainers need to ensure that before merging a PR:

Finally before an actual release:

Some notes on the release action's behavior:

A related change that I intend to propose:

ong6 commented 2 years ago

Okay I have experimented with the release-drafter action a little, and here's my finding/plan moving forward: (@MarkBind/active-devs seeking comments/suggestions before I put up a PR):

LGTM! From what I understand this would make showing the change log of breaking changes much simpler.

A few questions I have are:

  1. Having the PR in multiple categories can be quite confusing and unnecessary. Is there a way to ignore anything thats not in XXX category?
  2. Does this work better than Github's built in releases and is it easy to configure (since that may be simpler to use and easier to configure)
tlylt commented 2 years ago
  1. Having the PR in multiple categories can be quite confusing and unnecessary. Is there a way to ignore anything thats not in XXX category?

This is totally up to us, so if we don't want to put them in multiple categories, we can simply label the PR with one category related label.

  1. Does this work better than Github's built in releases and is it easy to configure (since that may be simpler to use and easier to configure)

Seems like GitHub's default release note has a way to configure and do something similar, such as categorizing PRs base on labels, but it lacks additional functionality (eg resolving version) that are provided by the GitHub Action. I think either is fine for the task of helping to categorize PRs by label

ong6 commented 2 years ago

@tlylt Very nice, I think we can try release drafter then!

raysonkoh commented 1 year ago

I think this tool looks very promising and if it can make the release process simpler we should definitely give it a try.

I'm curious how does the release drafter know which PRs to choose for the next release? Does it choose it based on the milestone assigned to the PR or it just accumulates all the PRs that have been merged since the last release?

Also is there any flexibility in modifying the semver version that it calculates?

tlylt commented 1 year ago

I'm curious how does the release drafter know which PRs to choose for the next release? Does it choose it based on the milestone assigned to the PR or it just accumulates all the PRs that have been merged since the last release?

Hmm, are you saying you want to cherry pick some merged PRs to form a release? I think at the moment what we have here is that all PRs yet to be released will be included in the release, and we are drafting for just the next release (so just one release). Could be possible by configuring the tool, but I'm not sure if we are going to draft multiple pending releases.

Also is there any flexibility in modifying the semver version that it calculates?

If we need to tweak the final version, just edit the release note. The release will be a draft so it's not public.

raysonkoh commented 1 year ago

Hmm, are you saying you want to cherry pick some merged PRs to form a release?

Yes I was thinking about multiple pending releases. Would be good if the tool can support this, but not an issue for now as you mentioned.

If we need to tweak the final version, just edit the release note.

Great 👍

ang-zeyu commented 1 year ago

Should this be closed for now? (https://github.com/MarkBind/markbind/pull/2172#issuecomment-1472225940)