tomo 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -1
- data/lib/tomo/plugin/puma/systemd/service.erb +1 -1
- data/lib/tomo/testing.rb +0 -2
- data/lib/tomo/testing/Dockerfile +1 -3
- data/lib/tomo/testing/docker_image.rb +2 -9
- data/lib/tomo/testing/mock_plugin_tester.rb +27 -4
- data/lib/tomo/version.rb +1 -1
- metadata +7 -23
- data/lib/tomo/testing/docker_plugin_tester.rb +0 -39
- data/lib/tomo/testing/plugin_tester.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6475bf477c37fc9b1c28dfac30ed59d5b29a0f9c9bcde84e5df77a3bde38da66
|
4
|
+
data.tar.gz: 476f861ba1ed0f17f4767c168ca1c1984487df84c061980c02954111b2d20cbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fefda893dcede7dff398410779e13bc33d4e23b2d79766cedb5e68268a32179614e3c6cb4a3ba2ab074860cb779142773b8cc786f54719777911901df735309c
|
7
|
+
data.tar.gz: d0c9ef9a4c696e3a80b59814f2c4790c4ee0979d72bfcad0d87bed69ac57966c61f43ae5b2cf78ef4ea29e23fd1bfca7163337d3e4fae905424a3d05db408750
|
data/README.md
CHANGED
@@ -191,7 +191,6 @@ Read the [Writing Custom Tasks](https://tomo-deploy.com/tutorials/writing-custom
|
|
191
191
|
- [Result](https://tomo-deploy.com/api/Result/)
|
192
192
|
- [TaskLibrary](https://tomo-deploy.com/api/TaskLibrary/)
|
193
193
|
- [Testing::MockPluginTester](https://tomo-deploy.com/api/testing/MockPluginTester/)
|
194
|
-
- [Testing::DockerPluginTester](https://tomo-deploy.com/api/testing/DockerPluginTester/)
|
195
194
|
|
196
195
|
## FAQ
|
197
196
|
|
data/lib/tomo/testing.rb
CHANGED
@@ -6,14 +6,12 @@ module Tomo
|
|
6
6
|
autoload :CLITester, "tomo/testing/cli_tester"
|
7
7
|
autoload :Connection, "tomo/testing/connection"
|
8
8
|
autoload :DockerImage, "tomo/testing/docker_image"
|
9
|
-
autoload :DockerPluginTester, "tomo/testing/docker_plugin_tester"
|
10
9
|
autoload :HostExtensions, "tomo/testing/host_extensions"
|
11
10
|
autoload :Local, "tomo/testing/local"
|
12
11
|
autoload :LogCapturing, "tomo/testing/log_capturing"
|
13
12
|
autoload :MockedExecError, "tomo/testing/mocked_exec_error"
|
14
13
|
autoload :MockedExitError, "tomo/testing/mocked_exit_error"
|
15
14
|
autoload :MockPluginTester, "tomo/testing/mock_plugin_tester"
|
16
|
-
autoload :PluginTester, "tomo/testing/plugin_tester"
|
17
15
|
autoload :RemoteExtensions, "tomo/testing/remote_extensions"
|
18
16
|
autoload :SSHExtensions, "tomo/testing/ssh_extensions"
|
19
17
|
|
data/lib/tomo/testing/Dockerfile
CHANGED
@@ -1,10 +1,8 @@
|
|
1
|
-
FROM ubuntu:
|
1
|
+
FROM ubuntu:20.04
|
2
2
|
WORKDIR /provision
|
3
3
|
COPY ./tomo_test_ed25519.pub /root/.ssh/authorized_keys
|
4
4
|
COPY ./ubuntu_setup.sh ./
|
5
5
|
RUN ./ubuntu_setup.sh
|
6
|
-
COPY ./custom_setup.sh ./
|
7
|
-
RUN ./custom_setup.sh
|
8
6
|
COPY ./systemctl.rb /usr/local/bin/systemctl
|
9
7
|
RUN chmod a+x /usr/local/bin/systemctl
|
10
8
|
EXPOSE 22
|
@@ -22,13 +22,8 @@ module Tomo
|
|
22
22
|
end
|
23
23
|
@running_images = []
|
24
24
|
|
25
|
-
attr_accessor :setup_script
|
26
25
|
attr_reader :host
|
27
26
|
|
28
|
-
def initialize
|
29
|
-
@setup_script = "#!/bin/bash\n"
|
30
|
-
end
|
31
|
-
|
32
27
|
def build_and_run
|
33
28
|
raise "Already running!" if frozen?
|
34
29
|
|
@@ -74,8 +69,8 @@ module Tomo
|
|
74
69
|
attr_reader :container_id, :image_id, :private_key_path
|
75
70
|
|
76
71
|
def pull_base_image_if_needed
|
77
|
-
images = Local.capture('docker images --format "{{.ID}}" ubuntu:
|
78
|
-
Local.capture("docker pull ubuntu:
|
72
|
+
images = Local.capture('docker images --format "{{.ID}}" ubuntu:20.04')
|
73
|
+
Local.capture("docker pull ubuntu:20.04") if images.strip.empty?
|
79
74
|
end
|
80
75
|
|
81
76
|
def set_up_private_key
|
@@ -121,8 +116,6 @@ module Tomo
|
|
121
116
|
FILES_TO_COPY.each do |file|
|
122
117
|
FileUtils.cp(File.expand_path(file, __dir__), build_dir)
|
123
118
|
end
|
124
|
-
IO.write(File.join(build_dir, "custom_setup.sh"), setup_script)
|
125
|
-
FileUtils.chmod(0o755, File.join(build_dir, "custom_setup.sh"))
|
126
119
|
end
|
127
120
|
|
128
121
|
def build_dir
|
@@ -1,10 +1,29 @@
|
|
1
1
|
module Tomo
|
2
2
|
module Testing
|
3
|
-
class MockPluginTester
|
3
|
+
class MockPluginTester
|
4
|
+
include LogCapturing
|
5
|
+
|
4
6
|
def initialize(*plugin_names, settings: {}, release: {})
|
5
|
-
host = Host.parse("testing@host")
|
6
|
-
host.release.merge!(release)
|
7
|
-
|
7
|
+
@host = Host.parse("testing@host")
|
8
|
+
@host.release.merge!(release)
|
9
|
+
config = Configuration.new
|
10
|
+
config.hosts << @host
|
11
|
+
config.plugins.push(*plugin_names, "testing")
|
12
|
+
config.settings[:application] = "testing"
|
13
|
+
config.settings.merge!(settings)
|
14
|
+
@runtime = config.build_runtime
|
15
|
+
end
|
16
|
+
|
17
|
+
def call_helper(helper, *args, **kwargs)
|
18
|
+
run_task("testing:call_helper", helper, args, kwargs)
|
19
|
+
host.helper_values.pop
|
20
|
+
end
|
21
|
+
|
22
|
+
def run_task(task, *args)
|
23
|
+
capturing_logger_output do
|
24
|
+
runtime.run!(task, *args, privileged: false)
|
25
|
+
nil
|
26
|
+
end
|
8
27
|
end
|
9
28
|
|
10
29
|
def executed_script
|
@@ -21,6 +40,10 @@ module Tomo
|
|
21
40
|
host.mock(script, **kwargs)
|
22
41
|
self
|
23
42
|
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
attr_reader :host, :runtime
|
24
47
|
end
|
25
48
|
end
|
26
49
|
end
|
data/lib/tomo/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tomo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Brictson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,20 +66,6 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.4'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: minitest-hooks
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.5'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '1.5'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: minitest-reporters
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,28 +100,28 @@ dependencies:
|
|
114
100
|
requirements:
|
115
101
|
- - '='
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
103
|
+
version: 0.82.0
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
108
|
- - '='
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.
|
110
|
+
version: 0.82.0
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
name: rubocop-minitest
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
128
114
|
requirements:
|
129
115
|
- - '='
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.
|
117
|
+
version: 0.9.0
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
122
|
- - '='
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.
|
124
|
+
version: 0.9.0
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: rubocop-performance
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -292,14 +278,12 @@ files:
|
|
292
278
|
- lib/tomo/testing/cli_tester.rb
|
293
279
|
- lib/tomo/testing/connection.rb
|
294
280
|
- lib/tomo/testing/docker_image.rb
|
295
|
-
- lib/tomo/testing/docker_plugin_tester.rb
|
296
281
|
- lib/tomo/testing/host_extensions.rb
|
297
282
|
- lib/tomo/testing/local.rb
|
298
283
|
- lib/tomo/testing/log_capturing.rb
|
299
284
|
- lib/tomo/testing/mock_plugin_tester.rb
|
300
285
|
- lib/tomo/testing/mocked_exec_error.rb
|
301
286
|
- lib/tomo/testing/mocked_exit_error.rb
|
302
|
-
- lib/tomo/testing/plugin_tester.rb
|
303
287
|
- lib/tomo/testing/remote_extensions.rb
|
304
288
|
- lib/tomo/testing/ssh_extensions.rb
|
305
289
|
- lib/tomo/testing/systemctl.rb
|
@@ -331,7 +315,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
331
315
|
- !ruby/object:Gem::Version
|
332
316
|
version: '0'
|
333
317
|
requirements: []
|
334
|
-
rubygems_version: 3.1.
|
318
|
+
rubygems_version: 3.1.3
|
335
319
|
signing_key:
|
336
320
|
specification_version: 4
|
337
321
|
summary: A friendly CLI for deploying Rails apps ✨
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require "fileutils"
|
2
|
-
require "securerandom"
|
3
|
-
require "tmpdir"
|
4
|
-
|
5
|
-
module Tomo
|
6
|
-
module Testing
|
7
|
-
class DockerPluginTester < PluginTester
|
8
|
-
def initialize(*plugin_names, settings: {}, setup_script: nil)
|
9
|
-
@docker_image = DockerImage.new
|
10
|
-
@docker_image.setup_script = setup_script if setup_script
|
11
|
-
@docker_image.build_and_run
|
12
|
-
host = @docker_image.host
|
13
|
-
super(
|
14
|
-
*plugin_names,
|
15
|
-
settings: @docker_image.ssh_settings.merge(settings),
|
16
|
-
host: host
|
17
|
-
)
|
18
|
-
end
|
19
|
-
|
20
|
-
def run(shell_script, **kwargs)
|
21
|
-
call_helper(:run, shell_script, **kwargs)
|
22
|
-
end
|
23
|
-
|
24
|
-
def run_task(task, *args)
|
25
|
-
Testing.enabling_ssh do
|
26
|
-
super
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def teardown
|
31
|
-
docker_image.stop
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
attr_reader :docker_image
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Tomo
|
2
|
-
module Testing
|
3
|
-
class PluginTester
|
4
|
-
include LogCapturing
|
5
|
-
|
6
|
-
def initialize(*plugin_names, settings: {}, host:)
|
7
|
-
@host = host
|
8
|
-
config = Configuration.new
|
9
|
-
config.hosts << @host
|
10
|
-
config.plugins.push(*plugin_names, "testing")
|
11
|
-
config.settings[:application] = "testing"
|
12
|
-
config.settings.merge!(settings)
|
13
|
-
@runtime = config.build_runtime
|
14
|
-
end
|
15
|
-
|
16
|
-
def call_helper(helper, *args, **kwargs)
|
17
|
-
run_task("testing:call_helper", helper, args, kwargs)
|
18
|
-
host.helper_values.pop
|
19
|
-
end
|
20
|
-
|
21
|
-
def run_task(task, *args)
|
22
|
-
capturing_logger_output do
|
23
|
-
runtime.run!(task, *args, privileged: false)
|
24
|
-
nil
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
attr_reader :host, :runtime
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|