Imbo Releaser is a configurable CLI application designed to simplify the release process for projects hosted on GitHub.
When creating a release, Imbo Releaser will:
- Create a new Git tag and a corresponding GitHub release for a selected branch
- Generate release notes based on Conventional Commits since the previous release on that branch
Install as a development dependency using Composer:
composer require --dev imbo/releaserOr install globally:
composer global require imbo/releaserImbo Releaser is designed to be run from the command line. It makes certain assumptions about the layout of your repository, but it is highly configurable and can be used in a wide variety of scenarios. See the Configuration section below for more details.
The key points regarding how Imbo Releaser works are as follows:
- Git branches are named
main(for development of the latest major version), andX.x(e.g.1.x) for maintenance of older major versions. TheX.xbranches may contain an optionalvprefix (e.g.v1.x). - Git tags are named
X.Y.Z(e.g.1.0.0). Tags may also contain an optionalvprefix (e.g.v1.0.0). - Only pull requests are used with regards to the generated release notes and calculating the next version to release. Commits pushed directly to branches are ignored. The pull request titles must follow the Conventional Commits specification.
- Release notes are attached to the GitHub release and annotated tags, and are not committed to the repository.
If the above assumptions match your project, you can simply run imbo-releaser from the command line and follow the prompts to generate a new release.
If you need to adjust one or more assumptions, you can customize the behavior of Imbo Releaser by providing a configuration file. The configuration file is a PHP file named .imbo-releaser.php or .imbo-releaser.dist.php, and must exist in the directory where you run the imbo-releaser command.
The file must return an instance of the ImboReleaser\ConfigInterface interface. If you only need to customize a few aspects of the default behavior, you can extend the ImboReleaser\Config class and override only the parts you need.
MIT, see LICENSE.