capistrano-pinned_releases 1.2.0 → 1.4.0

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,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