Release Please: automation of your GitHub releases | Padok (2025)

  • Home
  • Blog
  • DevOps
  • Automate your GitHub Releases with...

Posted on 3 November 2022.

Releasing your projects is a crucial part of the DevOps process. Here at Padok, we use Terraform modules by pinning them with Git tags. However, it can be tedious to remember to create a tag and a changelog after a change. That is why we have started using Release Please to automate our releases!

The history of your code: Git tagging and releases

Git’s version control has become a gold standard in the tech industry, as no one would want to code without being able to collaborate and keep track of their changes. However, it is possible to go beyond simple commits using Git tags. These tags can be attributed to any commit in your repository, and act as aliases for them. The point is that you can more easily go back to a certain point in time by specifying a developer-friendly version number than a long hexadecimal string.

Not only is Git tagging really useful in a closed-source environment, but it is also crucial in open-source development. As more and more projects use a trunk-based Git flow, end users need to know at which point the provided code is considered ready for use. This is why GitHub, and other major Git platforms, allow developers to create releases.

As GitHub puts it, releases are software iterations meant for deployment and distribution, considered to be usable and not currently being developed. As an example, a release for version v1.3.0 of a project can differ from the v1.2.4 release because it includes new, tested features as well as some bug fixes, according to the Semantic Versioning (or SemVer) standard.

Releases are really useful for software deployment, however manually creating them can be tedious, and you would have to write your changelogs yourself. This is why Google created Release Please, a tool that automatically does all of this for you!

Automatic releases with Release Please

Release Please is a tool that creates “Release Pull Requests” which contain changelogs that are updated with your commits, provided that they follow the Conventional Commits specification (which has become somewhat of an industry standard). Your commits must have prefixes that describe their purpose.

The most important prefixes you should have in mind are:

  • fix: which represents bug fixes and will result in a SemVer patch;
  • feat: which represents a new feature and will result in a SemVer minor;
  • feat!:, or fix!:, refactor!:, etc., which represent a breaking change (indicated by the !) and will result in a SemVer major.

As an example, a commit titled fix(auth): increase timeout duration will appear in your changelog as a bug fix, complete with a link to the corresponding commit.

As soon as you consider your code to be ready for a release, simply merge the PR, and you’re ready to go! Under the hood, Release Please does the following:

  • updates your changelog file (for example CHANGELOG.md) along with other language-specific files (for example package.json);
  • tags the commit with the new version number;
  • creates a GitHub Release based on the tag.

Release Please: automation of your GitHub releases | Padok (1)

Installing and using Release Please

Release Please can be installed as a GitHub Action. To do so in a Terraform project’s GitHub repo, simply create a workflow file such as .github/workflows/release-please.yml and paste the following code in it:

# .github/workflows/release-please.ymlname: release-pleaseon: push: branches: - mainjobs: release-please: runs-on: ubuntu-latest steps: - uses: google-github-actions/release-please-action@v3 with: release-type: terraform-module # Multiple release types are supported default-branch: main

Release Please will then execute every time a commit is pushed to the main branch. Depending on your project’s programming language, you can define a different release type, such as helm, go, node, python...

As soon as this file is merged to the main branch, Release Please will start creating Release PRs, with the label “autorelease: pending”, and automatically updated version numbers and changelogs.

Release Please: automation of your GitHub releases | Padok (2)

Merging one will create the corresponding release.

Release Please: automation of your GitHub releases | Padok (3)

Congratulations, you’ve automated your GitHub releases! 🎉

While the Release Please GitHub action has good default configuration values, it can be further configured: as an example, you can set it to create its Release PRs as forks for public open-source projects. You can check out the full config on the GitHub Action’s repo.

Conclusion

Setting up Release Please in your GitHub repos is quite simple and allows you to easily create new releases, with great-looking changelogs and coherent version numbers. We’ve set up Release Please in most of our internal repos alongside Renovate, a tool that automatically upgrades package dependencies. However, while the latter works on many Git hosting services, the former only works on GitHub. If you work using GitLab, you might want to check out semantic-release 😉

Release Please: automation of your GitHub releases | Padok (2025)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Rev. Leonie Wyman

Last Updated:

Views: 6699

Rating: 4.9 / 5 (79 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Rev. Leonie Wyman

Birthday: 1993-07-01

Address: Suite 763 6272 Lang Bypass, New Xochitlport, VT 72704-3308

Phone: +22014484519944

Job: Banking Officer

Hobby: Sailing, Gaming, Basketball, Calligraphy, Mycology, Astronomy, Juggling

Introduction: My name is Rev. Leonie Wyman, I am a colorful, tasty, splendid, fair, witty, gorgeous, splendid person who loves writing and wants to share my knowledge and understanding with you.