Expublish - Automates semantic release versioning and best practices for elixir packages

Expublish provides a mix task that helps package maintainers keeping a clean, meaningful and trackable version history. It follows semantic versioning conventions while executing a series of best practices before releasing a new package version.

Those include verifying a clean git working directory, passing tests, a new git commit and tag as well as a new curated change log entry.

The mix task makes it straight forward for contributors or colleagues to get their changes out of the door, not having to manually perform a list of steps that might vary from project to project and are easy to get wrong.

Use it from a CI server to continuously release new package versions, especially useful when your repository receives frequent updates.

Things like a ready github action might follow in the future.

Github

8 Likes

This looks pretty neat! Can you clarify if mix expublish.minor (as an example command) will publish to hex.pm?

Yes it would. One can control the tasks behaviour with a bunch of different options like --disable-publish, --disable-push, of course --dry-run and more.

The docs are a bit all over the place but most of the things should be in there. All kind of feedback and ideas are appreciated here or in a github issue! Thanks @axelson !

1 Like

This is really cool, I was just thinking about building something like this!

1 Like

2.5.0 - 28. Feb 2021 22:29

  • Support updating project version in mix.exs module attribute
  • Support --version-file option considered when updating project version