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