exrm 0,0,1,0,0,0 travis-ci

Automatically generate a release for your Elixir project!

2 years after MIT

Elixir Release Manager

Status Hex.pm Version Coverage Status

The full documentation for Exrm is located here.

Thanks to @tylerflint for the original Makefile, rel.config, and runner script which inspired this project!


This project is being replaced by Distillery.

I would highly recommend using it moving forward, as most of my efforts will be put towards that project from now on. I will still accept PRs, and do required maintenance for the near future, but at some point in the future I will be flipping the switch.


You can build a release with the release task:

  • mix release

This task constructs the complete release for you. The output is sent to rel/<project>. To see what flags you can pass to this task, use mix help release.

One really cool thing you can do is mix release --dev. This will symlink your application's code into the release, allowing you to make code changes, recompile with MIX_ENV=prod mix compile, and rerun your release with rel/<project>/bin/<project> console to see the changes. Being able to rapidly test and tweak your release like this goes a long way to making the release process less tedious!

  • mix release.clean [--implode]

Without args, this will clean up the release corresponding to the current project version.

With --implode, all releases, configuration, generated tools, etc., will be cleaned up, leaving your project directory the same as if exrm had never been run. This is a destructive operation, as you can't get your releases back unless they were source-controlled, so exrm will ask you for confirmation before proceeding with the cleanup.

NOTE: Umbrella projects work a little differently. Each sub-project is built into it's own release, but contains all of it's dependencies

Getting Started

This project's goal is to make releases with Elixir projects a breeze. It is composed of a mix task, and build files required to successfully take your Elixir project and perform a release build, and a simplified configuration mechanism which integrates with your current configuration and makes it easy for your operations group to configure the release once deployed. All you have to do to get started is the following:

Add exrm as a dependency to your project

  defp deps do
    [{:exrm, "~> x.x.x"}]


There is a simple API to build plugins with - it allows the plugin developer to add additional steps to the release process. You can read more about that here.

You can find plugins others have worked on by searching for "exrm" in hex.pm.

Here's a non-exhaustive list you might want to try out:


This project is MIT licensed. Please see the LICENSE.md file for more details.

Related Repositories



Deployment for Elixir and Erlang ...



Ansible role to setup server with Elixir & Postgres to deploy apps ...



Minimal Erlang/Elixir docker images with Alpine Linux ...



List of tech resources future me and other Javascript/Ruby/Python/Elixir/Elm dev ...



Create a rpm for your elixir release with ease ...

Top Contributors

bitwalker martin-langhoff lexmag alco umatomba asaaki MSch HashNuke mobileoverlord arjan tmjoen aaronjensen eproxus 0xAX evax lowks shankardevy vishnevskiy tsharju surik phanimahesh whatyouhide arcz damonkelley liveforeverx ericmj hayesgm guilleiguaran adam12 jarednorman


-   1.0.8 zip tar
-   1.0.6 zip tar
-   1.0.5 zip tar
-   1.0.4 zip tar
-   1.0.3 zip tar
-   1.0.2 zip tar
-   1.0.1 zip tar
-   1.0.0 zip tar
-   1.0.0-rc8 zip tar
-   1.0.0-rc7 zip tar
-   1.0.0-rc6 zip tar
-   1.0.0-rc5 zip tar
-   1.0.0-rc4 zip tar
-   1.0.0-rc3 zip tar
-   0.19.9 zip tar
-   0.19.8 zip tar
-   0.19.7 zip tar
-   0.19.6 zip tar
-   0.19.5 zip tar
-   0.19.4 zip tar
-   0.19.3 zip tar
-   0.19.2 zip tar
-   0.19.1 zip tar
-   0.19.0 zip tar
-   0.18.8 zip tar
-   0.18.7 zip tar
-   0.18.6 zip tar
-   0.18.5 zip tar
-   0.18.4 zip tar
-   0.18.3 zip tar