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 +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +9 -1
- data/lib/capistrano/pinned_releases/version.rb +1 -1
- data/lib/capistrano/tasks/deploy.rb +23 -3
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7cd93efb284679a11650b7b396e7b060d5dee821d44d65dde890f332256ab5b
|
4
|
+
data.tar.gz: e179eb1b3f2f67dc56f77cb6ed0eba35e6cf634520bdec431550996c4dc37d76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba44088a5d512ea53a1d101f8c77cc4f762c5ae2cac3530a09321cd966bc57212f35b19ebdd141acab0c2f3bc98b63a72b9ea5484f9fcbba6526107024dfb6f6
|
7
|
+
data.tar.gz: bf24e43051b5d292ac634098c2b10877c1d6398139986c26be45d181b70024030dd7c7a29fae90592b5d657c1d6bd128d793ac8d8641f9ee786feec0081a95d2
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
capistrano-pinned_releases (1.
|
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.
|
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
|
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'
|
@@ -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
|
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:
|
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.
|
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-
|
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
|
-
|
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
|