capistrano-deploy-lock 1.0.3 → 1.0.4
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.
- 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
|