Packages
mandrag
0.1.1
1.0.0-pre.0
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.4
0.2.1
retired
0.2.0
retired
0.1.1
0.1.0
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
Build and Deploy Elixir releases to Kubernetes via Helm
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/mandrag.deploy.ex
defmodule Mix.Tasks.Mandrag.Deploy do
use Mix.Task
import Mandrag
@shortdoc "Deploys an exrm release."
def run(_) do
# Silence output unless :debug
if output_level < 2, do: System.put_env("MIX_QUIET", "true")
initial_deploy? |> deploy
end
defp deploy(true) do
message "Starting initial deploy."
Mix.Task.run "mandrag.prepare"
Mix.Task.run "mandrag.build"
Mix.Task.run "mandrag.start"
end
defp deploy(false) do
message "Starting deploy."
Mix.Task.run "mandrag.build"
if Code.ensure_loaded?(Ecto), do: update_db
location |> rel_dir? |> upgrade
end
defp upgrade(true), do: Mix.Task.run "mandrag.upgrade.hot"
defp upgrade(false), do: Mix.Task.run "mandrag.upgrade.cold"
defp update_db do
case location do
:local -> Mix.Task.run "ecto.migrate", []
:remote -> ssh "cd #{name} && MIX_ENV=#{Mix.env} mix ecto.migrate"
end
end
defp initial_deploy?, do: ssh("ls #{name} &>/dev/null") != 0
defp rel_dir?(:remote), do: ssh("ls #{name}/rel/* %>/dev/null") == 0
defp rel_dir?(:local), do: Mix.Shell.IO.cmd("ls rel/* %>/dev/null") == 0
end