capistrano-deploy-lock 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/capistrano-deploy-lock.gemspec +10 -10
- data/lib/capistrano/tasks/deploy-lock.rake +33 -40
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1189621f4a67a143e88e4a95ced9252cc67d68d
|
4
|
+
data.tar.gz: 174b3c7ea054f3a7da172bd3aaafa20f5ce3a706
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ad69733250faae70af2b5247bae86389618ff068fe521da04f9550bab1e221fe0dbcab3eb706a84c163c7f648ccbfc5641ad1faf77e043cf06a4b1b5eb62b14
|
7
|
+
data.tar.gz: 5d6917d14bb3150fe60b57479ec8b2e4c27c2b6dfe883320e52c5d11f4f06483bb04ad5bede86f6f2267d1b9399f50ec9339ea8d701fada369db1ccd5bd61caf
|
data/.gitignore
CHANGED
@@ -3,18 +3,18 @@ lib = File.expand_path('../lib', __FILE__)
|
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name
|
7
|
-
spec.version
|
8
|
-
spec.author
|
9
|
-
spec.email
|
10
|
-
spec.summary
|
11
|
-
spec.description
|
12
|
-
spec.homepage
|
6
|
+
spec.name = 'capistrano-deploy-lock'
|
7
|
+
spec.version = '1.0.4'
|
8
|
+
spec.author = 'Maruf Hasan Bulbul'
|
9
|
+
spec.email = 'mhb.cse@gmail.com'
|
10
|
+
spec.summary = %q{Deploy lock feature for Capistrano 3.4.x}
|
11
|
+
spec.description = %q{Lock deploy when deployment is running or custom lock to prevent further deployment for Capistrano 3.}
|
12
|
+
spec.homepage = 'https://github.com/maruf-freelancer/capistrano-deploy-lock'
|
13
13
|
|
14
|
-
spec.files
|
15
|
-
spec.require_paths = [
|
14
|
+
spec.files = `git ls-files -z`.split("\x0")
|
15
|
+
spec.require_paths = ['lib']
|
16
16
|
|
17
17
|
spec.add_dependency 'capistrano', '>= 3.4'
|
18
|
-
spec.add_development_dependency
|
18
|
+
spec.add_development_dependency 'rake', '>= 10.0'
|
19
19
|
spec.required_ruby_version = '>= 1.9.3'
|
20
20
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
set :deploy_lock_file, -> { File.join(shared_path,
|
1
|
+
set :deploy_lock_file, -> { File.join(shared_path, 'deploy-lock.yml') }
|
2
2
|
set :deploy_lock_roles, -> { :app }
|
3
3
|
set :default_lock_expiry, (15 * 60)
|
4
4
|
set :deploy_lock, false
|
@@ -6,27 +6,27 @@ set :lock_message, nil
|
|
6
6
|
set :lock_expiry, nil
|
7
7
|
|
8
8
|
namespace :deploy do
|
9
|
-
|
10
|
-
desc
|
9
|
+
|
10
|
+
desc 'Deploy with a custom deploy lock'
|
11
11
|
task :with_lock do
|
12
12
|
invoke 'deploy:lock'
|
13
13
|
invoke 'deploy'
|
14
14
|
end
|
15
|
-
|
16
|
-
desc
|
15
|
+
|
16
|
+
desc 'Set deploy lock with a custom lock message and expiry time'
|
17
17
|
task :lock do
|
18
18
|
set :custom_deploy_lock, true
|
19
19
|
set :lock_message, ask('lock message', '', echo: true)
|
20
20
|
puts "Lock message: #{fetch(:lock_message)}"
|
21
21
|
|
22
22
|
while fetch(:lock_expiry).nil?
|
23
|
-
set :expire_after, ask('minutes of expiry', 'optional', echo: true)
|
23
|
+
set :expire_after, ask('minutes of expiry', 'optional', echo: true)
|
24
24
|
expire_after = fetch(:expire_after)
|
25
|
-
|
26
|
-
if expire_after ==
|
25
|
+
|
26
|
+
if expire_after == 'optional'
|
27
27
|
# Never expire an explicit lock if no time given
|
28
28
|
set :lock_expiry, false
|
29
|
-
puts colorize(
|
29
|
+
puts colorize('Lock will never expire automatically.', color: 33)
|
30
30
|
else
|
31
31
|
unless expire_after.to_i == 0
|
32
32
|
set :lock_expiry, (Time.now + expire_after.to_i * 60).utc
|
@@ -36,11 +36,11 @@ namespace :deploy do
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
invoke 'deploy:create_lock'
|
41
41
|
end
|
42
|
-
|
43
|
-
desc
|
42
|
+
|
43
|
+
desc 'Creates a lock file, so that futher deploys will be prevented'
|
44
44
|
task :create_lock do
|
45
45
|
if fetch(:deploy_lock)
|
46
46
|
puts colorize('Deploy lock already created.', color: 33)
|
@@ -50,7 +50,7 @@ namespace :deploy do
|
|
50
50
|
if fetch(:lock_message).nil?
|
51
51
|
set :lock_message, "Deploying #{fetch(:branch)} branch in #{fetch(:rails_env)}"
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
if fetch(:lock_expiry).nil?
|
55
55
|
set :lock_expiry, (Time.now + fetch(:default_lock_expiry)).utc
|
56
56
|
end
|
@@ -62,24 +62,24 @@ namespace :deploy do
|
|
62
62
|
message: fetch(:lock_message).to_s,
|
63
63
|
custom: !!fetch(:custom_deploy_lock)
|
64
64
|
}
|
65
|
-
|
65
|
+
|
66
66
|
write_deploy_lock(deploy_lock_data)
|
67
|
-
|
67
|
+
|
68
68
|
set :deploy_lock, deploy_lock_data
|
69
69
|
end
|
70
|
-
|
71
|
-
desc
|
70
|
+
|
71
|
+
desc 'Checks for a deploy lock. If present, deploy is aborted and message is displayed. Any expired locks are deleted.'
|
72
72
|
task :check_lock do
|
73
73
|
# Don't check the lock if we just created it
|
74
74
|
next if fetch(:deploy_lock)
|
75
75
|
|
76
76
|
fetch_deploy_lock
|
77
|
-
|
77
|
+
|
78
78
|
# Return if no lock
|
79
79
|
next unless fetch(:deploy_lock)
|
80
80
|
|
81
81
|
deploy_lock = fetch(:deploy_lock)
|
82
|
-
|
82
|
+
|
83
83
|
if deploy_lock[:expire_at] && deploy_lock[:expire_at] < Time.now
|
84
84
|
remove_deploy_lock
|
85
85
|
next
|
@@ -103,37 +103,30 @@ namespace :deploy do
|
|
103
103
|
exit 1
|
104
104
|
end
|
105
105
|
end
|
106
|
-
|
106
|
+
|
107
107
|
namespace :unlock do
|
108
|
-
desc
|
108
|
+
desc 'Unlocks the server for deployment'
|
109
109
|
task :default do
|
110
110
|
# Don't automatically remove custom deploy locks created by deploy:lock task
|
111
111
|
if fetch(:custom_deploy_lock)
|
112
112
|
puts colorize('Not removing custom deploy lock.', color: 33)
|
113
113
|
else
|
114
114
|
remove_deploy_lock
|
115
|
-
puts colorize(
|
115
|
+
puts colorize('Deploy unlocked.', color: 32)
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
119
119
|
task :force do
|
120
120
|
remove_deploy_lock
|
121
|
-
puts colorize(
|
121
|
+
puts colorize('Deploy unlocked.', color: 32)
|
122
122
|
end
|
123
123
|
end
|
124
|
-
|
125
|
-
before 'deploy:started', 'check_lock'
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
end
|
131
|
-
after 'deploy:published', 'unlock' do
|
132
|
-
invoke 'deploy:unlock:default'
|
133
|
-
end
|
134
|
-
after 'deploy:rollback', 'unlock' do
|
135
|
-
invoke 'deploy:unlock:default'
|
136
|
-
end
|
124
|
+
|
125
|
+
before 'deploy:started', 'check_lock'
|
126
|
+
before 'deploy:started', 'create_lock'
|
127
|
+
after 'deploy:published', 'unlock:default'
|
128
|
+
after 'deploy:rollback', 'unlock:default'
|
129
|
+
after 'deploy:failed', 'unlock:default'
|
137
130
|
|
138
131
|
end
|
139
132
|
|
@@ -144,7 +137,7 @@ def fetch_deploy_lock
|
|
144
137
|
|
145
138
|
unless fetch(:deploy_lock)
|
146
139
|
# Check all matching servers for a deploy lock.
|
147
|
-
on roles(fetch(:deploy_lock_roles))
|
140
|
+
on roles(fetch(:deploy_lock_roles)), in: :parallel do |host|
|
148
141
|
if test("[ -f #{fetch(:deploy_lock_file)} ]")
|
149
142
|
output = capture "cat #{fetch(:deploy_lock_file)}"
|
150
143
|
set :deploy_lock, YAML.load(output)
|
@@ -164,7 +157,7 @@ end
|
|
164
157
|
|
165
158
|
def remove_deploy_lock
|
166
159
|
on roles(fetch(:deploy_lock_roles)), in: :parallel do |host|
|
167
|
-
execute :rm,
|
160
|
+
execute :rm, '-f', fetch(:deploy_lock_file)
|
168
161
|
end
|
169
162
|
set :deploy_lock, nil
|
170
163
|
set :deploy_lock_removed, true
|
@@ -180,7 +173,7 @@ def message(application, stage, deploy_lock)
|
|
180
173
|
else
|
181
174
|
message << "\n\e[0;33mLock must be manually removed with: cap #{stage} deploy:unlock\e[0m"
|
182
175
|
end
|
183
|
-
|
176
|
+
|
184
177
|
colorize(message)
|
185
178
|
end
|
186
179
|
|
@@ -188,4 +181,4 @@ def colorize(text, options = {})
|
|
188
181
|
attribute = options[:attribute] || 0
|
189
182
|
color = options[:color] || 31
|
190
183
|
"\e[#{attribute};#{color}m" + text.strip + "\e[0m\n"
|
191
|
-
end
|
184
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-deploy-lock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maruf Hasan Bulbul
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
73
|
version: '0'
|
74
74
|
requirements: []
|
75
75
|
rubyforge_project:
|
76
|
-
rubygems_version: 2.
|
76
|
+
rubygems_version: 2.5.1
|
77
77
|
signing_key:
|
78
78
|
specification_version: 4
|
79
79
|
summary: Deploy lock feature for Capistrano 3.4.x
|