Current section
9 Versions
Jump to
Current section
9 Versions
Compare versions
13
files changed
+93
additions
-29
deletions
| @@ -0,0 +1,25 @@ | |
| 1 | + # Changelog |
| 2 | + |
| 3 | + ## 0.1.5 |
| 4 | + * [mix mate.build] added new build-only command |
| 5 | + * [StartRelease] fixed bash script to do a real restart |
| 6 | + * [test] added way to test Docker driver on CI |
| 7 | + |
| 8 | + ## 0.1.4 |
| 9 | + * [Driver.SSH] fixed bug with multiple deploy hosts |
| 10 | + * [test] updated test and typespecs |
| 11 | + |
| 12 | + ## 0.1.3 |
| 13 | + * [Driver.Local] added localhost driver |
| 14 | + * [mix mate.init] added `--local` option for localhost |
| 15 | + |
| 16 | + ## 0.1.2 |
| 17 | + * [Driver.Docker] added docker driver |
| 18 | + * [mix mate.init] added `--docker` option for docker usage |
| 19 | + |
| 20 | + ## 0.1.1 |
| 21 | + * [tests] updated typespecs and added dialyzer |
| 22 | + * [doc] updated docs |
| 23 | + |
| 24 | + ## 0.1.0 |
| 25 | + * the first release |
| @@ -20,7 +20,7 @@ The documentation for `mate` can be found on [hexdocs.pm/mate](https://hexdocs.p | |
| 20 20 | ```elixir |
| 21 21 | def deps do |
| 22 22 | [ |
| 23 | - {:mate, "~> 0.1.4", only: :dev} |
| 23 | + {:mate, "~> 0.1.5", only: :dev} |
| 24 24 | ] |
| 25 25 | end |
| 26 26 | ``` |
| @@ -5,13 +5,13 @@ | |
| 5 5 | {<<"files">>, |
| 6 6 | [<<"lib">>,<<"lib/mate.ex">>,<<"lib/mix">>,<<"lib/mix/tasks">>, |
| 7 7 | <<"lib/mix/tasks/mate.deploy.ex">>,<<"lib/mix/tasks/mate.init.ex">>, |
| 8 | - <<"lib/mix/tasks/mate.ex">>,<<"lib/mate">>,<<"lib/mate/remote.ex">>, |
| 9 | - <<"lib/mate/pipeline">>,<<"lib/mate/pipeline/step.ex">>, |
| 10 | - <<"lib/mate/session.ex">>,<<"lib/mate/driver">>, |
| 11 | - <<"lib/mate/driver/local.ex">>,<<"lib/mate/driver/docker.ex">>, |
| 12 | - <<"lib/mate/driver/test.ex">>,<<"lib/mate/driver/ssh.ex">>, |
| 13 | - <<"lib/mate/config.ex">>,<<"lib/mate/driver.ex">>,<<"lib/mate/steps">>, |
| 14 | - <<"lib/mate/steps/deploy">>, |
| 8 | + <<"lib/mix/tasks/mate.ex">>,<<"lib/mix/tasks/mate.build.ex">>, |
| 9 | + <<"lib/mate">>,<<"lib/mate/remote.ex">>,<<"lib/mate/pipeline">>, |
| 10 | + <<"lib/mate/pipeline/step.ex">>,<<"lib/mate/session.ex">>, |
| 11 | + <<"lib/mate/driver">>,<<"lib/mate/driver/local.ex">>, |
| 12 | + <<"lib/mate/driver/docker.ex">>,<<"lib/mate/driver/test.ex">>, |
| 13 | + <<"lib/mate/driver/ssh.ex">>,<<"lib/mate/config.ex">>, |
| 14 | + <<"lib/mate/driver.ex">>,<<"lib/mate/steps">>,<<"lib/mate/steps/deploy">>, |
| 15 15 | <<"lib/mate/steps/deploy/copy_to_deploy_host.ex">>, |
| 16 16 | <<"lib/mate/steps/deploy/start_release.ex">>, |
| 17 17 | <<"lib/mate/steps/deploy/unarchive_release.ex">>,<<"lib/mate/steps/build">>, |
| @@ -29,16 +29,11 @@ | |
| 29 29 | <<"lib/mate/steps/build/copy_to_storage.ex">>, |
| 30 30 | <<"lib/mate/steps/build/npm_build.ex">>, |
| 31 31 | <<"lib/mate/steps/build/verify_git.ex">>,<<"lib/mate/helpers.ex">>, |
| 32 | - <<"lib/mate/utils.ex">>,<<"lib/mate/pipeline.ex">>,<<"priv">>, |
| 33 | - <<"priv/plts">>, |
| 34 | - <<"priv/plts/dialyxir_erlang-24.0_elixir-1.12.1_deps-dev.plt">>, |
| 35 | - <<"priv/plts/README.md">>,<<"priv/plts/dialyxir_erlang-24.0.plt">>, |
| 36 | - <<"priv/plts/dialyxir_erlang-24.0_elixir-1.12.1_deps-dev.plt.hash">>, |
| 37 | - <<"priv/plts/dialyxir_erlang-24.0_elixir-1.12.1.plt">>, |
| 32 | + <<"lib/mate/utils.ex">>,<<"lib/mate/pipeline.ex">>, |
| 38 33 | <<"priv/run-wrapper.sh">>,<<".formatter.exs">>,<<"mix.exs">>, |
| 39 | - <<"README.md">>,<<"LICENSE.md">>]}. |
| 34 | + <<"CHANGELOG.md">>,<<"README.md">>,<<"LICENSE.md">>]}. |
| 40 35 | {<<"licenses">>,[<<"MIT">>]}. |
| 41 36 | {<<"links">>,[{<<"GitHub">>,<<"https://github.com/maxvw/mate">>}]}. |
| 42 37 | {<<"name">>,<<"mate">>}. |
| 43 38 | {<<"requirements">>,[]}. |
| 44 | - {<<"version">>,<<"0.1.4">>}. |
| 39 | + {<<"version">>,<<"0.1.5">>}. |
| @@ -8,12 +8,20 @@ defmodule Mate.Step.StartRelease do | |
| 8 8 | #!/usr/bin/env bash |
| 9 9 | set -euo pipefail |
| 10 10 | cd "#{remote.release_path}" |
| 11 | - current_pid=$(bin/#{otp_app} pid || echo "0") |
| 12 | - if [[ $current_pid == "0" ]]; then |
| 13 | - bin/#{otp_app} daemon |
| 14 | - else |
| 15 | - bin/#{otp_app} restart |
| 16 | - fi; |
| 11 | + |
| 12 | + # attempt to stop |
| 13 | + bin/#{otp_app} stop || true |
| 14 | + for i in {1..20}; do |
| 15 | + bin/#{otp_app} pid >/dev/null 2>&1 || break || : |
| 16 | + sleep 1 |
| 17 | + done |
| 18 | + |
| 19 | + # attempt to start |
| 20 | + bin/#{otp_app} daemon |
| 21 | + for i in {1..20}; do |
| 22 | + bin/#{otp_app} pid >/dev/null 2>&1 && break || : |
| 23 | + sleep 1 |
| 24 | + done |
| 17 25 | """ |
| 18 26 | |
| 19 27 | with {:error, error} <- remote_script(session, script), |
| @@ -0,0 +1,39 @@ | |
| 1 | + defmodule Mix.Tasks.Mate.Build do |
| 2 | + alias Mate.Session |
| 3 | + alias Mate.Pipeline |
| 4 | + |
| 5 | + use Mix.Task |
| 6 | + |
| 7 | + @shortdoc "Builds the release archive for the current commit of your application" |
| 8 | + |
| 9 | + @switches [ |
| 10 | + verbose: [:integer, :count] |
| 11 | + ] |
| 12 | + |
| 13 | + @aliases [ |
| 14 | + v: :verbose |
| 15 | + ] |
| 16 | + |
| 17 | + @moduledoc """ |
| 18 | + Builds a new release only, no deploying. |
| 19 | + |
| 20 | + ## Command line options |
| 21 | + |
| 22 | + * `-v`, `--verbose` - increases verbosity level (more output!) |
| 23 | + |
| 24 | + """ |
| 25 | + |
| 26 | + @doc false |
| 27 | + def run(args) do |
| 28 | + {opts, argv} = OptionParser.parse!(args, strict: @switches, aliases: @aliases) |
| 29 | + verbosity = Keyword.get(opts, :verbose, 0) |
| 30 | + |
| 31 | + config = Mate.Config.read!(".mate.exs") |
| 32 | + remote = Mate.Config.find_remote!(config, List.first(argv)) |
| 33 | + |
| 34 | + Mix.shell().info(["Starting build on", " ", :bright, to_string(remote.id)]) |
| 35 | + |
| 36 | + build_session = Session.new(config, remote: remote, verbosity: verbosity) |
| 37 | + Pipeline.run(build_session) |
| 38 | + end |
| 39 | + end |
Loading more files…