capistrano 3.7.0 → 3.17.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 +5 -5
- data/.circleci/config.yml +113 -0
- data/.github/pull_request_template.md +0 -4
- data/.github/release-drafter.yml +17 -0
- data/.github/workflows/push.yml +12 -0
- data/.rubocop.yml +13 -0
- data/CHANGELOG.md +1 -484
- data/CONTRIBUTING.md +2 -0
- data/DEVELOPMENT.md +5 -6
- data/Dangerfile +1 -54
- data/Gemfile +39 -3
- data/LICENSE.txt +1 -1
- data/README.md +10 -4
- data/RELEASING.md +3 -3
- data/Rakefile +13 -5
- data/UPGRADING-3.7.md +1 -12
- data/capistrano.gemspec +9 -8
- data/features/deploy.feature +34 -1
- data/features/installation.feature +8 -3
- data/features/step_definitions/assertions.rb +31 -3
- data/features/step_definitions/cap_commands.rb +10 -0
- data/features/step_definitions/setup.rb +37 -1
- data/features/subdirectory.feature +9 -0
- data/features/support/remote_command_helpers.rb +4 -0
- data/features/support/vagrant_helpers.rb +15 -8
- data/lib/Capfile +0 -4
- data/lib/capistrano/application.rb +11 -3
- data/lib/capistrano/configuration/filter.rb +1 -1
- data/lib/capistrano/configuration/host_filter.rb +1 -2
- data/lib/capistrano/configuration/question.rb +22 -3
- data/lib/capistrano/configuration/role_filter.rb +1 -2
- data/lib/capistrano/configuration/scm_resolver.rb +8 -3
- data/lib/capistrano/configuration/server.rb +1 -0
- data/lib/capistrano/configuration/servers.rb +16 -8
- data/lib/capistrano/configuration/variables.rb +2 -2
- data/lib/capistrano/configuration.rb +7 -3
- data/lib/capistrano/defaults.rb +1 -1
- data/lib/capistrano/doctor/servers_doctor.rb +1 -1
- data/lib/capistrano/doctor/variables_doctor.rb +12 -3
- data/lib/capistrano/dsl/paths.rb +3 -16
- data/lib/capistrano/dsl.rb +10 -2
- data/lib/capistrano/i18n.rb +7 -2
- data/lib/capistrano/immutable_task.rb +3 -2
- data/lib/capistrano/scm/git.rb +34 -7
- data/lib/capistrano/scm/hg.rb +8 -1
- data/lib/capistrano/scm/svn.rb +9 -0
- data/lib/capistrano/scm/tasks/git.rake +10 -9
- data/lib/capistrano/scm/tasks/hg.rake +1 -1
- data/lib/capistrano/tasks/deploy.rake +22 -10
- data/lib/capistrano/templates/deploy.rb.erb +10 -4
- data/lib/capistrano/templates/stage.rb.erb +1 -1
- data/lib/capistrano/version.rb +1 -1
- data/spec/integration/dsl_spec.rb +5 -3
- data/spec/lib/capistrano/application_spec.rb +16 -40
- data/spec/lib/capistrano/configuration/filter_spec.rb +1 -1
- data/spec/lib/capistrano/configuration/host_filter_spec.rb +10 -5
- data/spec/lib/capistrano/configuration/plugin_installer_spec.rb +1 -1
- data/spec/lib/capistrano/configuration/question_spec.rb +47 -11
- data/spec/lib/capistrano/configuration/role_filter_spec.rb +2 -2
- data/spec/lib/capistrano/configuration/scm_resolver_spec.rb +55 -0
- data/spec/lib/capistrano/configuration/server_spec.rb +1 -1
- data/spec/lib/capistrano/configuration/servers_spec.rb +6 -5
- data/spec/lib/capistrano/configuration_spec.rb +2 -2
- data/spec/lib/capistrano/doctor/environment_doctor_spec.rb +1 -1
- data/spec/lib/capistrano/doctor/gems_doctor_spec.rb +1 -1
- data/spec/lib/capistrano/doctor/servers_doctor_spec.rb +1 -1
- data/spec/lib/capistrano/doctor/variables_doctor_spec.rb +9 -1
- data/spec/lib/capistrano/dsl/paths_spec.rb +30 -0
- data/spec/lib/capistrano/dsl/task_enhancements_spec.rb +6 -6
- data/spec/lib/capistrano/dsl_spec.rb +48 -7
- data/spec/lib/capistrano/immutable_task_spec.rb +1 -1
- data/spec/lib/capistrano/plugin_spec.rb +2 -2
- data/spec/lib/capistrano/scm/git_spec.rb +54 -1
- data/spec/lib/capistrano/scm/hg_spec.rb +6 -1
- data/spec/lib/capistrano/scm/svn_spec.rb +21 -0
- data/spec/lib/capistrano/version_validator_spec.rb +23 -0
- data/spec/spec_helper.rb +13 -0
- data/spec/support/Vagrantfile +1 -1
- data/spec/support/test_app.rb +28 -14
- metadata +20 -80
- data/.travis.yml +0 -26
|
@@ -62,14 +62,14 @@ module Capistrano
|
|
|
62
62
|
dummy.expects(:set_defaults).never
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
-
it "calls set_defaults during load:defaults" do
|
|
65
|
+
it "calls set_defaults during load:defaults", capture_io: true do
|
|
66
66
|
dummy = DummyPlugin.new
|
|
67
67
|
dummy.expects(:set_defaults).once
|
|
68
68
|
install_plugin(dummy)
|
|
69
69
|
Rake::Task["load:defaults"].invoke
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
-
it "is able to load tasks from a .rake file" do
|
|
72
|
+
it "is able to load tasks from a .rake file", capture_io: true do
|
|
73
73
|
install_plugin(ExternalTasksPlugin)
|
|
74
74
|
Rake::Task["plugin_test"].invoke
|
|
75
75
|
expect(fetch(:plugin_result)).to eq("hello")
|
|
@@ -27,6 +27,28 @@ module Capistrano
|
|
|
27
27
|
Capistrano::Configuration.reset!
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
+
describe "#set_defaults" do
|
|
31
|
+
it "makes git_wrapper_path using a random hex value" do
|
|
32
|
+
env.set(:tmp_dir, "/tmp")
|
|
33
|
+
subject.set_defaults
|
|
34
|
+
expect(env.fetch(:git_wrapper_path)).to match(%r{/tmp/git-ssh-\h{20}\.sh})
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "makes git_max_concurrent_connections" do
|
|
38
|
+
subject.set_defaults
|
|
39
|
+
expect(env.fetch(:git_max_concurrent_connections)).to eq(10)
|
|
40
|
+
env.set(:git_max_concurrent_connections, 7)
|
|
41
|
+
expect(env.fetch(:git_max_concurrent_connections)).to eq(7)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "makes git_wait_interval" do
|
|
45
|
+
subject.set_defaults
|
|
46
|
+
expect(env.fetch(:git_wait_interval)).to eq(0)
|
|
47
|
+
env.set(:git_wait_interval, 5)
|
|
48
|
+
expect(env.fetch(:git_wait_interval)).to eq(5)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
30
52
|
describe "#git" do
|
|
31
53
|
it "should call execute git in the context, with arguments" do
|
|
32
54
|
backend.expects(:execute).with(:git, :init)
|
|
@@ -46,7 +68,7 @@ module Capistrano
|
|
|
46
68
|
describe "#check_repo_is_reachable" do
|
|
47
69
|
it "should test the repo url" do
|
|
48
70
|
env.set(:repo_url, "url")
|
|
49
|
-
backend.expects(:execute).with(:git, :'ls-remote
|
|
71
|
+
backend.expects(:execute).with(:git, :'ls-remote', "url", "HEAD").returns(true)
|
|
50
72
|
|
|
51
73
|
subject.check_repo_is_reachable
|
|
52
74
|
end
|
|
@@ -70,10 +92,27 @@ module Capistrano
|
|
|
70
92
|
|
|
71
93
|
subject.clone_repo
|
|
72
94
|
end
|
|
95
|
+
|
|
96
|
+
context "with username and password specified" do
|
|
97
|
+
before do
|
|
98
|
+
env.set(:git_http_username, "hello")
|
|
99
|
+
env.set(:git_http_password, "topsecret")
|
|
100
|
+
env.set(:repo_url, "https://example.com/repo.git")
|
|
101
|
+
env.set(:repo_path, "path")
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "should include the credentials in the url" do
|
|
105
|
+
backend.expects(:execute).with(:git, :clone, "--mirror", "https://hello:topsecret@example.com/repo.git", "path")
|
|
106
|
+
subject.clone_repo
|
|
107
|
+
end
|
|
108
|
+
end
|
|
73
109
|
end
|
|
74
110
|
|
|
75
111
|
describe "#update_mirror" do
|
|
76
112
|
it "should run git update" do
|
|
113
|
+
env.set(:repo_url, "url")
|
|
114
|
+
|
|
115
|
+
backend.expects(:execute).with(:git, :remote, "set-url", "origin", "url")
|
|
77
116
|
backend.expects(:execute).with(:git, :remote, :update, "--prune")
|
|
78
117
|
|
|
79
118
|
subject.update_mirror
|
|
@@ -82,6 +121,9 @@ module Capistrano
|
|
|
82
121
|
it "should run git update in shallow mode" do
|
|
83
122
|
env.set(:git_shallow_clone, "1")
|
|
84
123
|
env.set(:branch, "branch")
|
|
124
|
+
env.set(:repo_url, "url")
|
|
125
|
+
|
|
126
|
+
backend.expects(:execute).with(:git, :remote, "set-url", "origin", "url")
|
|
85
127
|
backend.expects(:execute).with(:git, :fetch, "--depth", "1", "origin", "branch")
|
|
86
128
|
|
|
87
129
|
subject.update_mirror
|
|
@@ -127,5 +169,16 @@ module Capistrano
|
|
|
127
169
|
expect(revision).to eq("81cec13b777ff46348693d327fc8e7832f79bf43")
|
|
128
170
|
end
|
|
129
171
|
end
|
|
172
|
+
|
|
173
|
+
describe "#verify_commit" do
|
|
174
|
+
it "should run git verify-commit" do
|
|
175
|
+
env.set(:branch, "branch")
|
|
176
|
+
|
|
177
|
+
backend.expects(:capture).with(:git, "rev-list --max-count=1 branch").returns("81cec13b777ff46348693d327fc8e7832f79bf43")
|
|
178
|
+
backend.expects(:execute).with(:git, :"verify-commit", "81cec13b777ff46348693d327fc8e7832f79bf43")
|
|
179
|
+
|
|
180
|
+
subject.verify_commit
|
|
181
|
+
end
|
|
182
|
+
end
|
|
130
183
|
end
|
|
131
184
|
end
|
|
@@ -85,8 +85,13 @@ module Capistrano
|
|
|
85
85
|
env.set(:repo_tree, "tree")
|
|
86
86
|
env.set(:branch, :branch)
|
|
87
87
|
env.set(:release_path, "path")
|
|
88
|
+
env.set(:tmp_dir, "/tmp")
|
|
88
89
|
|
|
89
|
-
|
|
90
|
+
SecureRandom.stubs(:hex).with(10).returns("random")
|
|
91
|
+
backend.expects(:execute).with(:hg, "archive -p . -I", "tree", "--rev", :branch, "/tmp/random.tar")
|
|
92
|
+
backend.expects(:execute).with(:mkdir, "-p", "path")
|
|
93
|
+
backend.expects(:execute).with(:tar, "-x --strip-components 1 -f", "/tmp/random.tar", "-C", "path")
|
|
94
|
+
backend.expects(:execute).with(:rm, "/tmp/random.tar")
|
|
90
95
|
|
|
91
96
|
subject.archive_to_release_path
|
|
92
97
|
end
|
|
@@ -71,6 +71,10 @@ module Capistrano
|
|
|
71
71
|
|
|
72
72
|
describe "#update_mirror" do
|
|
73
73
|
it "should run svn update" do
|
|
74
|
+
env.set(:repo_url, "url")
|
|
75
|
+
env.set(:repo_path, "path")
|
|
76
|
+
backend.expects(:capture).with(:svn, :info, "path").returns("URL: url\n")
|
|
77
|
+
|
|
74
78
|
env.set(:svn_username, "someuser")
|
|
75
79
|
env.set(:svn_password, "somepassword")
|
|
76
80
|
backend.expects(:execute).with(:svn, :update, "--username someuser", "--password somepassword")
|
|
@@ -80,6 +84,10 @@ module Capistrano
|
|
|
80
84
|
|
|
81
85
|
context "for specific revision" do
|
|
82
86
|
it "should run svn update" do
|
|
87
|
+
env.set(:repo_url, "url")
|
|
88
|
+
env.set(:repo_path, "path")
|
|
89
|
+
backend.expects(:capture).with(:svn, :info, "path").returns("URL: url\n")
|
|
90
|
+
|
|
83
91
|
env.set(:svn_username, "someuser")
|
|
84
92
|
env.set(:svn_password, "somepassword")
|
|
85
93
|
env.set(:svn_revision, "12345")
|
|
@@ -88,6 +96,19 @@ module Capistrano
|
|
|
88
96
|
subject.update_mirror
|
|
89
97
|
end
|
|
90
98
|
end
|
|
99
|
+
|
|
100
|
+
it "should run svn switch if repo_url is changed" do
|
|
101
|
+
env.set(:repo_url, "url")
|
|
102
|
+
env.set(:repo_path, "path")
|
|
103
|
+
backend.expects(:capture).with(:svn, :info, "path").returns("URL: old_url\n")
|
|
104
|
+
|
|
105
|
+
env.set(:svn_username, "someuser")
|
|
106
|
+
env.set(:svn_password, "somepassword")
|
|
107
|
+
backend.expects(:execute).with(:svn, :switch, "url", "--username someuser", "--password somepassword")
|
|
108
|
+
backend.expects(:execute).with(:svn, :update, "--username someuser", "--password somepassword")
|
|
109
|
+
|
|
110
|
+
subject.update_mirror
|
|
111
|
+
end
|
|
91
112
|
end
|
|
92
113
|
|
|
93
114
|
describe "#archive_to_release_path" do
|
|
@@ -89,6 +89,29 @@ module Capistrano
|
|
|
89
89
|
end
|
|
90
90
|
end
|
|
91
91
|
end
|
|
92
|
+
|
|
93
|
+
context "with multiple versions" do
|
|
94
|
+
let(:current_version) { "3.5.9" }
|
|
95
|
+
|
|
96
|
+
context "valid" do
|
|
97
|
+
let(:version) { [">= 3.5.0", "< 3.5.10"] }
|
|
98
|
+
it { is_expected.to be_truthy }
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
context "invalid" do
|
|
102
|
+
let(:version) { [">= 3.5.0", "< 3.5.8"] }
|
|
103
|
+
it "fails" do
|
|
104
|
+
expect { subject }.to raise_error(RuntimeError)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
context "invalid" do
|
|
109
|
+
let(:version) { ["> 3.5.9", "< 3.5.13"] }
|
|
110
|
+
it "fails" do
|
|
111
|
+
expect { subject }.to raise_error(RuntimeError)
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
92
115
|
end
|
|
93
116
|
end
|
|
94
117
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -13,4 +13,17 @@ RSpec.configure do |config|
|
|
|
13
13
|
config.raise_errors_for_deprecations!
|
|
14
14
|
config.mock_framework = :mocha
|
|
15
15
|
config.order = "random"
|
|
16
|
+
|
|
17
|
+
config.around(:example, capture_io: true) do |example|
|
|
18
|
+
begin
|
|
19
|
+
Rake.application.options.trace_output = StringIO.new
|
|
20
|
+
$stdout = StringIO.new
|
|
21
|
+
$stderr = StringIO.new
|
|
22
|
+
example.run
|
|
23
|
+
ensure
|
|
24
|
+
Rake.application.options.trace_output = STDERR
|
|
25
|
+
$stdout = STDOUT
|
|
26
|
+
$stderr = STDERR
|
|
27
|
+
end
|
|
28
|
+
end
|
|
16
29
|
end
|
data/spec/support/Vagrantfile
CHANGED
|
@@ -6,7 +6,7 @@ Vagrant.configure("2") do |config|
|
|
|
6
6
|
[:app].each_with_index do |role, i|
|
|
7
7
|
config.vm.define(role, primary: true) do |primary|
|
|
8
8
|
primary.vm.define role
|
|
9
|
-
primary.vm.box = "hashicorp/
|
|
9
|
+
primary.vm.box = "hashicorp/bionic64"
|
|
10
10
|
primary.vm.network "forwarded_port", guest: 22, host: "222#{i}".to_i
|
|
11
11
|
primary.vm.provision :shell, inline: "sudo apt-get -y install git-core"
|
|
12
12
|
|
data/spec/support/test_app.rb
CHANGED
|
@@ -19,6 +19,7 @@ module TestApp
|
|
|
19
19
|
set :linked_files, #{linked_files}
|
|
20
20
|
set :linked_dirs, #{linked_dirs}
|
|
21
21
|
set :format_options, log_file: nil
|
|
22
|
+
set :local_user, #{current_user.inspect}
|
|
22
23
|
CONFIG
|
|
23
24
|
end
|
|
24
25
|
|
|
@@ -39,18 +40,19 @@ module TestApp
|
|
|
39
40
|
FileUtils.mkdir(test_app_path)
|
|
40
41
|
|
|
41
42
|
File.open(gemfile, "w+") do |file|
|
|
43
|
+
file.write "source 'https://rubygems.org'\n"
|
|
42
44
|
file.write "gem 'capistrano', path: '#{path_to_cap}'"
|
|
43
45
|
end
|
|
44
46
|
|
|
45
47
|
Dir.chdir(test_app_path) do
|
|
46
|
-
|
|
48
|
+
run "bundle"
|
|
47
49
|
end
|
|
48
50
|
end
|
|
49
51
|
|
|
50
52
|
def install_test_app_with(config)
|
|
51
53
|
create_test_app
|
|
52
54
|
Dir.chdir(test_app_path) do
|
|
53
|
-
|
|
55
|
+
run "cap install STAGES=#{stage}"
|
|
54
56
|
end
|
|
55
57
|
write_local_deploy_file(config)
|
|
56
58
|
end
|
|
@@ -89,14 +91,16 @@ module TestApp
|
|
|
89
91
|
File.open(shared_path.join(path), "w")
|
|
90
92
|
end
|
|
91
93
|
|
|
92
|
-
def cap(task)
|
|
93
|
-
run "
|
|
94
|
+
def cap(task, subdirectory=nil)
|
|
95
|
+
run "cap #{stage} #{task} --trace", subdirectory
|
|
94
96
|
end
|
|
95
97
|
|
|
96
|
-
def run(command)
|
|
98
|
+
def run(command, subdirectory=nil)
|
|
97
99
|
output = nil
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
command = "bundle exec #{command}" unless command =~ /^bundle\b/
|
|
101
|
+
dir = subdirectory ? test_app_path.join(subdirectory) : test_app_path
|
|
102
|
+
Dir.chdir(dir) do
|
|
103
|
+
output = with_clean_bundler_env { `#{command}` }
|
|
100
104
|
end
|
|
101
105
|
[$CHILD_STATUS.success?, output]
|
|
102
106
|
end
|
|
@@ -129,12 +133,12 @@ module TestApp
|
|
|
129
133
|
deploy_to.join("releases")
|
|
130
134
|
end
|
|
131
135
|
|
|
132
|
-
def release_path
|
|
133
|
-
releases_path.join(
|
|
136
|
+
def release_path(t=timestamp)
|
|
137
|
+
releases_path.join(t)
|
|
134
138
|
end
|
|
135
139
|
|
|
136
|
-
def timestamp
|
|
137
|
-
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
|
140
|
+
def timestamp(offset=0)
|
|
141
|
+
(Time.now.utc + offset).strftime("%Y%m%d%H%M%S")
|
|
138
142
|
end
|
|
139
143
|
|
|
140
144
|
def repo_path
|
|
@@ -154,7 +158,7 @@ module TestApp
|
|
|
154
158
|
end
|
|
155
159
|
|
|
156
160
|
def current_user
|
|
157
|
-
|
|
161
|
+
"(GitHub Web Flow) via ShipIt"
|
|
158
162
|
end
|
|
159
163
|
|
|
160
164
|
def task_dir
|
|
@@ -182,7 +186,17 @@ module TestApp
|
|
|
182
186
|
FileUtils.mv(config_path, location)
|
|
183
187
|
end
|
|
184
188
|
|
|
185
|
-
def
|
|
186
|
-
"/tmp/git-ssh
|
|
189
|
+
def git_wrapper_path_glob
|
|
190
|
+
"/tmp/git-ssh-*.sh"
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def with_clean_bundler_env(&block)
|
|
194
|
+
return yield unless defined?(Bundler)
|
|
195
|
+
|
|
196
|
+
if Bundler.respond_to?(:with_unbundled_env)
|
|
197
|
+
Bundler.with_unbundled_env(&block)
|
|
198
|
+
else
|
|
199
|
+
Bundler.with_clean_env(&block)
|
|
200
|
+
end
|
|
187
201
|
end
|
|
188
202
|
end
|
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: capistrano
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.17.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tom Clements
|
|
8
8
|
- Lee Hambley
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2022-03-12 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: airbrussh
|
|
@@ -67,76 +67,6 @@ dependencies:
|
|
|
67
67
|
- - ">="
|
|
68
68
|
- !ruby/object:Gem::Version
|
|
69
69
|
version: 1.9.0
|
|
70
|
-
- !ruby/object:Gem::Dependency
|
|
71
|
-
name: capistrano-harrow
|
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
|
73
|
-
requirements:
|
|
74
|
-
- - ">="
|
|
75
|
-
- !ruby/object:Gem::Version
|
|
76
|
-
version: '0'
|
|
77
|
-
type: :runtime
|
|
78
|
-
prerelease: false
|
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
80
|
-
requirements:
|
|
81
|
-
- - ">="
|
|
82
|
-
- !ruby/object:Gem::Version
|
|
83
|
-
version: '0'
|
|
84
|
-
- !ruby/object:Gem::Dependency
|
|
85
|
-
name: danger
|
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
|
87
|
-
requirements:
|
|
88
|
-
- - ">="
|
|
89
|
-
- !ruby/object:Gem::Version
|
|
90
|
-
version: '0'
|
|
91
|
-
type: :development
|
|
92
|
-
prerelease: false
|
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
94
|
-
requirements:
|
|
95
|
-
- - ">="
|
|
96
|
-
- !ruby/object:Gem::Version
|
|
97
|
-
version: '0'
|
|
98
|
-
- !ruby/object:Gem::Dependency
|
|
99
|
-
name: mocha
|
|
100
|
-
requirement: !ruby/object:Gem::Requirement
|
|
101
|
-
requirements:
|
|
102
|
-
- - ">="
|
|
103
|
-
- !ruby/object:Gem::Version
|
|
104
|
-
version: '0'
|
|
105
|
-
type: :development
|
|
106
|
-
prerelease: false
|
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
108
|
-
requirements:
|
|
109
|
-
- - ">="
|
|
110
|
-
- !ruby/object:Gem::Version
|
|
111
|
-
version: '0'
|
|
112
|
-
- !ruby/object:Gem::Dependency
|
|
113
|
-
name: rspec
|
|
114
|
-
requirement: !ruby/object:Gem::Requirement
|
|
115
|
-
requirements:
|
|
116
|
-
- - ">="
|
|
117
|
-
- !ruby/object:Gem::Version
|
|
118
|
-
version: '0'
|
|
119
|
-
type: :development
|
|
120
|
-
prerelease: false
|
|
121
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
122
|
-
requirements:
|
|
123
|
-
- - ">="
|
|
124
|
-
- !ruby/object:Gem::Version
|
|
125
|
-
version: '0'
|
|
126
|
-
- !ruby/object:Gem::Dependency
|
|
127
|
-
name: rubocop
|
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
|
129
|
-
requirements:
|
|
130
|
-
- - ">="
|
|
131
|
-
- !ruby/object:Gem::Version
|
|
132
|
-
version: '0'
|
|
133
|
-
type: :development
|
|
134
|
-
prerelease: false
|
|
135
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
136
|
-
requirements:
|
|
137
|
-
- - ">="
|
|
138
|
-
- !ruby/object:Gem::Version
|
|
139
|
-
version: '0'
|
|
140
70
|
description: Capistrano is a utility and framework for executing commands in parallel
|
|
141
71
|
on multiple remote machines, via SSH.
|
|
142
72
|
email:
|
|
@@ -148,11 +78,13 @@ executables:
|
|
|
148
78
|
extensions: []
|
|
149
79
|
extra_rdoc_files: []
|
|
150
80
|
files:
|
|
81
|
+
- ".circleci/config.yml"
|
|
151
82
|
- ".github/issue_template.md"
|
|
152
83
|
- ".github/pull_request_template.md"
|
|
84
|
+
- ".github/release-drafter.yml"
|
|
85
|
+
- ".github/workflows/push.yml"
|
|
153
86
|
- ".gitignore"
|
|
154
87
|
- ".rubocop.yml"
|
|
155
|
-
- ".travis.yml"
|
|
156
88
|
- CHANGELOG.md
|
|
157
89
|
- CONTRIBUTING.md
|
|
158
90
|
- DEVELOPMENT.md
|
|
@@ -176,6 +108,7 @@ files:
|
|
|
176
108
|
- features/step_definitions/assertions.rb
|
|
177
109
|
- features/step_definitions/cap_commands.rb
|
|
178
110
|
- features/step_definitions/setup.rb
|
|
111
|
+
- features/subdirectory.feature
|
|
179
112
|
- features/support/env.rb
|
|
180
113
|
- features/support/remote_command_helpers.rb
|
|
181
114
|
- features/support/vagrant_helpers.rb
|
|
@@ -247,6 +180,7 @@ files:
|
|
|
247
180
|
- spec/lib/capistrano/configuration/plugin_installer_spec.rb
|
|
248
181
|
- spec/lib/capistrano/configuration/question_spec.rb
|
|
249
182
|
- spec/lib/capistrano/configuration/role_filter_spec.rb
|
|
183
|
+
- spec/lib/capistrano/configuration/scm_resolver_spec.rb
|
|
250
184
|
- spec/lib/capistrano/configuration/server_spec.rb
|
|
251
185
|
- spec/lib/capistrano/configuration/servers_spec.rb
|
|
252
186
|
- spec/lib/capistrano/configuration_spec.rb
|
|
@@ -277,11 +211,16 @@ files:
|
|
|
277
211
|
- spec/support/tasks/plugin.rake
|
|
278
212
|
- spec/support/tasks/root.rake
|
|
279
213
|
- spec/support/test_app.rb
|
|
280
|
-
homepage:
|
|
214
|
+
homepage: https://capistranorb.com/
|
|
281
215
|
licenses:
|
|
282
216
|
- MIT
|
|
283
|
-
metadata:
|
|
284
|
-
|
|
217
|
+
metadata:
|
|
218
|
+
bug_tracker_uri: https://github.com/capistrano/capistrano/issues
|
|
219
|
+
changelog_uri: https://github.com/capistrano/capistrano/releases
|
|
220
|
+
source_code_uri: https://github.com/capistrano/capistrano
|
|
221
|
+
homepage_uri: https://capistranorb.com/
|
|
222
|
+
documentation_uri: https://capistranorb.com/
|
|
223
|
+
post_install_message:
|
|
285
224
|
rdoc_options: []
|
|
286
225
|
require_paths:
|
|
287
226
|
- lib
|
|
@@ -296,9 +235,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
296
235
|
- !ruby/object:Gem::Version
|
|
297
236
|
version: '0'
|
|
298
237
|
requirements: []
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
signing_key:
|
|
238
|
+
rubygems_version: 3.3.8
|
|
239
|
+
signing_key:
|
|
302
240
|
specification_version: 4
|
|
303
241
|
summary: Capistrano - Welcome to easy deployment with Ruby over SSH
|
|
304
242
|
test_files:
|
|
@@ -312,6 +250,7 @@ test_files:
|
|
|
312
250
|
- features/step_definitions/assertions.rb
|
|
313
251
|
- features/step_definitions/cap_commands.rb
|
|
314
252
|
- features/step_definitions/setup.rb
|
|
253
|
+
- features/subdirectory.feature
|
|
315
254
|
- features/support/env.rb
|
|
316
255
|
- features/support/remote_command_helpers.rb
|
|
317
256
|
- features/support/vagrant_helpers.rb
|
|
@@ -325,6 +264,7 @@ test_files:
|
|
|
325
264
|
- spec/lib/capistrano/configuration/plugin_installer_spec.rb
|
|
326
265
|
- spec/lib/capistrano/configuration/question_spec.rb
|
|
327
266
|
- spec/lib/capistrano/configuration/role_filter_spec.rb
|
|
267
|
+
- spec/lib/capistrano/configuration/scm_resolver_spec.rb
|
|
328
268
|
- spec/lib/capistrano/configuration/server_spec.rb
|
|
329
269
|
- spec/lib/capistrano/configuration/servers_spec.rb
|
|
330
270
|
- spec/lib/capistrano/configuration_spec.rb
|
data/.travis.yml
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
language: ruby
|
|
2
|
-
rvm:
|
|
3
|
-
- 2.3.1
|
|
4
|
-
- 2.2
|
|
5
|
-
- 2.1
|
|
6
|
-
- 2.0
|
|
7
|
-
matrix:
|
|
8
|
-
# Rubinius periodically fails in general, and it always segfaults for RuboCop
|
|
9
|
-
# in particular. Until we figure out how to make it work consistently, allow
|
|
10
|
-
# it to fail without breaking the build.
|
|
11
|
-
allow_failures:
|
|
12
|
-
- rvm: rbx-2
|
|
13
|
-
include:
|
|
14
|
-
- rvm: rbx-2
|
|
15
|
-
script: bundle exec rake spec
|
|
16
|
-
# Run Danger only once, on 2.3.1
|
|
17
|
-
- rvm: 2.3.1
|
|
18
|
-
before_script: bundle exec danger
|
|
19
|
-
|
|
20
|
-
script: bundle exec rake spec rubocop
|
|
21
|
-
install: bundle install --jobs=1
|
|
22
|
-
cache: bundler
|
|
23
|
-
branches:
|
|
24
|
-
except:
|
|
25
|
-
- legacy-v2
|
|
26
|
-
sudo: false
|