bitwalker
General discussions and wiki for Elixir deployment tools - feel free to edit in any useful info.
Tools
The primary tool for building releases of Erlang applications. Can work with Elixir applications as well with some additional effort. Does not auto-generate appups for hot upgrades/downgrades. Natively supported in erlang.mk, rebar2, and rebar3.
Now deprecated in favor of Distillery, this has been the predominant tool for building releases of Elixir applications. It is Mix-only, auto-generates hot upgrades/downgrades, and ultimately is an automation wrapper around Relx.
The latest iteration of release tooling for Elixir applications, it is written entirely in Elixir, and is tightly integrated with Mix, allowing it to further simplify the process of building releases. It is a replacement for exrm, and while similar, it’s ergonomics are significantly better, is more extensible, and is considerably faster than exrm.
Based on Deliver, Edeliver builds on Distillery/Exrm/Relx’s release generation and offers much more complete automation of the entire deployment process, from building releases, generating upgrades, deploying to one or more hosts, and more.
Similar to Edeliver. Supports Distillery.
Simple deployment and server automation for Elixir. Bootleg is a simple set of commands that attempt to simplify building and deploying elixir applications. The goal of the project is to provide an extensible framework that can support many different deploy scenarios with one common set of commands.
Blog Posts
- Deploying Elixir applications with Edeliver (June 7, 2016) - Plataformatec
- A way to deal with environment variables (May 17, 2016) - Plataformatec, linked from the edeliver post, but worth calling out
- How We Deploy Elixir Apps (June 14, 2016) - switching from Capistrano to Edeliver
- OTP clustering within EC2 (March 3, 2016)
- Distillery vs. Exrm vs. Relx (July 21, 2016)
- Making Database Changes in a Deployed Phoenix App (August 9, 2016)
- Serving Phoenix and Continuous Deployment
- How I built my own Heroku for Phoenix Apps (August 23, 2016)
- Deploying Phoenix on Ubuntu with Gatling (December 30, 2016)
- Is Phoenix deployment really that hard? (August 2, 2016)
Talks
- Edeliver @ EmpEx (June 10, 2016)
Trending in Wikis
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixir-ls
- #elixirconf-us
- #ai
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
AstonJ
What about using tools (that are popular in other languages) that we may already be familiar with, such as Capistrano or Mina? I’m interested in hearing what others are using…
Linuus
I’m also interested in edeliver. Are there any more in-depth writeups about it somewhere? The Platafromatec one is quite scarce. I’m not 100% sure how I want to handle ENV variables.
In another project I worked on we did it like this:
When deploying we used capistrano and when running
cap staging deployit looked for a staging release built for the current commit, if it found one it uploaded it to the server and started it. If there were no release it had probably failed on our CI so the script printed an error message and bailed.The nice thing about this was that the releases was built with the correct environment configs directly on our CI system (no need to worry about the ENV vars on the hosts). The downside would be that we didn’t deploy the EXACT same release on staging and prod.
Handling secrets is always an annoyance…
With edeliver you can link different configs (eg. sys.config) but then you need to install this on your servers somehow. Also, each developer needs the config if he/she needs to add a config and deploy it.
How do you manage that?
gregvaughn
I enjoyed this talk at EmpEx about edeliver https://www.youtube.com/watch?v=H686MDn4Lo8
Linuus
Seems like a great talk! Thanks!
uranther
I added How We Deploy Elixir Apps which was linked from Elixir Radar.
ckhrysze
Not strictly deployment per se, but exrm seems relevant here, but thus far not mentioned directly (I haven’t watched the linked talk yet).
I’m working on a ci pipeline for a new app now, and wanting a way to save and share what I’ve learned is what brought me to this thread. I’ll edit the lead post with a few of my findings, but wanted to share a bit of my process.
I have recently history with python and boto3 as well as aws, so thats the platform I’m targeting. My first pass has been fairly simple scripts using the python fabric tool. I’d like to make an elixir based process via mix tasks at some point, but haven’t had time to see what is already out there nor to write my own.
dgamidov
Distillery vs. Exrm vs. Relx
OvermindDL1
Oh that looks fascinating, and it looks like it should fix the couple of annoyances that exrm had (thanks to relx). ‘edeliver’ has major issues for us here (since we use both windows and linux and its windows support was… well, crap…) so we’ve ignored it.
Morganjackson
New blog post by Sam Corcos: Making Database Changes in a Deployed Phoenix App
swennemans
A few links I came across:
Serving Phoenix and Continuous Deployment
How I Built My Own Heroku for Phoenix Apps: Part 1
The second link introduces a deplyment tool, called Gatling