Hello, Elixir community!
I’m excited to introduce a new tool that aims to streamline version management and release processes for Elixir projects: semantic-release-hex
.
Disclaimers
Before we dive in, I want to clarify that semantic-release-hex
is a JavaScript library designed to enhance version management and release processes in Elixir projects. While it’s not an Elixir library per se, its integration with Elixir projects can bring the power and simplicity of semantic-release
to your workflow.
I also want to mention that although it’s only been two weeks, I’ve recently been invited to the semantic-release
organization. The reason I’m developing this library is unrelated to my membership in the organization and is solely motivated by my complete trust and utter admiration for that project, which I’ve been using for more than 6 years in all of my projects, both personal and professional.*
Why?
In the course of developing a SaaS project with Elixir & Phoenix, I encountered the challenge of automating version management while adhering to best practices. Initially being a JavaScript developer, I turned to the reliable semantic-release
tool but found it lacking in Elixir integration. This led me to create semantic-release-hex
.
semantic-release
features
- Determining the next version number
- Generating release notes & updating the changelog file
- Creating a git tag
- Publishing GitHub/GitLab releases
- Commenting on released Pull Requests/Issues
semantic-release-hex
features
- Updating the version in
mix.exs
semantic-release-hex
roadmap
- Updating the version in
README
- Updating the version in
Mix.install/2
scripts - Distributed as a
hex
package (similar totailwind
) - Publishing to Hex
Benefits
- Fully automated release
- Enforce Semantic Versioning specification
- New features and fixes are immediately available to users
- Notify maintainers and users of new releases
- Use formalized commit message convention to document changes in the codebase
- Integrate with your continuous integration workflow
- Avoid potential errors associated with manual releases
- Simple and reusable configuration via shareable configurations
Trying it out
I’ve set up a demo repository to showcase what that would look like in an Elixir project: semantic-release-hex-demo
. Feel free to explore its content, commit history, or even fork it to test things out, as it’s what it’s meant for.
You will also find detailed instructions on how to set it up in your own Elixir project on the main repository.
I’m eager to hear your thoughts, answer any questions, and discuss how semantic-release-hex
can enhance your Elixir projects!
Also, if you’d like to share your views on features currently being specified/implemented, don’t hesitate to visit the Discussions/Issues for feature requests.
Thank you for reading
Acknowledgements
Special thanks to @Eiji and @D4no0 for their invaluable feedback!