ProductPromotion
Logo

Elixir

made by https://0x3d.site

GitHub - miros/exreleasy: ⛔️ DEPRECATED A very simple tool for releasing elixir applications
⛔️ DEPRECATED A very simple tool for releasing elixir applications - miros/exreleasy
Visit Site

GitHub - miros/exreleasy: ⛔️ DEPRECATED A very simple tool for releasing elixir applications

GitHub - miros/exreleasy: ⛔️ DEPRECATED A very simple tool for releasing elixir applications

⛔️ DEPRECATED

This tool is deprecated. Please, use native mix releases (added in elixir 1.9.0) https://hexdocs.pm/mix/Mix.Tasks.Release.html

Exreleasy

A minimal tool for releasing (packaging and hot updating) Elixir applications.

Standard Erlang/Elixir release tools generally attempt to generate a self contained package which contains bootup scripts, VM arguments, shell scripts for launching nodes in the system, appup files, etc.

To the contrary, exreleasy tries to untie developer's hands and decouple release activities.

This tool allows to separately:

  • bundle an application and Erlang/Elixir with a single mix command and create wrapper scripts for running mix/iex;
  • generate a draft for an appup file for migrating from any existing release to another one;
  • perfom a hot code reload for a running node.

This is often required nowadays when we have special tools for each task, for example:

  • deliver application code with Ansible, SaltStack or some other orchestration tool;
  • launch nodes with Systemd generating units with an orchestration tool;
  • perform maintenance tasks like running migrations or code reload with an orchestration tool.

Credit for the idea goes to savonarola.

Installation

  1. Add exreleasy to your list of dependencies in mix.exs:
def deps do
  [{:exreleasy, "~> 0.4.0"}]
end

Usage

To bundle Erlang/Elixir inside your project:

mix exreleasy.localize

This will create ./release directory with Erlang/Elixir and wrapper scripts:

./release/binstubs/mix
./release/binstubs/iex
./release/binstubs/iex_mix
./release/binstubs/erl
./release/binstubs/elixir

To make a release:

mix exreleasy.release v0.0.1

This will create ./release/archive/v0.0.1.tar.gz archive with your project (including ./release directory)

To hot reload your code:

  • Step 1

Generate appup file for all applications of your project.

mix exreleasy.create_appup --old-release ./release/archive/v0.0.1.tar.gz --new-release ./release/archive/v0.0.2.tar.gz --appup ./appup_1_to_2

Alternatively use release/exreleasy.json from old release (fetch it from production maybe)

mix exreleasy.create_appup --old-release /path/to/old/manifest.json --new-release ./release/archive/v0.0.2.tar.gz --appup ./appup_1_to_2
  • Step 2

Edit appup file to include only modules you want to touch Available instructions - http://erlang.org/doc/man/appup.html

vim ./appup_1_to_2
  • Step 3

Apply appup file to release (creates individual appup files in ebin directories)

mix exreleasy.apply_appup --release ./release/archive/v0.0.2.tar.gz --appup ./appup_1_to_2

Alternatively Steps 1-3 can be automated using provided script

./deps/exreleasy/priv/prepare_hot_release prod /path/to/old/release.tar.gz /path/to/new/release.tar.gz
  • Step 4

Deploy new code to server

  • Step 5

Reload code

env MIX_ENV=prod ./release/binstubs/mix exreleasy.hot_reload --node your_node@your_host --cookie your_cookie --new-path path_to_new_code --reload-configs

Articles
to learn more about the elixir concepts.

Resources
which are currently available to browse on.

mail [email protected] to add your project or resources here 🔥.

FAQ's
to know more about the topic.

mail [email protected] to add your project or resources here 🔥.

Queries
or most google FAQ's about Elixir.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory