capistrano-pinned_releases 1.2.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 097b9eb540a3ab828dc78e373e6bc220aa6cbb4e0c44fa40ec2970fb0ef89edb
4
- data.tar.gz: c1b05a6232ed43542abac034c49bea2b4219c8d1570953f3ec9f70a37e6ba89d
3
+ metadata.gz: e7cd93efb284679a11650b7b396e7b060d5dee821d44d65dde890f332256ab5b
4
+ data.tar.gz: e179eb1b3f2f67dc56f77cb6ed0eba35e6cf634520bdec431550996c4dc37d76
5
5
  SHA512:
6
- metadata.gz: c5dae381ba5640f1b930b394c5bd15be87717355d0a71295da3f8161f574e7147555dca2ca20678910bc0afdaa29c115463389e5fa81c8e5674d52e51d62feb6
7
- data.tar.gz: fa2759073ba10081eaa3c642c9dc87dcd418db884048a6103ebc6c040226d8351144db50caf6af8c0b4117273ea64a75b3bfa95b25959fd722979e1f578963c7
6
+ metadata.gz: ba44088a5d512ea53a1d101f8c77cc4f762c5ae2cac3530a09321cd966bc57212f35b19ebdd141acab0c2f3bc98b63a72b9ea5484f9fcbba6526107024dfb6f6
7
+ data.tar.gz: bf24e43051b5d292ac634098c2b10877c1d6398139986c26be45d181b70024030dd7c7a29fae90592b5d657c1d6bd128d793ac8d8641f9ee786feec0081a95d2
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- capistrano-pinned_releases (1.1.0)
4
+ capistrano-pinned_releases (1.2.0)
5
5
  capistrano (~> 3.4)
6
6
  capistrano-bundler (~> 1.1)
7
7
 
@@ -18,7 +18,7 @@ GEM
18
18
  capistrano-bundler (1.5.0)
19
19
  capistrano (~> 3.1)
20
20
  coderay (1.1.2)
21
- concurrent-ruby (1.1.4)
21
+ concurrent-ruby (1.1.5)
22
22
  i18n (1.5.3)
23
23
  concurrent-ruby (~> 1.0)
24
24
  method_source (0.9.2)
data/README.md CHANGED
@@ -45,10 +45,18 @@ The extension provides following tasks, all under the `deploy:pinned` namespace.
45
45
 
46
46
  deploy:pinned:unpin RELEASE_NAME=20190220192205
47
47
 
48
- without the `RELEASE_NAME` environment variable, it pins the current release:
48
+ without the `RELEASE_NAME` environment variable, it unpins the current release:
49
49
 
50
50
  deploy:pinned:unpin
51
51
 
52
+ 4. **`unpin_old`**: Unpin old pinned releases; defaults to keeping the same number as `keep_releases`
53
+
54
+ deploy:pinned:unpin_old
55
+
56
+ Helpful if running before cleanup
57
+
58
+ after "deploy:pinned:unpin_old", "deploy:cleanup"
59
+
52
60
  These tasks can be run individually, but they're far more useful when used during the capistrano release lifecycle:
53
61
 
54
62
  after 'sidekiq:restart', 'deploy:pinned:pin'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Capistrano
4
4
  module PinnedReleases
5
- VERSION = "1.2.0"
5
+ VERSION = "1.4.0"
6
6
  end
7
7
  end
@@ -12,7 +12,7 @@ namespace :deploy do
12
12
 
13
13
  namespace :pinned do
14
14
  # rubocop:disable Metrics/LineLength
15
- desc "Pin a given release: 'cap production deploy:pin:release RELEASE_NAME=20190220192205', without RELEASE_NAME pins the current release"
15
+ desc "Pin a given release: 'cap production deploy:pinned:pin RELEASE_NAME=20190220192205', without RELEASE_NAME pins the current release"
16
16
  # rubocop:enable Metrics/LineLength
17
17
  task pin: "deploy:check" do
18
18
  on release_roles :all do
@@ -36,7 +36,7 @@ namespace :deploy do
36
36
  end
37
37
 
38
38
  # rubocop:disable Metrics/LineLength
39
- desc "Unpin a given release: 'cap production deploy:pin:remove RELEASE_NAME=20190220192205', without RELEASE_NAME unpins the current release"
39
+ desc "Unpin a given release: 'cap production deploy:pinned:unpin RELEASE_NAME=20190220192205', without RELEASE_NAME unpins the current release"
40
40
  # rubocop:enable Metrics/LineLength
41
41
  task unpin: "deploy:check" do
42
42
  on release_roles :all do
@@ -56,6 +56,27 @@ namespace :deploy do
56
56
  end
57
57
  end
58
58
 
59
+ desc "Unpin all except the most recent releases: 'cap production deploy:pinned:unpin_old'"
60
+ task unpin_old: "deploy:check" do
61
+ on release_roles :all do
62
+ pinned_releases_directory = deploy_path.join("pinned_releases")
63
+ pinned_releases = capture(:ls, pinned_releases_directory).split(/\s+/).sort
64
+
65
+ keep_releases = fetch(:keep_pinned_releases, fetch(:keep_releases))
66
+
67
+ if pinned_releases.count > keep_releases
68
+ take_count = pinned_releases.count - keep_releases
69
+ releases_to_unpin = pinned_releases.take(take_count)
70
+
71
+ releases_to_unpin.each do |release_name|
72
+ info t(:unpinning_release, host: host.to_s, release_name: release_name)
73
+ pin_name = pinned_releases_directory.join(release_name)
74
+ execute :rm, "-f", pin_name
75
+ end
76
+ end
77
+ end
78
+ end
79
+
59
80
  desc "List all currently pinned releases"
60
81
  task list: "deploy:check" do
61
82
  on release_roles :all do
@@ -67,7 +88,6 @@ namespace :deploy do
67
88
  end
68
89
 
69
90
  desc "Clean up old releases"
70
- Rake::Task["deploy:cleanup"].clear_actions
71
91
  task cleanup: "check:directories" do
72
92
  on release_roles :all do |host|
73
93
  releases = capture(:ls, "-x", releases_path).split
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-pinned_releases
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Swanand Pagnis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-05 00:00:00.000000000 Z
11
+ date: 2019-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -110,8 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  requirements: []
113
- rubyforge_project:
114
- rubygems_version: 2.7.8
113
+ rubygems_version: 3.0.6
115
114
  signing_key:
116
115
  specification_version: 4
117
116
  summary: Capistrano extension to pin and unpin releases. Pinned releases don't get