lessless

lessless

Thoughts about Edeliver 2.0

Hi guys,

Since for some strange reason people are still using Edeliver I suppose we can talk about what we want it truly to be.
During 2018 two things happen that in my opinion gives us more flexibility to reshape in a more user-friendly tool:

  • Distillery added appups
  • Edeliver supports only Mix now

Thus now it’s possible to focus on the core deployment tasks:

  • Building release
  • Storing it somewhere
  • Copying it to a designated servers
  • Updating/upgrading an app

From this perspective there are two questions that should be solved:

  • What are alternatives to bash scripting?
  • How we decouple environments and deployment targets?
    As you can now Edeliver supports two environments - staging and production. That’s a very basic scenario. Here is a latest example where it simply doesn’t fit https://github.com/edeliver/edeliver/pull/301
    I guess what we really want is to specify an environment and where (which hosts group) we want release to be deployed. Maybe also where it should be built.
  • What deployment guarantees do we want to achieve?
    This is mostly about deployment to a multiple machines. What should happen if deploy fails? Do we want a retry or fallback mechanism for it? This might not be something of an immediate need but keeping it mind can be very useful since it can affect library design.

Please notice, that I’m not talking about deprecating Edeliver due to the respect to the amount of work that was invested into it and since it’s still being used despite being in decay state.

Let’s get a good discussion folks :slight_smile:

Most Liked

OvermindDL1

OvermindDL1

Not always, bash scripts are succinct, readable, and load fast. ^.^

sanswork

sanswork

I feel like every reply to this post could be split off to a new thread debating bash.

I am using edeliver at the moment and honestly it just works and I don’t really have any complaints which is why I continue to use it. I don’t use upgrades always releases. Actually only complaint is the verbosity of the commands required to do a release.

mix edeliver build release && mix edeliver deploy release to production && mix edeliver restart production && mix edeliver migrate production

That is kind of a drag and I tend to just create a one liner shell script in each new project called like deploy with that in it.

Dream changes/questions(all are low priority):

  • I would like a way to signal that a build should be moved direct from the build server to the target hosts without downloading locally in the middle.
  • Interface with platforms to allow the dynamic generation of host lists based off like server tags or something.

Failed deploys should rollback in my opinion.

lessless

lessless

I guess we can rewrite most of the BASH scripts through the Mix Tasks

rodrigues

rodrigues

Agree with @sanswork. It just works, and its setup is simple. I don’t use a lot of it, but it helps quite a bit. I wrap edeliver steps together with our own in one mix APP.deploy task.

These are not necessarily things that really need to become part of edeliver, but I think some of it could simplify deployment:

  1. Have one single command that does the full release cycle (from build until target restart)
  2. Easily make release building to happen in a local Docker (just reference a dockerfile and edeliver handles the rest?)
  3. Delegate admin commands to other tools such as systemd (start/stop/…)
  4. Enforce git tags matching Mixfile version (optional)
PragTob

PragTob

Honest question: What are prople using instead of edeliver? Pure distillery and some custom scripts to scp things and start releases? Docker? Bootleg?

We started with edeliver and while it never was my favorite and I believe it has some bugs (not generating a new vm.args for instance) it still seems like the easiest proven tool to get into.

We have a custom bash script wrapping it to make it a full one command to deploy. While I’m not super happy with it, it works and I’m unsure what to replace it with for what benefits.

Where Next?

Popular in Libraries Top

danschultzer
In short Plug n’ play OAuth 2.0 provider library. Just set up a resource owner schema with Ecto (your user schema), install the dependen...
New
josevalim
Hi everyone, We would like to announce that Plataformatec is working on a new MySQL driver called MyXQL. Our goal is to eventually integ...
New
RobertDober
Earmark is a pure-Elixir Markdown converter. It is intended to be used as a library (just call Earmark.as_html), but can also be used as...
239 11851 134
New
marcuslankenau
I feel kind of stuck with the absence of a proper xml library for Elixir. Currently I use SweetXML which was ok for me more or less to pa...
New
tmbb
I’ve been working on two packages (not on hex.pm yet) to build admin interfaces for phoenix apps: bureaucrat - which contains a bunch ...
New
deadtrickster
I’ve just released stable versions of my Prometheus Elixir libs: Elixir client [docs]; Ecto collector [docs]; Plugs instrumenter/Export...
New
seancribbs
Today I released a new dialyzer Mix task as the dialyzex package! At the time we started writing this task, the existing dialyzer integra...
New
josevalim
EDIT: since Ecto 3.0 final version is out, this post was amended to use the final versions in the instructions below. Hi everyone, We a...
New
benlime
LiveMotion enables high performance animations declared on the server and run on the client. As a follow up to my previous thread A libr...
New
gabrielpoca
Hello everyone! I want to share with you something that I’m really proud of: https://stillstatic.io/ Still is a static site builder for...
New

Other popular topics Top

lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
yurko
Here are few pieces of (common) Linux knowledge that we use for reasonably small one server apps. We use Ubuntu but this should work for ...
New
dotdotdotPaul
Okay, I'm having a heck of a time trying to figure out how to best handle the validation of belongs_to associations in Ecto. I'm sure I'...
New
yawaramin
In the Dialyzer docs ( http://erlang.org/doc/man/dialyzer.html#requesting-or-suppressing-warnings-in-source-files ), there is a way to tu...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 45766 226
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 49522 488
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New
magnetic
Hey :wave:t3: Elixir community, I’ve been learning Elixir, and working on some side projects. My editor of choice is VSCode, and althoug...
New

Sub Categories:

We're in Beta

About us Mission Statement