I have been doing the CHANGELOG.md + GitHub "Generate release notes" on the 
Releases page for a while. Workflow that has worked for me.

In PR
1. Clear PR title
2. Must update the CHANGELOG.md file under "Unreleased section"
3. (Optional) Bump the version in the `mix.exs`

Release
1. Visit the Release page
2. Create a tag with a format of `v + semver` (v2.4.5)
3. Click in "Generate release notes"
4. (Optional) Release using CI to Hex

On Thursday, January 19, 2023 at 9:26:18 PM UTC-5 ma...@jonrowe.co.uk wrote:

> As a maintainer (mostly for a Ruby library) I’d love to see a github 
> action that automatically updates releases based on a github tag and 
> extracts the changelog from the manual file, as thats much easier to 
> maintain when working on PRs / branches. So I guess consider that a plus 
> one for manual files / tags, with additional automated tooling around 
> updating GitHub etc.
>
> On Thu, 19 Jan 2023, at 7:27 PM, Austin Ziegler wrote:
>
> I mostly agree with Andrea. The benefit to a tool (especially one that 
> provides conventional-commits-like support without the header mistake that 
> conventional-commits makes) is that it could gather the commit messages 
> into a meaningful thing to assist in writing the changelog. Then again, one 
> can do this pretty easily with `git log LAST_TAG.. --format=%B --reverse | 
> pbcopy`, which I *also* do quite often in order to update a multi-commit PR 
> message.
>
> I’ve heavily automated the production of the changelog for exactly one of 
> my projects and to some degree, it’s over-automated, but I have had no time 
> to pull it back into something more reasonable.
>
> -a
>
> On Thu, Jan 19, 2023 at 2:18 AM <an.le...@gmail.com> wrote:
>
> Hey Jonatan,
>
> Thanks for starting this discussion.
>
> I'm personally a fan of having changes described and available in 
> CHANGELOG.md files at the root of each repository. This has the big 
> benefit of not having to rely on an external service (GitHub) in order to 
> check information about changes: all the information is available and 
> self-contained in the repository. For this reason, in all of the 
> repositories I'm involved with, we also use Git tags to tag releases.
>
> In general, for each release, we do something like this:
>
>
>    - Update version in mix.exs
>    - Go through commits since the last Git tag (that is, the last 
>    release) and put together a changelog entry. I personally find it 
> important 
>    to do this manually and not in an automated way, since changelog entries 
>    are generally significantly shorter and more information-dense than just a 
>    list of commit messages.
>    - Create a commit with the message being something like "Release 
>    vX.Y.Z"
>    - Create the vX.Y.Z Git tag and push it to GitHub.
>    - Release on Hex.
>    
>
> This workflow should check the boxes you mention and also the ones I 
> mention:
>
>    - It leaves information about changes in the repository, making the 
>    repository self contained.
>    - It's discoverable by tools, since tools can look for Git tags to 
>    know about releases.
>    
>
> Elixir itself is not a great example to follow, because it has a more 
> complex release process than probably any library out there.
>
> Last but not least, I'm not 100% convinced that we do need to standardize 
> the community on an approach.
>
> Thoughts?
>
> Andrea
>
> On 13 Jan 2023, at 17:12, Jonatan Männchen <jon...@maennchen.ch> wrote:
>
> Cool library, I definitely have to check that one out for some of the 
> internal projects I'm working on.
>
> I did think about Conventional Commits when writing this proposal but 
> decided to only include the publishing mechanism and not the contents of 
> the changelog / release notes.
> The reason for this is, that something like Conventional Commits is a big 
> change in the development / workflows of the affected projects.
>
> If all involved parties are open to this massive change, it would open the 
> doors for a lot of pre-existing tooling like your library or Googles 
> release please.
>
> I'm not convinced myself that Conventional Commits are the way to go for 
> projects like those. The main issue I have with the convention is that 
> commits don't necessarily describe the intention of changes well. One could 
> for example make 5 commits about a specific topic but describe it as one 
> change in the release notes.
> On Friday, January 13, 2023 at 3:32:41 PM UTC+1 zachary....@gmail.com 
> wrote:
>
> Forgot the most relevant point: it can automatically include the generated 
> release notes in the git tag that is generated which translates to release 
> notes when pushed.
>
>
>
>
>
> On Fri, Jan 13 2023 at 9:31 AM, Zach Daniel <zachary....@gmail.com> 
> wrote: 
>
> My library git_ops https://github.com/zachdaniel/git_ops is a native 
> elixir solution for managing a change log with tags for releases. Im sure 
> it could be improved, but it’s a solid foundation that a lot of people are 
> using today. Plus, the conventional commit format is a well known already 
> specified pattern: https://www.conventionalcommits.org/en/v1.0.0/
>
> It provides a mix task that automatically determines the next version 
> based on the types of commits, and writes any relevant commits to a 
> changelog file.
>
> In standardizing the changelog practices, you could also standardize the 
> commit/next version practices.
>
>
>
> On Fri, Jan 13 2023 at 6:28 AM, Jonatan Männchen <jon...@maennchen.ch> 
> wrote: 
>
> Hi Everyone,
>
> I had a discussion with Andrea (@whatyouhide) about how to handle 
> changelogs in elixir itself as well as core libraries.The way how those 
> libraries implement changelogs is important both to auto-discovery of 
> changes with auto updating tools like renovate and also because it is a 
> place for guidance / inspiration for independent library creators.
>
> This proposal is only about the mechanism of publishing changelogs. It is 
> not about the contents.
>
> *Current state:*
>
>    - Core
>    - Elixir
>       - per minor release: CHANGELOG.md file
>          - GitHub release is automatically created
>          - Artifacts are stored in release
>          - manual copy of text into GitHub release
>          - ExDoc
>       - global CHANGELOG.md file
>          - manual copy of entry into GitHub releases
>          - GenStage
>       - global CHANGELOG.md file
>          - no GitHub releases
>          - ElixirMake
>       - global CHANGELOG.md file
>          - no GitHub releases
>          - Phoenix
>    - per minor release CHANGELOG.md
>       - some GitHub releases were created, not up-to-date
>       - Tzdata
>    - global CHANGELOG.md
>       - no GitHub releases
>       - Jason
>    - global CHANGELOG.md
>       - manual GitHub releases
>       - Plug Cowboy
>    - per major version CHANGELOG.md
>       - manual GitHub releases
>       - Telemetry
>    - global CHANGELOG.md
>       - outdated GitHub releases
>       
>
> *Possibilities for standardization: *(i can think of, reply with others 
> if you think something is missing)
>
>    - Only CHANGELOG.md
>    - Changelogs are written by hand and not published via GitHub releases
>       - Drawbacks
>       - Hard to automatically discover changes (for example Renovate Bot)
>          - not as well integrated in GitHub itself as GitHub releases
>          - does not support extra artifacts like binaries
>          - Advantage
>       - simple
>          - no extra manual labor
>          - CHANGELOG.md + GitHub releases manual copy
>    - On release the CHANGELOG.md file is extended with no information. 
>       After the release the notes are copied over into a new GitHub release 
>       manually.
>       - Drawbacks
>       - Needs extra manual labor
>          - Entries can be missing because people forgot to do it
>          - CHANGELOG.md & Automated GitHub release note
>    - On release the CHANGELOG.md file is extended and a GitHub workflow 
>       will parse the CHANGELOG.md and use the text to create a release.
>       - Drawbacks
>       - Introduces some complexity & maintenance by adding CI workflows
>          - GitHub releases & automatic appending of CHANGELOG.md file 
>    with release notes
>    - To release a person would create a GitHub release and a workflow 
>       would automatically prepend the changes to the CHANGELOG.md file
>       - Drawbacks
>       - Same as the option before
>          - Workflow is more complicated because it would need to commit 
>          code by itself
>          - Imposes a more rigid process on the release workflow while 
>          other options are more flexible.
>          - Only GitHub releases
>    - Changes are only published via GitHub releases
>       - Drawbacks
>       - not portable if the community ever migrates away from GitHub
>          - the CHANGELOG.md file does either not exist in published 
>          libraries or would need to be generated on demand out of the releases
>          
> *My personal favorite solution so far:*
>
> CHANGELOG.md & Automated GitHub release note
>
> The reason for that preference is that it is relatively easy to automate 
> and that it offers the best if both worlds.
>
> *Implementation*
>
> I’m happy to provide a shared action as well as PRs for all core libraries.
>
> Such a shared action could possibly be hosted at ErlEF since it could be a 
> „community recommendation“.
>
> Thanks & Best,
> Jonatan
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to elixir-lang-co...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/elixir-lang-core/7744dfd3-e94e-45ed-bb10-ca6d5c732550n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/elixir-lang-core/7744dfd3-e94e-45ed-bb10-ca6d5c732550n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to elixir-lang-co...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/elixir-lang-core/603e9638-34bf-4cb6-ae75-c308322d6fbfn%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/elixir-lang-core/603e9638-34bf-4cb6-ae75-c308322d6fbfn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to elixir-lang-co...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/elixir-lang-core/591D839A-C8EE-40F4-88AB-8B1E5AF59A71%40gmail.com
>  
> <https://groups.google.com/d/msgid/elixir-lang-core/591D839A-C8EE-40F4-88AB-8B1E5AF59A71%40gmail.com?utm_medium=email&utm_source=footer>
> .
>
>
>
> -- 
> Austin Ziegler • halos...@gmail.com • aus...@halostatue.ca
> http://www.halostatue.ca/http://twitter.com/halostatue
>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to elixir-lang-co...@googlegroups.com.
>
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/elixir-lang-core/CAJ4ekQsn8Akf8x%2Bam7oZ3s6d_4FJg_EuJnO%2BSUdog5vXjxgJ%3Dw%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/elixir-lang-core/CAJ4ekQsn8Akf8x%2Bam7oZ3s6d_4FJg_EuJnO%2BSUdog5vXjxgJ%3Dw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/254d7621-150b-4369-84aa-cc581edf3ba1n%40googlegroups.com.

Reply via email to