ShipIt: Automate Hex package publishing and avoid common mistakes

Hello! I published a Hex package that helps with publishing Hex packages :slight_smile: [1]

It automates these steps:

  • ensure there are no uncommited changes in the working tree
  • ensure current branch matches the given branch
  • ensure local branch is in sync with remote branch
  • ensure project version in mix.exs matches the given version
  • ensure CHANGELOG.md contains an entry for the version
  • ensure LICENSE.md file is present
  • create a git tag and push it
  • publish to Hex.pm and HexDocs.pm

For example, to publish 1.0.0 version of your project off the master branch you’d run:

$ mix shipit master 1.0.0

The easiest way to install it is to run: $ mix archive.install hex shipit

See it on GitHub: https://github.com/wojtekmach/shipit

Any feedback is very appreciated!

[1] using the package itself!

10 Likes

Hah, that is very useful, I use similar things elsewhere, nice to have one in Elixir. :slight_smile:

Awesome! For sure it will help to avoid re-publising packages with missing files :raised_hands:

Looks great! :thumbsup: