Conventional Commits are a simple standard for commit messages in Git that propose a consistent format for all commits. This consistency facilitates automation tasks such as version control, changelog generation, and tracking changes.
The format of Conventional Commits follows a structured pattern, typically as:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Type (Required): Describes the type of change in the commit. Standard types include:
Scope (Optional): Describes the section of the code or application affected, such as a module or component.
fix(auth): corrected password hashing algorithm
Description (Required): A short, concise description of the change, written in the imperative form (e.g., “add feature” instead of “added feature”).
Body (Optional): A more detailed description of the change, providing additional context or technical details.
Footer (Optional): Used for notes about breaking changes or references to issues or tickets.
BREAKING CHANGE: remove deprecated authentication method
feat(parser): add ability to parse arrays
The parser now supports parsing arrays into lists.
This allows arrays to be passed as arguments to methods.
BREAKING CHANGE: Arrays are now parsed differently
Conventional Commits are especially helpful in projects using SemVer (Semantic Versioning) because they enable automatic versioning based on commit types.
"Release Please" is a tool developed by Google to automate various aspects of the software release process on GitHub. It automatically generates changelogs, creates release pull requests (PRs), and updates version numbers based on your project's commit history. The tool uses Conventional Commits, which are standardized commit message formats (like feat:
, fix:
, or feat!:
for breaking changes) to determine how to bump the version and update release notes.
Once it's set up, the tool runs whenever new commits are pushed to the main branch. It creates a PR that includes a changelog and an updated version number, which can be merged to trigger an official GitHub release. This streamlines the release process by eliminating manual versioning and changelog creation. However, it doesn't handle tasks like publishing to package managers.
"Release Please" is typically integrated as a GitHub Action, making it suitable for continuous integration environments and automating release management.