alpha_omega 0.0.111 → 0.0.113

Sign up to get free protection for your applications and to get access to all the features.
data/README.mkd CHANGED
@@ -9,18 +9,20 @@ Getting Started
9
9
  ===============
10
10
 
11
11
  Your local machine must let you ssh and run sudo without a password
12
- during the deploy.
12
+ during the deploy. It must also have access to opsdb directly or via a
13
+ proxy dpeloy host.
13
14
 
14
15
  Move the example Capfile.
15
16
 
16
17
  mv Capfile.example Capfile
17
18
 
18
- Run the deploy script.
19
+ Run the hosts script to see what hosts are visible.
19
20
 
20
- bundle exec deploy
21
- bundle exec deploy stage
22
- bundle exec deploy
23
- bundle exec deploy rollback
21
+ bin/hosts world
22
+
23
+ Run the deploy script with host and group arguments to deploy.
24
+
25
+ bin/deploy XXX
24
26
 
25
27
  LICENSE
26
28
  -------
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.111
1
+ 0.0.113
@@ -75,7 +75,8 @@ module Capistrano
75
75
  execute = []
76
76
 
77
77
  execute << "[[ -d #{destination}/.git ]] || #{git} clone #{verbose} #{variable(:repository)} #{destination}"
78
- execute << "cd #{destination} && #{git} fetch -q && #{git} reset --hard #{revision} && #{git} submodule update --init --recursive"
78
+ execute << "cd #{destination} && #{git} fetch -q && #{git} checkout -q --force #{revision}"
79
+ execute << "cd #{destination} && #{git} reset --hard #{revision} && #{git} submodule update --init --recursive"
79
80
 
80
81
  execute
81
82
  end
@@ -60,49 +60,47 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
60
60
  # =========================================================================
61
61
 
62
62
  _cset(:source) { Capistrano::Deploy::SCM.new(scm, self) }
63
- _cset(:real_revision) { source.local.query_revision(revision) { |cmd| with_env("LC_ALL", "C") { run_locally(cmd) } } }
64
-
65
63
  _cset(:strategy) { Capistrano::Deploy::Strategy.new(deploy_via, self) }
64
+ _cset(:real_revision) { source.local.query_revision(revision) { |cmd| with_env("LC_ALL", "C") { run_locally(cmd) } } }
66
65
 
67
- _cset(:version_dir) { releases.length > 0 ? "releases" : "" }
68
- _cset :current_dir, "current"
69
- _cset :service_dir, "service"
70
- _cset :log_dir, "log"
71
- _cset :releases, %w(alpha omega)
72
-
73
- _cset(:releases_path) { File.join(deploy_to, version_dir) }
74
- _cset(:current_path) { File.join(deploy_to, current_dir) }
75
- _cset(:service_path) { File.join(deploy_to, service_dir) }
76
- _cset(:log_path) { File.join(deploy_to, log_dir) }
77
- _cset(:service_drop) { File.join(deploy_to, ".#{service_dir}.d") }
78
- _cset(:release_path) { File.join(releases_path, release_name) }
79
-
80
- _cset(:current_release) { release_path }
81
66
  _cset(:current_workarea) { capture("readlink #{current_path} || true").strip.split("/")[-1] }
82
-
83
- _cset(:previous_release) {
67
+ _cset(:release_name) {
84
68
  if releases.length > 0
85
69
  w = current_workarea
86
- releases.index(w) && releases[(releases.index(w)-1)%releases.length] || nil
70
+ stage = releases[((releases.index(w)?releases.index(w):-1)+1)%releases.length]
71
+ system "#{figlet} -w 200 on #{stage}"
72
+ stage
87
73
  else
88
74
  ""
89
75
  end
90
76
  }
91
77
 
92
- _cset(:release_name) {
78
+ _cset :releases, [ "alpha", "beta", "omega" ]
79
+ _cset(:releases_dir) { releases.length > 0 ? "releases" : "" }
80
+ _cset :previous_dir, "previous"
81
+ _cset :current_dir, "current"
82
+ _cset :service_dir, "service"
83
+ _cset :log_dir, "log"
84
+
85
+
86
+ _cset(:releases_path) { File.join(deploy_to, releases_dir) }
87
+ _cset(:release_path) { File.join(releases_path, release_name) }
88
+ _cset(:previous_path) {
93
89
  if releases.length > 0
94
90
  w = current_workarea
95
- stage = releases[((releases.index(w)?releases.index(w):-1)+1)%releases.length]
96
- system "#{figlet} -w 200 on #{stage}"
97
- stage
91
+ releases.index(w) && releases[(releases.index(w)-1)%releases.length] || ""
98
92
  else
99
93
  ""
100
94
  end
101
95
  }
96
+ _cset(:current_path) { File.join(deploy_to, current_dir) }
97
+ _cset(:service_path) { File.join(deploy_to, service_dir) }
98
+ _cset(:service_drop) { File.join(deploy_to, ".#{service_dir}.d") }
99
+ _cset(:log_path) { File.join(deploy_to, log_dir) }
102
100
 
101
+ _cset(:previous_revision) { capture("cat #{previous_release}/REVISION", :except => { :no_release => true }).chomp if previous_release }
103
102
  _cset(:current_revision) { capture("cat #{current_path}/REVISION", :except => { :no_release => true }).chomp }
104
103
  _cset(:latest_revision) { capture("cat #{current_release}/REVISION", :except => { :no_release => true }).chomp }
105
- _cset(:previous_revision) { capture("cat #{previous_release}/REVISION", :except => { :no_release => true }).chomp if previous_release }
106
104
 
107
105
  _cset(:run_method) { fetch(:use_sudo, true) ? :sudo : :run }
108
106
 
@@ -115,7 +113,9 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
115
113
  # standalone case, or during deployment.
116
114
  #
117
115
  # with persistent releases, the latest release is always the current release
118
- _cset(:latest_release) { current_release }
116
+ _cset(:previous_release) { previous_path }
117
+ _cset(:current_release) { release_path }
118
+ _cset(:latest_release) { current_release }
119
119
 
120
120
  # =========================================================================
121
121
  # deploy:lock defaults
@@ -517,7 +517,7 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
517
517
  end
518
518
 
519
519
  run_script = <<-SCRIPT
520
- echo #{epoch} #{ENV['USER']} > #{log_path}/.#{application}_deploy_lock;
520
+ echo #{epoch} #{ENV['AO_USER']} > #{log_path}/.#{application}_deploy_lock;
521
521
  SCRIPT
522
522
 
523
523
  at_exit { self.unlock; }
@@ -538,7 +538,7 @@ Capistrano::Configuration.instance(:must_exist).load do |config|
538
538
  SCRIPT
539
539
 
540
540
  run_script += <<-SCRIPT
541
- #{ruby_loader} bundle check 2>&1 > /dev/null || { #{ruby_loader} bundle install --quiet --local #{bundler_options} && #{ruby_loader} bundle check; };
541
+ #{ruby_loader} bundle check 2>&1 > /dev/null || { #{ruby_loader} bundle install --quiet --local #{bundler_options} && #{ruby_loader} bundle check > /dev/null; };
542
542
  SCRIPT
543
543
 
544
544
  run run_script.gsub(/[\n\r]+[ \t]+/, " ")
@@ -140,28 +140,19 @@ module AlphaOmega
140
140
  end
141
141
  end
142
142
 
143
- def self.what_branch (allowed = %w(production master develop))
144
- if ENV["BRANCH"]
145
- ENV["BRANCH"]
146
- elsif ENV["TAG"]
147
- ENV["TAG"]
148
- else
149
- current = `git branch`.split("\n").find {|b| b.split(" ")[0] == '*' } # use Grit
150
- if current
151
- star, branch_name = current.split(" ")
152
- branch_type, branch_feature = branch_name.split("/")
153
- if %w(feature hotfix).member?(branch_type)
154
- branch_name
155
- elsif allowed.any? {|rx| rx.match(branch_name) }
156
- branch_name
157
- else
158
- puts "current branch must be #{allowed.join(', ')}, feature/xyz, or hotfix/xyz"
159
- abort
160
- end
143
+ def self.what_branch (allowed = %w(production staging master develop) + [%r(/)])
144
+ current = `git branch`.split("\n").find {|b| b.split(" ")[0] == '*' } # use Grit
145
+ if current
146
+ star, branch_name = current.split(" ")
147
+ if allowed.any? {|rx| rx.match(branch_name) }
148
+ branch_name
161
149
  else
162
- puts "could not find a suitable branch"
150
+ puts "current branch must be one of #{allowed.join(', ')}"
163
151
  abort
164
152
  end
153
+ else
154
+ puts "could not find a suitable branch"
155
+ abort
165
156
  end
166
157
  end
167
158
 
data/libexec/activate CHANGED
@@ -36,35 +36,78 @@ case "$(basename $0)" in
36
36
  } 2>&1 | grep eea914aaa8dde6fdae29242b1084a2b0415eefaf | sed 's#eea914aaa8dde6fdae29242b1084a2b0415eefaf ##'
37
37
  ;;
38
38
 
39
+ bump)
40
+ case "$1" in
41
+ patch|minor|major)
42
+ bump=$1; shift
43
+ set $(cat VERSION | sed 's#\.# #g')
44
+ case "$bump" in
45
+ patch)
46
+ echo "$1.$2.$(($3 + 1))"
47
+ ;;
48
+ minor)
49
+ echo "$1.$(($2 + 1)).0"
50
+ ;;
51
+ major)
52
+ echo "$(($1 + 1)).0.0"
53
+ ;;
54
+ esac > VERSION
55
+ ;;
56
+ *)
57
+ ver_new=$1; shift
58
+ set $(echo "$ver_new" | sed 's#\.# #g') 0
59
+ M=$1; shift
60
+ m=$1; shift
61
+ p=$1; shift
62
+
63
+ tmp_version=$(mktemp -t XXXXXXXXX)
64
+ (echo "$(($M+0)).$(($m+0)).$(($p+0))" > $tmp_version) 2>&-
65
+ ver_new_same=$(cat $tmp_version)
66
+ rm -f $tmp_version
67
+
68
+ if [[ $ver_new = $ver_new_same ]]; then
69
+ echo "$ver_new" > VERSION
70
+ else
71
+ echo "ERROR: invalid version: $ver_new" 1>&2
72
+ exit 1
73
+ fi
74
+ ;;
75
+ esac
76
+
77
+ if [[ -f Gemfile ]]; then
78
+ bundle check 2>&1 >/dev/null || { bundle --quiet install --local --path vendor/bundle || bundle check > /dev/null; }
79
+ git add Gemfile.lock
80
+ fi
81
+
82
+ git add VERSION
83
+
84
+ ver_bumped=$(cat VERSION)
85
+ git commit -m "bump: $ver_bumped"
86
+ git tag "v$ver_bumped"
87
+ echo $ver_bumped
88
+ ;;
89
+
39
90
  *)
40
91
  set $(for a in "$@"; do echo $a.app; done)
41
92
  case "$(basename $0)" in
42
- deploy|release)
93
+ deploy)
43
94
  bundle exec cap "$@" deploy
44
95
  ;;
45
96
 
46
- rollback)
47
- bundle exec cap "$@" deploy:rollback
97
+ release)
98
+ bundle exec cap "$@" deploy
48
99
  ;;
49
100
 
50
101
  stage)
51
102
  bundle exec cap "$@" deploy:update_code
52
103
  ;;
53
104
 
54
- activate)
55
- bundle exec cap "$@" deploy:symlink deploy:restart
56
- ;;
57
-
58
- compare)
59
- bundle exec cap "$@" deploy:compare
60
- ;;
61
-
62
105
  restart)
63
106
  bundle exec cap "$@" deploy:restart
64
107
  ;;
65
108
 
66
- restart)
67
- bundle exec cap "$@" deploy:restart
109
+ config)
110
+ bundle exec cap "$@" deploy:config
68
111
  ;;
69
112
 
70
113
  build)
@@ -75,8 +118,32 @@ case "$(basename $0)" in
75
118
  bundle exec cap "$@" deploy:dist
76
119
  ;;
77
120
 
78
- config)
79
- bundle exec cap "$@" deploy:config
121
+ activate)
122
+ bundle exec cap "$@" deploy:symlink deploy:restart
123
+ ;;
124
+
125
+ rollback)
126
+ bundle exec cap "$@" deploy:rollback
127
+ ;;
128
+
129
+ check)
130
+ bundle exec cap "$@" deploy:check
131
+ ;;
132
+
133
+ compare)
134
+ bundle exec cap "$@" deploy:compare
135
+ ;;
136
+
137
+ plan)
138
+ bundle exec cap "$@" deploy:plan
139
+ ;;
140
+
141
+ lock)
142
+ bundle exec cap "$@" deploy:lock
143
+ ;;
144
+
145
+ unlock)
146
+ bundle exec cap "$@" deploy:unlock
80
147
  ;;
81
148
 
82
149
  invoke)
data/libexec/build CHANGED
@@ -36,35 +36,78 @@ case "$(basename $0)" in
36
36
  } 2>&1 | grep eea914aaa8dde6fdae29242b1084a2b0415eefaf | sed 's#eea914aaa8dde6fdae29242b1084a2b0415eefaf ##'
37
37
  ;;
38
38
 
39
+ bump)
40
+ case "$1" in
41
+ patch|minor|major)
42
+ bump=$1; shift
43
+ set $(cat VERSION | sed 's#\.# #g')
44
+ case "$bump" in
45
+ patch)
46
+ echo "$1.$2.$(($3 + 1))"
47
+ ;;
48
+ minor)
49
+ echo "$1.$(($2 + 1)).0"
50
+ ;;
51
+ major)
52
+ echo "$(($1 + 1)).0.0"
53
+ ;;
54
+ esac > VERSION
55
+ ;;
56
+ *)
57
+ ver_new=$1; shift
58
+ set $(echo "$ver_new" | sed 's#\.# #g') 0
59
+ M=$1; shift
60
+ m=$1; shift
61
+ p=$1; shift
62
+
63
+ tmp_version=$(mktemp -t XXXXXXXXX)
64
+ (echo "$(($M+0)).$(($m+0)).$(($p+0))" > $tmp_version) 2>&-
65
+ ver_new_same=$(cat $tmp_version)
66
+ rm -f $tmp_version
67
+
68
+ if [[ $ver_new = $ver_new_same ]]; then
69
+ echo "$ver_new" > VERSION
70
+ else
71
+ echo "ERROR: invalid version: $ver_new" 1>&2
72
+ exit 1
73
+ fi
74
+ ;;
75
+ esac
76
+
77
+ if [[ -f Gemfile ]]; then
78
+ bundle check 2>&1 >/dev/null || { bundle --quiet install --local --path vendor/bundle || bundle check > /dev/null; }
79
+ git add Gemfile.lock
80
+ fi
81
+
82
+ git add VERSION
83
+
84
+ ver_bumped=$(cat VERSION)
85
+ git commit -m "bump: $ver_bumped"
86
+ git tag "v$ver_bumped"
87
+ echo $ver_bumped
88
+ ;;
89
+
39
90
  *)
40
91
  set $(for a in "$@"; do echo $a.app; done)
41
92
  case "$(basename $0)" in
42
- deploy|release)
93
+ deploy)
43
94
  bundle exec cap "$@" deploy
44
95
  ;;
45
96
 
46
- rollback)
47
- bundle exec cap "$@" deploy:rollback
97
+ release)
98
+ bundle exec cap "$@" deploy
48
99
  ;;
49
100
 
50
101
  stage)
51
102
  bundle exec cap "$@" deploy:update_code
52
103
  ;;
53
104
 
54
- activate)
55
- bundle exec cap "$@" deploy:symlink deploy:restart
56
- ;;
57
-
58
- compare)
59
- bundle exec cap "$@" deploy:compare
60
- ;;
61
-
62
105
  restart)
63
106
  bundle exec cap "$@" deploy:restart
64
107
  ;;
65
108
 
66
- restart)
67
- bundle exec cap "$@" deploy:restart
109
+ config)
110
+ bundle exec cap "$@" deploy:config
68
111
  ;;
69
112
 
70
113
  build)
@@ -75,8 +118,32 @@ case "$(basename $0)" in
75
118
  bundle exec cap "$@" deploy:dist
76
119
  ;;
77
120
 
78
- config)
79
- bundle exec cap "$@" deploy:config
121
+ activate)
122
+ bundle exec cap "$@" deploy:symlink deploy:restart
123
+ ;;
124
+
125
+ rollback)
126
+ bundle exec cap "$@" deploy:rollback
127
+ ;;
128
+
129
+ check)
130
+ bundle exec cap "$@" deploy:check
131
+ ;;
132
+
133
+ compare)
134
+ bundle exec cap "$@" deploy:compare
135
+ ;;
136
+
137
+ plan)
138
+ bundle exec cap "$@" deploy:plan
139
+ ;;
140
+
141
+ lock)
142
+ bundle exec cap "$@" deploy:lock
143
+ ;;
144
+
145
+ unlock)
146
+ bundle exec cap "$@" deploy:unlock
80
147
  ;;
81
148
 
82
149
  invoke)
data/libexec/bump ADDED
@@ -0,0 +1,162 @@
1
+ #!/bin/bash -e
2
+
3
+ hst_this=$(hostname -s)
4
+ if ! echo "$hst_this" | egrep -q "^(admin|develop)"; then
5
+ # unless the .ao_no_proxy file exists
6
+ if [[ ! -f ".ao_no_proxy" ]]; then
7
+ # ssh into deploy host and run from there
8
+ exec bin/proxy $(basename $0) "$@"
9
+ exit 1
10
+ fi
11
+ fi
12
+
13
+ case "$(basename $0)" in
14
+ debug)
15
+ export LOCAL_ONLY=true
16
+
17
+ {
18
+ cap $(for a in "$@"; do echo $a.echo; done)
19
+ }
20
+ ;;
21
+
22
+ hosts)
23
+ export LOCAL_ONLY=true
24
+
25
+ {
26
+ cap $(for a in "$@"; do echo $a.echo; done)
27
+ } 2>&1 | grep eea914aaa8dde6fdae29242b1084a2b0415eefaf | awk '{print $NF}' | sort -u
28
+ ;;
29
+
30
+ dna)
31
+ export LOCAL_ONLY=true
32
+
33
+ {
34
+ echo "eea914aaa8dde6fdae29242b1084a2b0415eefaf ---"
35
+ cap $(for a in "$@"; do echo $a.yaml; done)
36
+ } 2>&1 | grep eea914aaa8dde6fdae29242b1084a2b0415eefaf | sed 's#eea914aaa8dde6fdae29242b1084a2b0415eefaf ##'
37
+ ;;
38
+
39
+ bump)
40
+ case "$1" in
41
+ patch|minor|major)
42
+ bump=$1; shift
43
+ set $(cat VERSION | sed 's#\.# #g')
44
+ case "$bump" in
45
+ patch)
46
+ echo "$1.$2.$(($3 + 1))"
47
+ ;;
48
+ minor)
49
+ echo "$1.$(($2 + 1)).0"
50
+ ;;
51
+ major)
52
+ echo "$(($1 + 1)).0.0"
53
+ ;;
54
+ esac > VERSION
55
+ ;;
56
+ *)
57
+ ver_new=$1; shift
58
+ set $(echo "$ver_new" | sed 's#\.# #g') 0
59
+ M=$1; shift
60
+ m=$1; shift
61
+ p=$1; shift
62
+
63
+ tmp_version=$(mktemp -t XXXXXXXXX)
64
+ (echo "$(($M+0)).$(($m+0)).$(($p+0))" > $tmp_version) 2>&-
65
+ ver_new_same=$(cat $tmp_version)
66
+ rm -f $tmp_version
67
+
68
+ if [[ $ver_new = $ver_new_same ]]; then
69
+ echo "$ver_new" > VERSION
70
+ else
71
+ echo "ERROR: invalid version: $ver_new" 1>&2
72
+ exit 1
73
+ fi
74
+ ;;
75
+ esac
76
+
77
+ if [[ -f Gemfile ]]; then
78
+ bundle check 2>&1 >/dev/null || { bundle --quiet install --local --path vendor/bundle || bundle check > /dev/null; }
79
+ git add Gemfile.lock
80
+ fi
81
+
82
+ git add VERSION
83
+
84
+ ver_bumped=$(cat VERSION)
85
+ git commit -m "bump: $ver_bumped"
86
+ git tag "v$ver_bumped"
87
+ echo $ver_bumped
88
+ ;;
89
+
90
+ *)
91
+ set $(for a in "$@"; do echo $a.app; done)
92
+ case "$(basename $0)" in
93
+ deploy)
94
+ bundle exec cap "$@" deploy
95
+ ;;
96
+
97
+ release)
98
+ bundle exec cap "$@" deploy
99
+ ;;
100
+
101
+ stage)
102
+ bundle exec cap "$@" deploy:update_code
103
+ ;;
104
+
105
+ restart)
106
+ bundle exec cap "$@" deploy:restart
107
+ ;;
108
+
109
+ config)
110
+ bundle exec cap "$@" deploy:config
111
+ ;;
112
+
113
+ build)
114
+ bundle exec cap "$@" deploy:build
115
+ ;;
116
+
117
+ dist)
118
+ bundle exec cap "$@" deploy:dist
119
+ ;;
120
+
121
+ activate)
122
+ bundle exec cap "$@" deploy:symlink deploy:restart
123
+ ;;
124
+
125
+ rollback)
126
+ bundle exec cap "$@" deploy:rollback
127
+ ;;
128
+
129
+ check)
130
+ bundle exec cap "$@" deploy:check
131
+ ;;
132
+
133
+ compare)
134
+ bundle exec cap "$@" deploy:compare
135
+ ;;
136
+
137
+ plan)
138
+ bundle exec cap "$@" deploy:plan
139
+ ;;
140
+
141
+ lock)
142
+ bundle exec cap "$@" deploy:lock
143
+ ;;
144
+
145
+ unlock)
146
+ bundle exec cap "$@" deploy:unlock
147
+ ;;
148
+
149
+ invoke)
150
+ bundle exec cap "$@" invoke
151
+ ;;
152
+
153
+ shell)
154
+ bundle exec cap "$@" shell
155
+ ;;
156
+
157
+ *)
158
+ bundle exec cap "$@"
159
+ ;;
160
+ esac
161
+ esac
162
+