Skip to content
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

Adoption of Changelog Enforcer GitHub Action in Autoware Repositories #4079

Open
3 of 8 tasks
xmfcx opened this issue Dec 21, 2023 · 5 comments
Open
3 of 8 tasks

Adoption of Changelog Enforcer GitHub Action in Autoware Repositories #4079

xmfcx opened this issue Dec 21, 2023 · 5 comments
Assignees
Labels
type:ci Continuous Integration (CI) processes and testing. type:documentation Creating or refining documentation. type:meta Discussions or changes that are about the project's processes, policies, or overall structure.

Comments

@xmfcx
Copy link
Contributor

xmfcx commented Dec 21, 2023

Checklist

  • I've read the contribution guidelines.
  • I've searched other issues and no duplicate issues were found.
  • I've agreed with the maintainers that I can plan this task.

Description

To improve the management and tracking of changes across the Autoware repositories, I propose the adoption of the Changelog Enforcer GitHub Action.
This action will ensure that every pull request includes a changelog update, helping us maintain a clear and consistent record of changes.

We will also enforce the https://keepachangelog.com/en/1.0.0/ format.

We aim to start this with the autoware.universe repository and, if successful, expand to other repositories like autoware_launch and autoware_msgs.

Purpose

The primary goals of implementing this action are:

  1. Ensuring Consistency: Each PR should contribute to the changelog, making it easier to track changes over time.
  2. Improving Transparency: Clear documentation of changes enhances transparency for both developers and users.
  3. Simplifying Release Process: With quarterly releases planned using CalVer, a well-maintained changelog will streamline the release process.

Possible approaches

  1. Gradual Implementation: Start with autoware.universe, assess the effectiveness, and then proceed to other repositories.
  2. Automate Changelog Entries: Utilize the Changelog Enforcer to automate the inclusion of changelog updates in PRs.
  3. Quarterly Sync with CalVer: Align the changelog updates with our quarterly CalVer release cycle, ensuring that each release has a comprehensive changelog.
  4. Centralized Changelog for Main Autoware Folder: Compile changes from the child repositories' changelogs into the main Autoware folder's changelog for each release.

Definition of done

  • Agreement on the adoption of the Changelog Enforcer GitHub Action.
  • Successful implementation and testing in the autoware.universe repository.
  • Development of a clear guideline for contributors on how to update the changelog.
  • Establishment of a process for syncing the main Autoware folder's changelog with child repositories.
  • Review and adjust the process after the first quarterly release cycle.

cc. @mitsudome-r @yukkysaito @isamu-takagi @TakaHoribe

@xmfcx xmfcx added type:documentation Creating or refining documentation. type:meta Discussions or changes that are about the project's processes, policies, or overall structure. type:ci Continuous Integration (CI) processes and testing. labels Dec 21, 2023
@xmfcx xmfcx self-assigned this Dec 21, 2023
@xmfcx
Copy link
Contributor Author

xmfcx commented Dec 21, 2023

github-changelog-generator

There is also an automated way of doing it using github-changelog-generator.

Github Releases

There is also Github Releases.

I will investigate these options more and also share my findings. Please don't hesitate to add your inputs.


Edit:


semantic-release

https://github.com/semantic-release/semantic-release#-semantic-release

semantic-release automates the whole package release workflow including: determining the next version number, generating the release notes, and publishing the package.

clerk

This is my favorite so far. 💖

Clerk ensures that release notes can be generated from PRs by looking for a release note in the PR description. You can add a note to your PR by adding a single line to its description beginning with notes: .

Example Changelog: https://github.com/electron/electron/releases

Example PR: electron/electron#40536

This looks like the best mix of automation and manual provision. The developers don't need to touch the CHANGELOG.md file.

Developers just use the commit messages with the Conventional Commit style as usual and just add Release Notes section for each PR and rest is automated.

@xmfcx
Copy link
Contributor Author

xmfcx commented Dec 22, 2023

https://github.com/googleapis/release-please#release-please

Release Please automates CHANGELOG generation, the creation of GitHub releases, and version bumps for your projects.

https://github.com/google-github-actions/release-please-action

Example CHANGELOG: https://github.com/googleapis/gapic-generator/blob/master/CHANGELOG.md

@TakaHoribe
Copy link
Contributor

@xmfcx I strongly support this activity. Moreover, it should be linked with future releases of Autoware.

One question: is it required to modify the changelog file in all PRs? Or, the changelog is updated automatically from the PR's description?

@xmfcx
Copy link
Contributor Author

xmfcx commented Dec 25, 2023

@TakaHoribe thank you!

is it required to modify the changelog file in all PRs? Or, the changelog is updated automatically from the PR's description?

For the https://github.com/marketplace/actions/changelog-enforcer mentioned in the first issue, you must manually edit the changelog.

But if we use https://github.com/googleapis/release-please#release-please then it is completely automated (from Commit Message.

It generates ChangeLogs like this: https://github.com/googleapis/gapic-generator/blob/master/CHANGELOG.md

release-please seems very popular and also maintained by Google(?) for now it is the most promising option. And it requires the least additional effort from the contributors.

@shmpwk
Copy link
Contributor

shmpwk commented Jan 1, 2024

@xmfcx Interesting investigation!
Actually, we TIER IV has already automated changelog here.
They are created by generate-changelog CI which wraps git-cliff.
I'm curious if changelog-enforcer and other changelog generator are better than our current automated changelog.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:ci Continuous Integration (CI) processes and testing. type:documentation Creating or refining documentation. type:meta Discussions or changes that are about the project's processes, policies, or overall structure.
Projects
None yet
Development

No branches or pull requests

3 participants