Current section

9 Versions

Jump to

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…