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

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
pkrawat1
Hey guyz We at @aviabird are working on a payment library in elixir/phoenix. We are targeting March 2018 to add 56 Gateways to it. Have...
New
deadtrickster
I’ve just released stable versions of my Prometheus Elixir libs: Elixir client [docs]; Ecto collector [docs]; Plugs instrumenter/Export...
New
woylie
I released Doggo, a collection of unstyled Phoenix components. Features Unstyled Phoenix components. Storybook that can be added to...
New
nikokozak
Hello all, I’ve been working on Svonix - a library for quickly integrating Svelte components into Phoenix views. It’s a much-needed succ...
New
kelvinst
Hey everyone! Well, we made this lib a while ago and now we decided to finally go out and public with it! It’s a tool for creating and m...
New
cjen07
parameterized pipe in elixir: |n> edit: negative index in |n> and mixed usage with |> are supported example: use ParamP...
New
tfwright
After working on it for a couple of months and using it in production for most of that time, today I’ve released LiveAdmin, a LiveView ba...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 42633 214
New

Other popular topics Top

pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
ycv005
I have followed this StackOverflow post to install the specific version of Erlang. And When I am running mix ecto.setup then getting fol...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
fireproofsocks
I’m working on defining a simple Ecto schema for a table (in PostGres), but I don’t see where I can define a column as NOT NULL. Conside...
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
script
If I have a string “1000 cfu/ml” . I want to remove the characters and / and space . So the string is like this "1000" What is the ...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list....
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New

Sub Categories:

We're in Beta

About us Mission Statement