capistrano_deploy_lock 1.3.2 → 1.3.3

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MTIwMmZkYjNmZmRiNjcwYWIzNDMzYTZhZWJiOWJhNjAyYWQ4MzUxMA==
4
+ OGE3YzQ2MDUxYTBhZGEzYzY3ZDA3OTJiOWQ0NGQ2MTc0ODk2ODBjZg==
5
5
  data.tar.gz: !binary |-
6
- Y2RkNjQ1YjIyNzkwOWJhNmY5OTc5ZDY5ZmMxODU4YjZiYjIwODYxNg==
6
+ NjhhNzFmMTFkY2E4YjU2YWE3NmEwZTIzNDlmMjc3OWYzMTYxYjFlYw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- N2YwZDkwZTM0M2EwYzY1ZWVmYmQ2ZTU5MjIxOTY2NzBmMDMxNzM3MmQzYTJl
10
- ZDhkZTlmMTFhMDA0ZDViOGQ3ODEyMDAwYzY5M2QwZjU2MjMzODE1NzE3YmJi
11
- MmU5MGM1YjJkYmZhZmU4OWZkYjdmMWY5NjcxZWVjOWY4NjZhOWU=
9
+ NDk4ZDYzMmQxYzAzNWM5MGJmOWJkMjJhNWI0NGJhZjA2OWIzMzY1MjM4MTRk
10
+ ZjQ1ODUyOTJmM2ZkZWYwYjVlMGNjMTRjYTYwYzRlNDhhNjc1NGYxMGI3NThh
11
+ NTU4YWVlYTA0YTk1M2NkMzFjYWNlMzdjNjUyYjJlYmY0ZjViMDI=
12
12
  data.tar.gz: !binary |-
13
- NGMwZTI2ZjVmYzE2MGQwYzlkNjZjODRlZDhjZDgxNjY4MjFlMzczMmNmNzJj
14
- NDNhMzE2NGQ0ZWQyZmYzNjRjNTVhNmFmYWQyM2U3MjZiZTMxMjcwNTRhNTUx
15
- MTNlNzNhNzRkOGUxYzM0OWVjYjk2ZDQ2YzkxMGZlNWVmNDg4MmM=
13
+ NGEwZWYwYTNhZmMzNmM1YjVhMGFjN2VlMDY1YTU5NjkwMDlhMjg2Y2UxMTUx
14
+ Y2JlZDBjNDRmOTkwMDNjYmY4MWE1OWMzYTdhOTNiZDBhMDgzNjIxNGZlZTZm
15
+ OGFmNTk4ZTFiYzgxYjJiMmE3NGNlZjA2ZTE3ZTQ5ZGYzNTRlZTI=
data/README.md CHANGED
@@ -21,14 +21,13 @@ Add this line to your `config/deploy.rb`:
21
21
  ## Usage
22
22
 
23
23
  Your deploys will now be protected by a lock. Simply run `cap deploy` as usual.
24
- However, if someone else tries to deploy at the same time, their deploy will abort
25
- with an error like this:
24
+ However, if someone else tries to deploy at the same time, their deploy will show
25
+ a message like this, and exit:
26
26
 
27
27
  ```
28
28
  *** Deploy locked 3 minutes ago by 'ndbroadbent'
29
29
  *** Message: Deploying master branch
30
30
  *** Expires in 12 minutes
31
- .../capistrano/deploy_lock.rb:132:in `block (3 levels) in <top (required)>': Capistrano::DeployLockedError (Capistrano::DeployLockedError)
32
31
  ```
33
32
 
34
33
  The default deploy lock will expire after 15 minutes. This is so that crashed or interrupted deploys don't leave a stale lock behind.
@@ -14,8 +14,6 @@ rescue LoadError
14
14
  end
15
15
 
16
16
  module Capistrano
17
- DeployLockedError = Class.new(StandardError)
18
-
19
17
  module DeployLock
20
18
  def self.message(application, stage, deploy_lock)
21
19
  if stage
@@ -19,12 +19,20 @@ Capistrano::Configuration.instance(:must_exist).load do
19
19
  return if self[:deploy_lock_removed]
20
20
 
21
21
  if self[:deploy_lock].nil?
22
- lock_file = capture("[ -e #{deploy_lockfile} ] && cat #{deploy_lockfile} || true").strip
23
- if lock_file != ""
24
- set :deploy_lock, YAML.load(lock_file)
25
- else
26
- set :deploy_lock, false
22
+ # Check all matching servers for a deploy lock.
23
+ parallel do |session|
24
+ find_servers_for_task(current_task).each do |current_server|
25
+ session.else "[ -e #{deploy_lockfile} ] && cat #{deploy_lockfile} || true" do |ch, stream, output|
26
+ if output && output != ""
27
+ logger.info "Deploy lock found on: #{current_server.host}"
28
+ set :deploy_lock, YAML.load(output)
29
+ return
30
+ end
31
+ end
32
+ end
27
33
  end
34
+
35
+ set :deploy_lock, false
28
36
  end
29
37
  end
30
38
 
@@ -39,13 +47,13 @@ Capistrano::Configuration.instance(:must_exist).load do
39
47
  end
40
48
 
41
49
  desc "Deploy with a custom deploy lock"
42
- task :with_lock, roles: :app do
50
+ task :with_lock, :except => { :no_release => true } do
43
51
  lock
44
52
  deploy.default
45
53
  end
46
54
 
47
55
  desc "Set deploy lock with a custom lock message and expiry time"
48
- task :lock, roles: :app do
56
+ task :lock, :except => { :no_release => true } do
49
57
  set :lock_message, Capistrano::CLI.ui.ask("Lock Message: ")
50
58
  set :custom_deploy_lock, true
51
59
 
@@ -74,7 +82,7 @@ Capistrano::Configuration.instance(:must_exist).load do
74
82
  end
75
83
 
76
84
  desc "Creates a lock file, so that futher deploys will be prevented"
77
- task :create_lock, roles: :app do
85
+ task :create_lock, :except => { :no_release => true } do
78
86
  if self[:deploy_lock]
79
87
  logger.info 'Deploy lock already created.'
80
88
  next
@@ -101,7 +109,7 @@ Capistrano::Configuration.instance(:must_exist).load do
101
109
 
102
110
  namespace :unlock do
103
111
  desc "Unlocks the server for deployment"
104
- task :default, roles: :app do
112
+ task :default, :except => { :no_release => true } do
105
113
  # Don't automatically remove custom deploy locks created by deploy:lock task
106
114
  if self[:custom_deploy_lock]
107
115
  logger.info 'Not removing custom deploy lock.'
@@ -110,13 +118,13 @@ Capistrano::Configuration.instance(:must_exist).load do
110
118
  end
111
119
  end
112
120
 
113
- task :force, roles: :app do
121
+ task :force, :except => { :no_release => true } do
114
122
  remove_deploy_lock
115
123
  end
116
124
  end
117
125
 
118
126
  desc "Checks for a deploy lock. If present, deploy is aborted and message is displayed. Any expired locks are deleted."
119
- task :check_lock, roles: :app do
127
+ task :check_lock, :except => { :no_release => true } do
120
128
  # Don't check the lock if we just created it
121
129
  next if self[:deploy_lock]
122
130
 
@@ -145,12 +153,12 @@ Capistrano::Configuration.instance(:must_exist).load do
145
153
  end
146
154
  puts
147
155
  else
148
- raise Capistrano::DeployLockedError
156
+ exit 1
149
157
  end
150
158
  end
151
159
 
152
160
  desc "Refreshes an existing deploy lock's expiry time, if it is less than the default time"
153
- task :refresh_lock, roles: :app do
161
+ task :refresh_lock, :except => { :no_release => true } do
154
162
  fetch_deploy_lock
155
163
  next unless self[:deploy_lock]
156
164
 
@@ -1,3 +1,3 @@
1
1
  module CapistranoDeployLock
2
- VERSION = "1.3.2"
2
+ VERSION = "1.3.3"
3
3
  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.3.2
4
+ version: 1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Broadbent
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-11 00:00:00.000000000 Z
11
+ date: 2013-12-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Lock a server during deploy, to prevent people from deploying at the
14
14
  same time.