alpha_omega 1.4.1 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/alpha_omega/config/deploy_challenge.rb +12 -6
- data/lib/alpha_omega/config/deploy_notify.rb +9 -4
- data/lib/alpha_omega/config/deploy_perf.rb +25 -6
- data/lib/alpha_omega/deploy.rb +17 -7
- data/libexec/_ao +89 -95
- data/libexec/_sub +1 -0
- data/libexec/aoh-activate +1 -1
- data/libexec/aoh-check +1 -1
- data/libexec/aoh-compare +1 -1
- data/libexec/aoh-debug +1 -1
- data/libexec/aoh-deploy +1 -1
- data/libexec/aoh-dist +1 -1
- data/libexec/aoh-dna +1 -1
- data/libexec/aoh-hosts +1 -1
- data/libexec/aoh-init +37 -9
- data/libexec/aoh-lock +2 -2
- data/libexec/aoh-migrate +1 -1
- data/libexec/aoh-proxy +3 -3
- data/libexec/aoh-release +1 -1
- data/libexec/aoh-restart +1 -1
- data/libexec/aoh-rollback +1 -1
- data/libexec/aoh-shell +1 -1
- data/libexec/aoh-stage +1 -1
- data/libexec/aoh-task +1 -1
- data/libexec/aoh-unlock +2 -2
- data/libexec/aohelper +14 -0
- metadata +4 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.4.
|
1
|
+
1.4.2
|
@@ -4,14 +4,20 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
|
|
4
4
|
namespace :deploy do
|
5
5
|
task :challenge do
|
6
6
|
if dna["app_env"] == "production"
|
7
|
-
|
8
|
-
|
7
|
+
unless ENV['FLAGS_tag'] && !(ENV['FLAGS_tag'].empty? || ENV['FLAGS_tag'] == "HEAD")
|
8
|
+
puts "Did not specify a tag for production via -t vX.Y.Z"
|
9
9
|
abort
|
10
|
-
else
|
11
|
-
set :reviewed, who
|
12
|
-
sleep 3
|
13
10
|
end
|
14
|
-
|
11
|
+
|
12
|
+
unless ENV['FLAGS_reviewer'] && active_path_name == current_path_name
|
13
|
+
a, b = rand(10), rand(10)
|
14
|
+
if Capistrano::CLI.ui.ask(" -- WARNING: Accessing production, please think: #{a} + #{b} = ").downcase.strip.to_i != (a + b)
|
15
|
+
abort
|
16
|
+
else
|
17
|
+
sleep(3)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
15
21
|
end
|
16
22
|
end
|
17
23
|
|
@@ -3,10 +3,11 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
|
|
3
3
|
namespace :notify do
|
4
4
|
task :default do
|
5
5
|
if $deploy["notify"]
|
6
|
-
|
6
|
+
email if $deploy["notify"].member? "email"
|
7
|
+
|
8
|
+
unless skip_notifications
|
7
9
|
airbrake if $deploy["notify"].member? "airbrake"
|
8
10
|
newrelic if $deploy["notify"].member? "newrelic"
|
9
|
-
email if $deploy["notify"].member? "email"
|
10
11
|
campfire if $deploy["notify"].member? "campfire"
|
11
12
|
flowdock if $deploy["notify"].member? "flowdock"
|
12
13
|
end
|
@@ -14,7 +15,7 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
|
|
14
15
|
end
|
15
16
|
|
16
17
|
task :email do
|
17
|
-
run_locally "echo '#{notify_message}' | mail -s '#{
|
18
|
+
run_locally "echo '#{notify_message}' | mail -s '#{notify_message_abbr}' #{$deploy["notify"]["email"]["recipients"].join(" ")}"
|
18
19
|
end
|
19
20
|
|
20
21
|
task :campfire do
|
@@ -76,7 +77,11 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
|
|
76
77
|
end
|
77
78
|
|
78
79
|
def notify_message
|
79
|
-
"#{ENV['_AO_USER']} deployed #{application}
|
80
|
+
"#{ENV['_AO_USER']} deployed #{application} to #{dna['app_env']}: #{repository}: #{ENV['FLAGS_tag']} => #{current_revision}"
|
81
|
+
end
|
82
|
+
|
83
|
+
def notify_message_abbr
|
84
|
+
"#{ENV['_AO_USER']} deployed #{application} to #{dna['app_env']}: #{ENV['FLAGS_tag']}"
|
80
85
|
end
|
81
86
|
end
|
82
87
|
end
|
@@ -5,13 +5,19 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
|
|
5
5
|
order = []
|
6
6
|
|
7
7
|
on :before do
|
8
|
-
|
9
|
-
|
8
|
+
unless skip_performance
|
9
|
+
order << [:start, current_task]
|
10
|
+
start_times[current_task] = Time.now
|
11
|
+
end
|
10
12
|
end
|
11
13
|
|
12
14
|
on :after do
|
13
|
-
|
14
|
-
|
15
|
+
unless skip_performance
|
16
|
+
unless skip_performance_task == current_task
|
17
|
+
order << [:end, current_task]
|
18
|
+
end_times[current_task] = Time.now
|
19
|
+
end
|
20
|
+
end
|
15
21
|
end
|
16
22
|
|
17
23
|
config.on :exit do
|
@@ -28,7 +34,7 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
|
|
28
34
|
l " Performance Report"
|
29
35
|
l "=========================================================="
|
30
36
|
|
31
|
-
indent =
|
37
|
+
indent = 1
|
32
38
|
(order + [nil]).each_cons(2) do |payload1, payload2|
|
33
39
|
action, task = payload1
|
34
40
|
if action == :start
|
@@ -36,9 +42,22 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
|
|
36
42
|
indent += 1
|
37
43
|
else
|
38
44
|
indent -= 1
|
39
|
-
|
45
|
+
if end_times[task] && start_times[task]
|
46
|
+
l "#{".." * indent}#{task.fully_qualified_name} #{(end_times[task] - start_times[task]).to_i}s"
|
47
|
+
end
|
40
48
|
end
|
41
49
|
end
|
42
50
|
l "=========================================================="
|
43
51
|
end
|
52
|
+
|
53
|
+
namespace :deploy do
|
54
|
+
namespace :enable do
|
55
|
+
task :performance do
|
56
|
+
set :skip_performance, false
|
57
|
+
set :skip_performance_task, current_task
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
before "deploy:began", "deploy:enable:performance"
|
44
63
|
end
|
data/lib/alpha_omega/deploy.rb
CHANGED
@@ -34,10 +34,13 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
|
|
34
34
|
# =========================================================================
|
35
35
|
|
36
36
|
_cset :skip_scm, false
|
37
|
+
_cset :skip_notifications, false
|
38
|
+
_cset :skip_performance, true
|
39
|
+
_cset :skip_performance_task, ""
|
37
40
|
_cset :scm, :git
|
38
41
|
_cset :deploy_via, :checkout
|
39
42
|
_cset(:branch) { AlphaOmega.what_branch }
|
40
|
-
_cset(:revision) { source.head }
|
43
|
+
_cset(:revision) { ENV['FLAGS_tag'] || source.head }
|
41
44
|
|
42
45
|
_cset :default_shell, "/bin/bash"
|
43
46
|
_cset(:deploy_to) { "/data/#{application}" }
|
@@ -53,6 +56,7 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
|
|
53
56
|
_cset(:run_method) { fetch(:use_sudo, true) ? :sudo : :run }
|
54
57
|
|
55
58
|
_cset :last_pod, nil
|
59
|
+
_cset :success, false
|
56
60
|
|
57
61
|
_cset (:figlet) { [%x(which figlet).strip].reject {|f| !(File.executable? f)}.first || echo }
|
58
62
|
|
@@ -305,12 +309,10 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
|
|
305
309
|
task (if you want to perform the `restart' task separately).
|
306
310
|
DESC
|
307
311
|
task :update_code do
|
308
|
-
|
312
|
+
scm
|
309
313
|
bundle
|
310
|
-
|
311
|
-
|
312
|
-
dist
|
313
|
-
end
|
314
|
+
build
|
315
|
+
dist
|
314
316
|
end
|
315
317
|
|
316
318
|
task :symlink_next do
|
@@ -404,6 +406,9 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
|
|
404
406
|
task :dist do
|
405
407
|
end
|
406
408
|
|
409
|
+
task :scm do
|
410
|
+
strategy.deploy! unless skip_scm
|
411
|
+
end
|
407
412
|
|
408
413
|
desc <<-DESC
|
409
414
|
Checkpoint for various language bundlers
|
@@ -615,9 +620,14 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
|
|
615
620
|
end
|
616
621
|
end
|
617
622
|
|
618
|
-
task :
|
623
|
+
task :successful, :only => { :primary => true } do
|
624
|
+
set :success, true
|
625
|
+
run_locally"#{figlet} success | perl -pe 's{( +)}{chr(46) x length($1)}e'"
|
619
626
|
end
|
620
627
|
|
628
|
+
task :finished do
|
629
|
+
successful
|
630
|
+
end
|
621
631
|
end # :deploy
|
622
632
|
end # Capistrano::Configuration
|
623
633
|
|
data/libexec/_ao
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
#!/bin/bash
|
2
2
|
|
3
|
-
# first time, this will be empty, to trigger enforce_rvm
|
4
|
-
: ${_AO_RVM:=}
|
5
|
-
|
6
3
|
export _AO_OPT="$@"
|
7
4
|
|
8
5
|
function deploy_basename {
|
@@ -10,31 +7,6 @@ function deploy_basename {
|
|
10
7
|
echo "${cmd#aoh-}"
|
11
8
|
}
|
12
9
|
|
13
|
-
# ensure script runs under rvm
|
14
|
-
function enforce_rvm {
|
15
|
-
if [[ -n "$_AO_RVM" ]]; then
|
16
|
-
return
|
17
|
-
fi
|
18
|
-
|
19
|
-
export _AO_RVM=1
|
20
|
-
|
21
|
-
local pth_ruby_loader="${_AO_RUBY_LOADER:-}"
|
22
|
-
: ${pth_ruby_loader:=$(ryaml $_AO_HOME/config/deploy.yml ruby_loader)}
|
23
|
-
local ruby_deploy="$(ryaml $_AO_HOME/config/deploy.yml app_ruby)"
|
24
|
-
|
25
|
-
if [[ -z $pth_ruby_loader || -z $ruby_deploy ]]; then
|
26
|
-
return
|
27
|
-
fi
|
28
|
-
|
29
|
-
if [[ ! -x $pth_ruby_loader ]]; then
|
30
|
-
return
|
31
|
-
fi
|
32
|
-
|
33
|
-
exec $pth_ruby_loader $ruby_deploy "$0" "$@"
|
34
|
-
}
|
35
|
-
|
36
|
-
enforce_rvm "$@"
|
37
|
-
|
38
10
|
# define command line options:
|
39
11
|
# var name, default, description, short option
|
40
12
|
DEFINE_string "gateway" "" "deploy gateway host" "G"
|
@@ -45,6 +17,8 @@ DEFINE_string "tag" "HEAD" "tag to deploy in production" "t"
|
|
45
17
|
DEFINE_string "user" "" "app user override" "u"
|
46
18
|
DEFINE_string "group" "" "app group override" "g"
|
47
19
|
DEFINE_string "ssh_login" "" "ssh login override" "l"
|
20
|
+
DEFINE_boolean "migrations" "$FLAGS_FALSE" "run development migrations" "M"
|
21
|
+
DEFINE_string "reviewer" "" "who has reviewed the production version" "R"
|
48
22
|
|
49
23
|
# entry point
|
50
24
|
function main {
|
@@ -55,37 +29,37 @@ function main {
|
|
55
29
|
exit 1
|
56
30
|
fi
|
57
31
|
|
58
|
-
local
|
32
|
+
local nm_pod="$1" # will shift later since this could be an integration environment
|
59
33
|
if [[ "$#" = 1 ]]; then
|
60
34
|
local deploy_base="$(ryaml $_AO_HOME/config/deploy.yml deploy_base)"
|
61
35
|
if [[ -n "$deploy_base" ]]; then
|
62
|
-
local pod_shortcut="$(ryaml $HOME/.getting-started/config/pods.yml pods ${deploy_base}${
|
36
|
+
local pod_shortcut="$(ryaml $HOME/.getting-started/config/pods.yml pods ${deploy_base}${nm_pod} pod)"
|
63
37
|
if [[ -n "$pod_shortcut" ]]; then
|
64
|
-
|
65
|
-
set -- "$
|
38
|
+
nm_pod="${deploy_base}${nm_pod}"
|
39
|
+
set -- "$nm_pod"
|
66
40
|
fi
|
67
41
|
unset pod_shortcut
|
68
42
|
fi
|
69
43
|
fi
|
70
44
|
|
71
45
|
if [[ -r "$HOME/.getting-started/config/pods.yml" ]]; then
|
72
|
-
local pod_shortcut="$(ryaml $HOME/.getting-started/config/pods.yml pods $
|
46
|
+
local pod_shortcut="$(ryaml $HOME/.getting-started/config/pods.yml pods $nm_pod pod)"
|
73
47
|
if [[ -n "$pod_shortcut" ]]; then
|
74
|
-
|
48
|
+
nm_pod="$pod_shortcut"
|
75
49
|
else
|
76
50
|
shift # treat as a pod name
|
77
51
|
fi
|
78
52
|
|
79
|
-
local pod_alias="$(ryaml $HOME/.getting-started/config/pods.yml pods $
|
53
|
+
local pod_alias="$(ryaml $HOME/.getting-started/config/pods.yml pods $nm_pod alias)"
|
80
54
|
if [[ -n "$pod_alias" ]]; then
|
81
|
-
|
55
|
+
nm_pod="$pod_alias"
|
82
56
|
fi
|
83
57
|
|
84
|
-
local is_local="$(ryaml $HOME/.getting-started/config/pods.yml pods $
|
85
|
-
local hst_gateway="$(ryaml $HOME/.getting-started/config/pods.yml pods $
|
58
|
+
local is_local="$(ryaml $HOME/.getting-started/config/pods.yml pods $nm_pod local)"
|
59
|
+
local hst_gateway="$(ryaml $HOME/.getting-started/config/pods.yml pods $nm_pod gateway)"
|
86
60
|
if [[ -z "$is_local" ]]; then
|
87
61
|
if [[ -z "$hst_gateway" ]]; then
|
88
|
-
logger_fatal "$
|
62
|
+
logger_fatal "$nm_pod is not a pod name"
|
89
63
|
exit 1
|
90
64
|
fi
|
91
65
|
FLAGS_proxy="$FLAGS_TRUE"
|
@@ -93,10 +67,10 @@ function main {
|
|
93
67
|
if [[ -z "$FLAGS_chef" ]]; then
|
94
68
|
FLAGS_chef="$HOME/.getting-started"
|
95
69
|
fi
|
96
|
-
export _AO_ENV="$(ryaml $HOME/.getting-started/config/pods.yml pods $
|
70
|
+
export _AO_ENV="$(ryaml $HOME/.getting-started/config/pods.yml pods $nm_pod ao_env)"
|
97
71
|
export RAILS_ENV="$_AO_ENV"
|
98
72
|
if [[ -z "$_AO_ENV" ]]; then
|
99
|
-
_AO_ENV="$(ryaml $HOME/.getting-started/config/pods.yml pods $
|
73
|
+
_AO_ENV="$(ryaml $HOME/.getting-started/config/pods.yml pods $nm_pod env)"
|
100
74
|
fi
|
101
75
|
export _AO_SSH="$HOME/.getting-started/ssh/config"
|
102
76
|
fi
|
@@ -104,6 +78,8 @@ function main {
|
|
104
78
|
if [[ -z "$FLAGS_gateway" ]]; then
|
105
79
|
FLAGS_gateway="$hst_gateway"
|
106
80
|
fi
|
81
|
+
else
|
82
|
+
shift # not proxied, so expect full names here
|
107
83
|
fi
|
108
84
|
|
109
85
|
if [[ -n "$FLAGS_user" ]]; then
|
@@ -129,59 +105,77 @@ function main {
|
|
129
105
|
export GATEWAY="$FLAGS_gateway"
|
130
106
|
fi
|
131
107
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
logger_fatal "cannot use all or world, these are dangerous"
|
155
|
-
exit 1
|
156
|
-
;;
|
157
|
-
production)
|
158
|
-
if [[ -z "$FLAGS_tag" || "$FLAGS_tag" = "HEAD" ]]; then
|
159
|
-
case "$(deploy_basename $0)" in
|
160
|
-
hosts|debug)
|
161
|
-
true
|
162
|
-
;;
|
163
|
-
*)
|
164
|
-
logger_fatal "must specify a version using --tag"
|
165
|
-
exit 1
|
166
|
-
;;
|
167
|
-
esac
|
168
|
-
fi
|
169
|
-
;;
|
170
|
-
esac
|
171
|
-
fi
|
172
|
-
|
173
|
-
local gateway="$FLAGS_gateway"
|
174
|
-
if [[ -n "$FLAGS_ssh_login" ]]; then
|
175
|
-
gateway="${FLAGS_ssh_login}@${gateway}"
|
176
|
-
fi
|
177
|
-
|
178
|
-
local remote_chef=""
|
179
|
-
if [[ -n "$FLAGS_chef" ]]; then
|
180
|
-
remote_chef="-c $FLAGS_chef "
|
181
|
-
fi
|
182
|
-
|
183
|
-
$shome/sbin/proxy "$gateway" "$FLAGS_tag" $(deploy_basename $0) ${remote_chef}"$nm_component" "$@"
|
108
|
+
if [[ "$FLAGS_proxy" = "$FLAGS_FALSE" || "$FLAGS_direct" = "$FLAGS_TRUE" || -z "$FLAGS_gateway" ]]; then
|
109
|
+
export _AO_DEPLOY=1
|
110
|
+
|
111
|
+
local _AO_THIS_HOST="$(ryaml $HOME/.getting-started/config/pods.yml pods $nm_pod this_host)"
|
112
|
+
if [[ -n "$_AO_THIS_HOST" ]]; then
|
113
|
+
export _AO_THIS_HOST
|
114
|
+
fi
|
115
|
+
|
116
|
+
local _AO_THIS_POD="$(ryaml $HOME/.getting-started/config/pods.yml pods $nm_pod this_pod)"
|
117
|
+
if [[ -n "$_AO_THIS_POD" ]]; then
|
118
|
+
export _AO_THIS_POD
|
119
|
+
fi
|
120
|
+
|
121
|
+
bundle check 2>&1 >/dev/null || { bundle install --quiet --local --path vendor/bundle || bundle check > /dev/null; }
|
122
|
+
|
123
|
+
if [[ "$nm_pod" = "pod1" ]]; then
|
124
|
+
nm_pod="sys"
|
125
|
+
fi
|
126
|
+
|
127
|
+
if [[ "$nm_pod" = "sys" && "$#" > 0 ]]; then
|
128
|
+
if [[ "${1%.*}" = "production" ]]; then
|
129
|
+
set -- "admin" "$@"
|
184
130
|
fi
|
185
|
-
|
186
|
-
|
131
|
+
fi
|
132
|
+
|
133
|
+
if [[ "$FLAGS_migrations" = "$FLAGS_TRUE" ]]; then
|
134
|
+
export FLAGS_migrations
|
135
|
+
fi
|
136
|
+
|
137
|
+
if [[ -n "$FLAGS_tag" ]]; then
|
138
|
+
export FLAGS_tag
|
139
|
+
fi
|
140
|
+
|
141
|
+
if [[ -n "$FLAGS_reviewer" ]]; then
|
142
|
+
export FLAGS_reviewer
|
143
|
+
fi
|
144
|
+
|
145
|
+
aomain "$nm_pod" "$@"
|
146
|
+
else
|
147
|
+
if [[ "$#" > 0 ]]; then
|
148
|
+
case "$1" in
|
149
|
+
all|world)
|
150
|
+
logger_fatal "cannot use all or world, these are dangerous"
|
151
|
+
exit 1
|
152
|
+
;;
|
153
|
+
production)
|
154
|
+
if [[ -z "$FLAGS_tag" || "$FLAGS_tag" = "HEAD" ]]; then
|
155
|
+
case "$(deploy_basename $0)" in
|
156
|
+
hosts|debug|dna)
|
157
|
+
true
|
158
|
+
;;
|
159
|
+
*)
|
160
|
+
logger_fatal "must specify a version using --tag|-t"
|
161
|
+
exit 1
|
162
|
+
;;
|
163
|
+
esac
|
164
|
+
fi
|
165
|
+
;;
|
166
|
+
esac
|
167
|
+
fi
|
168
|
+
|
169
|
+
local gateway="$FLAGS_gateway"
|
170
|
+
if [[ -n "$FLAGS_ssh_login" ]]; then
|
171
|
+
gateway="${FLAGS_ssh_login}@${gateway}"
|
172
|
+
fi
|
173
|
+
|
174
|
+
local remote_chef=""
|
175
|
+
if [[ -n "$FLAGS_chef" ]]; then
|
176
|
+
remote_chef="-c $FLAGS_chef "
|
177
|
+
fi
|
178
|
+
|
179
|
+
$shome/sbin/proxy "$gateway" "$FLAGS_tag" $(deploy_basename $0) ${remote_chef}"$nm_pod" "$@"
|
180
|
+
fi
|
187
181
|
}
|
data/libexec/_sub
CHANGED
data/libexec/aoh-activate
CHANGED
@@ -16,7 +16,7 @@ require 'ao'
|
|
16
16
|
|
17
17
|
function aomain {
|
18
18
|
set -- $(for a in "$@"; do echo $a.app; done)
|
19
|
-
|
19
|
+
cap "$@" deploy:began deploy:lock deploy:symlink deploy:restart deploy:finished
|
20
20
|
}
|
21
21
|
|
22
22
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-check
CHANGED
@@ -17,7 +17,7 @@ require 'ao'
|
|
17
17
|
|
18
18
|
function aomain {
|
19
19
|
set -- $(for a in "$@"; do echo $a.app; done)
|
20
|
-
|
20
|
+
cap "$@" deploy:began deploy:lock deploy:check deploy:finished
|
21
21
|
}
|
22
22
|
|
23
23
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-compare
CHANGED
@@ -17,7 +17,7 @@ require 'ao'
|
|
17
17
|
|
18
18
|
function aomain {
|
19
19
|
set -- $(for a in "$@"; do echo $a.app; done)
|
20
|
-
|
20
|
+
cap "$@" deploy:began deploy:lock_compare deploy:compare deploy:finished
|
21
21
|
}
|
22
22
|
|
23
23
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-debug
CHANGED
data/libexec/aoh-deploy
CHANGED
@@ -16,7 +16,7 @@ require 'ao'
|
|
16
16
|
|
17
17
|
function aomain {
|
18
18
|
set -- $(for a in "$@"; do echo $a.app; done)
|
19
|
-
|
19
|
+
cap "$@" deploy:began deploy:lock deploy deploy:finished
|
20
20
|
}
|
21
21
|
|
22
22
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-dist
CHANGED
@@ -17,7 +17,7 @@ require 'ao'
|
|
17
17
|
|
18
18
|
function aomain {
|
19
19
|
set -- $(for a in "$@"; do echo $a.app; done)
|
20
|
-
|
20
|
+
cap "$@" deploy:began deploy:lock deploy:dist deploy:finished
|
21
21
|
}
|
22
22
|
|
23
23
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-dna
CHANGED
@@ -20,7 +20,7 @@ function aomain {
|
|
20
20
|
{
|
21
21
|
set -- $(for a in "$@"; do echo $a.yaml; done)
|
22
22
|
echo "eea914aaa8dde6fdae29242b1084a2b0415eefaf ---"
|
23
|
-
|
23
|
+
cap "$@"
|
24
24
|
} 2>&1 | grep eea914aaa8dde6fdae29242b1084a2b0415eefaf | sed 's#eea914aaa8dde6fdae29242b1084a2b0415eefaf ##'
|
25
25
|
}
|
26
26
|
|
data/libexec/aoh-hosts
CHANGED
@@ -18,7 +18,7 @@ require 'ao'
|
|
18
18
|
function aomain {
|
19
19
|
export LOCAL_ONLY=true
|
20
20
|
set -- $(for a in "$@"; do echo $a.echo; done)
|
21
|
-
|
21
|
+
cap "$@" 2>&1 | grep eea914aaa8dde6fdae29242b1084a2b0415eefaf | awk '{print $NF}' | sort -u 2>&1
|
22
22
|
}
|
23
23
|
|
24
24
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-init
CHANGED
@@ -13,16 +13,43 @@ shome="$(cd -P -- "$(dirname -- "$BASH_SOURCE")/.." && pwd -P)"
|
|
13
13
|
# load a jason bourne library
|
14
14
|
source "$shome/libexec/_treadstone"
|
15
15
|
|
16
|
-
|
17
|
-
if [[ "$#" < 1 ]]; then
|
18
|
-
logger_fatal "missing application name"
|
19
|
-
exit 1
|
20
|
-
fi
|
16
|
+
DEFINE_boolean "helpers" "$FLAGS_FALSE" "Generate the bin and libexec helpers" "H"
|
21
17
|
|
22
|
-
|
18
|
+
function main {
|
23
19
|
local dollar='$'
|
24
20
|
|
25
|
-
|
21
|
+
if [[ "$FLAGS_helpers" = "$FLAGS_TRUE" ]]; then
|
22
|
+
mkdir -p "libexec"
|
23
|
+
cat > "libexec/aohelper" <<EOF
|
24
|
+
function ryaml {
|
25
|
+
ruby -ryaml -e 'def ps x; unless x.nil?; puts (x.class == String || x.class == Fixnum) ? x : x.to_yaml; end; end; ps ARGV[1..-1].inject(YAML.load(File.read(ARGV[0]))) {|acc, key| acc[acc.class == Array ? key.to_i : key] }' "${dollar}@" 2>&-
|
26
|
+
}
|
27
|
+
|
28
|
+
shome="${dollar}(cd -P -- "${dollar}(dirname -- "${dollar}BASH_SOURCE")/.." && pwd -P)"
|
29
|
+
|
30
|
+
app_ruby="${dollar}(ryaml ${dollar}shome/config/deploy.yml app_ruby)"
|
31
|
+
ruby_loader="${dollar}(ryaml ${dollar}shome/config/deploy.yml ruby_loader)"
|
32
|
+
PATH="${dollar}PATH:/usr/local/rvm/bin:${dollar}HOME/.rvm/bin"
|
33
|
+
|
34
|
+
if ! ${dollar}ruby_loader ${dollar}app_ruby bundle check 2>&- > /dev/null; then
|
35
|
+
${dollar}ruby_loader ${dollar}app_ruby bundle install --local --quiet
|
36
|
+
fi
|
37
|
+
${dollar}ruby_loader ${dollar}app_ruby bundle exec ao "${dollar}{BASH_SOURCE##*/}" "${dollar}@"
|
38
|
+
EOF
|
39
|
+
chmod 755 "libexec/aohelper"
|
40
|
+
|
41
|
+
for nm_cmd in activate check compare debug deploy dna hosts lock migrate proxy release restart rollback shell stage unlock; do
|
42
|
+
ln -nfs "../libexec/aohelper" $shome/bin/$nm_cmd
|
43
|
+
done
|
44
|
+
else
|
45
|
+
if [[ "$#" < 1 ]]; then
|
46
|
+
logger_fatal "missing application name"
|
47
|
+
exit 1
|
48
|
+
fi
|
49
|
+
|
50
|
+
local nm_app="$1"; shift
|
51
|
+
|
52
|
+
cat > "Capfile" <<EOF
|
26
53
|
#!/usr/bin/env ruby
|
27
54
|
|
28
55
|
require 'alpha_omega/deploy'
|
@@ -51,8 +78,8 @@ Deploy self, __FILE__ do |admin, node|
|
|
51
78
|
end
|
52
79
|
EOF
|
53
80
|
|
54
|
-
|
55
|
-
|
81
|
+
mkdir -p "config"
|
82
|
+
cat > "config/deploy.yml" <<EOF
|
56
83
|
---
|
57
84
|
repository: git@github.com:someone/something_something
|
58
85
|
application: ${nm_app}
|
@@ -63,6 +90,7 @@ app_ruby: ree
|
|
63
90
|
branches: [ production staging master ]
|
64
91
|
branch_regex: /
|
65
92
|
EOF
|
93
|
+
fi
|
66
94
|
}
|
67
95
|
|
68
96
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-lock
CHANGED
@@ -21,11 +21,11 @@ function aomain {
|
|
21
21
|
compare|migrate)
|
22
22
|
nm_lock="${1}"; shift
|
23
23
|
set -- $(for a in "$@"; do echo $a.app; done)
|
24
|
-
|
24
|
+
cap "$@" deploy:began deploy:dont_unlock "deploy:lock_${nm_lock}" deploy:finished
|
25
25
|
;;
|
26
26
|
*)
|
27
27
|
set -- $(for a in "$@"; do echo $a.app; done)
|
28
|
-
|
28
|
+
cap "$@" deploy:began deploy:dont_unlock deploy:lock deploy:finished
|
29
29
|
;;
|
30
30
|
esac
|
31
31
|
}
|
data/libexec/aoh-migrate
CHANGED
@@ -17,7 +17,7 @@ require 'ao'
|
|
17
17
|
|
18
18
|
function aomain {
|
19
19
|
set -- $(for a in "$@"; do echo $a.app; done)
|
20
|
-
|
20
|
+
cap "$@" deploy:began deploy:lock_migrate deploy:migrate deploy:finished
|
21
21
|
}
|
22
22
|
|
23
23
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-proxy
CHANGED
@@ -40,12 +40,12 @@ function main {
|
|
40
40
|
local ver_repo="$1"; shift
|
41
41
|
|
42
42
|
cd $_AO_HOME
|
43
|
-
local git_url="$(
|
43
|
+
local git_url="$(ryaml $_AO_HOME/config/deploy.yml repository)"
|
44
44
|
local git_spec="$(git_branch_head "$ver_repo")"
|
45
45
|
|
46
46
|
local pth_rvmrun="${_AO_RUBY_LOADER:-}"
|
47
|
-
: ${pth_rvmrun:=$(
|
48
|
-
local nm_ruby="$(
|
47
|
+
: ${pth_rvmrun:=$(ryaml $_AO_HOME/config/deploy.yml ruby_loader)}
|
48
|
+
local nm_ruby="$(ryaml $_AO_HOME/config/deploy.yml app_ruby)"
|
49
49
|
|
50
50
|
local tmp_remote="$(ssh $hst_gateway mktemp -t XXXXXXXXX)"
|
51
51
|
scp -q $shome/sbin/remote-helper $hst_gateway:$tmp_remote
|
data/libexec/aoh-release
CHANGED
@@ -17,7 +17,7 @@ require 'ao'
|
|
17
17
|
|
18
18
|
function aomain {
|
19
19
|
set -- $(for a in "$@"; do echo $a.app; done)
|
20
|
-
|
20
|
+
cap "$@" deploy:began deploy:lock deploy deploy:finished
|
21
21
|
}
|
22
22
|
|
23
23
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-restart
CHANGED
@@ -17,7 +17,7 @@ require 'ao'
|
|
17
17
|
|
18
18
|
function aomain {
|
19
19
|
set -- $(for a in "$@"; do echo $a.app; done)
|
20
|
-
|
20
|
+
cap "$@" deploy:began deploy:lock deploy:restart deploy:finished
|
21
21
|
}
|
22
22
|
|
23
23
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-rollback
CHANGED
@@ -17,7 +17,7 @@ require 'ao'
|
|
17
17
|
|
18
18
|
function aomain {
|
19
19
|
set -- $(for a in "$@"; do echo $a.app; done)
|
20
|
-
|
20
|
+
cap "$@" deploy:began deploy:lock deploy:rollback deploy:finished
|
21
21
|
}
|
22
22
|
|
23
23
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-shell
CHANGED
data/libexec/aoh-stage
CHANGED
@@ -16,7 +16,7 @@ require 'ao'
|
|
16
16
|
|
17
17
|
function aomain {
|
18
18
|
set -- $(for a in "$@"; do echo $a.app; done)
|
19
|
-
|
19
|
+
cap "$@" deploy:began deploy:lock deploy:update_code deploy:symlink_next deploy:finished
|
20
20
|
}
|
21
21
|
|
22
22
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-task
CHANGED
@@ -18,7 +18,7 @@ require 'ao'
|
|
18
18
|
function aomain {
|
19
19
|
local nm_task=$1; shift
|
20
20
|
set -- $(for a in "$@"; do echo $a.app; done)
|
21
|
-
|
21
|
+
cap "$@" deploy:began deploy:lock_migrate deploy:migrate "$nm_task" deploy:finished
|
22
22
|
}
|
23
23
|
|
24
24
|
require sub "$BASH_SOURCE" "$@"
|
data/libexec/aoh-unlock
CHANGED
@@ -21,11 +21,11 @@ function aomain {
|
|
21
21
|
compare|migrate)
|
22
22
|
nm_lock="${1}"; shift
|
23
23
|
set -- $(for a in "$@"; do echo $a.app; done)
|
24
|
-
|
24
|
+
cap "$@" deploy:began "deploy:unlock_${nm_lock}" deploy:finished
|
25
25
|
;;
|
26
26
|
*)
|
27
27
|
set -- $(for a in "$@"; do echo $a.app; done)
|
28
|
-
|
28
|
+
cap "$@" deploy:began deploy:unlock deploy:finished
|
29
29
|
;;
|
30
30
|
esac
|
31
31
|
}
|
data/libexec/aohelper
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
function ryaml {
|
2
|
+
ruby -ryaml -e 'def ps x; unless x.nil?; puts (x.class == String || x.class == Fixnum) ? x : x.to_yaml; end; end; ps ARGV[1..-1].inject(YAML.load(File.read(ARGV[0]))) {|acc, key| acc[acc.class == Array ? key.to_i : key] }' "$@" 2>&-
|
3
|
+
}
|
4
|
+
|
5
|
+
shome="$(cd -P -- "$(dirname -- "$BASH_SOURCE")/.." && pwd -P)"
|
6
|
+
|
7
|
+
app_ruby="$(ryaml $shome/config/deploy.yml app_ruby)"
|
8
|
+
ruby_loader="$(ryaml $shome/config/deploy.yml ruby_loader)"
|
9
|
+
PATH="$PATH:/usr/local/rvm/bin:$HOME/.rvm/bin"
|
10
|
+
|
11
|
+
if ! $ruby_loader $app_ruby bundle check 2>&- > /dev/null; then
|
12
|
+
$ruby_loader $app_ruby bundle install --local --quiet
|
13
|
+
fi
|
14
|
+
$ruby_loader $app_ruby bundle exec ao "${BASH_SOURCE##*/}" "$@"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alpha_omega
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 1.4.
|
9
|
+
- 2
|
10
|
+
version: 1.4.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Nghiem
|
@@ -134,6 +134,7 @@ files:
|
|
134
134
|
- libexec/aoh-stage
|
135
135
|
- libexec/aoh-task
|
136
136
|
- libexec/aoh-unlock
|
137
|
+
- libexec/aohelper
|
137
138
|
- libexec/build
|
138
139
|
- libexec/build-gem
|
139
140
|
- libexec/bump
|