mcrain 0.7.3 → 0.8.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/.circleci/config.yml +50 -0
- data/README.md +32 -0
- data/exe/mcrain +27 -7
- data/lib/mcrain/configuration.rb +33 -0
- data/lib/mcrain/container_controller.rb +2 -2
- data/lib/mcrain/riak.rb +3 -1
- data/lib/mcrain/version.rb +1 -1
- data/lib/mcrain.rb +13 -11
- metadata +5 -4
- data/circle.yml +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d18a6937f4e154940146b53cfc657da38171ae8
|
4
|
+
data.tar.gz: 99137cb4d00e234344ec07d7a416c53e8bffbc72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 751aca2467b0b5f0745365d794a59680cb44496a0d45acee57271ed8a2f5e65dba1be45ea5e882b253d070efc238d4509bdb9b3d614681e5ce2bca64b3270892
|
7
|
+
data.tar.gz: 75b30cc1936edad4252ee829a1ac9d5f619c922f00e092da5b9bb78ae0f69b864e56ed157779a6545c689a233d18cffcbf724f83f821cd7b9c3f418538a67fb4
|
@@ -0,0 +1,50 @@
|
|
1
|
+
version: 2
|
2
|
+
jobs:
|
3
|
+
build:
|
4
|
+
working_directory: ~/mcrain
|
5
|
+
|
6
|
+
## see https://circleci.com/docs/2.0/executor-types/#machine-executor-overview
|
7
|
+
machine: true
|
8
|
+
|
9
|
+
steps:
|
10
|
+
- checkout
|
11
|
+
|
12
|
+
- run:
|
13
|
+
name: Check docker version
|
14
|
+
command: |
|
15
|
+
set -x
|
16
|
+
docker version
|
17
|
+
docker info
|
18
|
+
|
19
|
+
- run:
|
20
|
+
name: Check ruby version
|
21
|
+
command: |
|
22
|
+
set -x
|
23
|
+
rvm version
|
24
|
+
rvm list
|
25
|
+
ruby -v
|
26
|
+
gem --version
|
27
|
+
gem env
|
28
|
+
bundle --version
|
29
|
+
|
30
|
+
- run:
|
31
|
+
name: Open docker TCP port
|
32
|
+
command: |
|
33
|
+
set -x
|
34
|
+
echo 'DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"' | sudo tee -a /etc/default/docker
|
35
|
+
sudo service docker restart
|
36
|
+
|
37
|
+
- run: docker pull mysql:5.5
|
38
|
+
- run: docker pull redis:2.8.19
|
39
|
+
- run: docker pull rabbitmq:3.4.4-management
|
40
|
+
- run: docker pull hectcastro/riak:latest
|
41
|
+
|
42
|
+
- run: bundle install --jobs=4 --path=vendor/bundle
|
43
|
+
|
44
|
+
- run:
|
45
|
+
name: test
|
46
|
+
command: bundle exec rake spec
|
47
|
+
environment:
|
48
|
+
DOCKER_HOST: tcp://127.0.0.1:2375
|
49
|
+
|
50
|
+
|
data/README.md
CHANGED
@@ -72,6 +72,38 @@ HBase | N/A | `gem 'hbase-jruby'`
|
|
72
72
|
|
73
73
|
## Usage
|
74
74
|
|
75
|
+
### configure images
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
Mcrain.configure do |config|
|
79
|
+
config.images[:mysql] = "mysql:5.6"
|
80
|
+
config.images[:redis] = "redis:3.2-alpine"
|
81
|
+
# config.images[:rabbitmq] = ...
|
82
|
+
# config.images[:riak] = ...
|
83
|
+
# config.images[:hbase] = ...
|
84
|
+
end
|
85
|
+
```
|
86
|
+
|
87
|
+
Or put `.mcrain.yml` file with following content
|
88
|
+
|
89
|
+
```yaml
|
90
|
+
---
|
91
|
+
images:
|
92
|
+
mysql: "mysql:5.6"
|
93
|
+
redis: "redis:3.2-alpine"
|
94
|
+
# rabbitmq: ...
|
95
|
+
# riak: ...
|
96
|
+
# hbase: ...
|
97
|
+
```
|
98
|
+
|
99
|
+
and load it by `Mcrain.load_config`:
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
Mcrain.load_config "/path/to/.mcrain.yml"
|
103
|
+
```
|
104
|
+
|
105
|
+
`mcrain` command accepts `-c` (`--config`) option to configure images by yaml file, and its default is `.mcrain.yml`.
|
106
|
+
|
75
107
|
### redis in code
|
76
108
|
|
77
109
|
```ruby
|
data/exe/mcrain
CHANGED
@@ -2,12 +2,16 @@
|
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
4
|
require "mcrain"
|
5
|
+
require "optparse"
|
5
6
|
|
6
|
-
|
7
|
-
verbose
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
opts = {
|
8
|
+
verbose: false,
|
9
|
+
config_file: ".mcrain.yml"
|
10
|
+
}
|
11
|
+
|
12
|
+
ARGV.options do |q|
|
13
|
+
q.banner = <<MESSAGE
|
14
|
+
#{q.program_name} <action> <service> [n] [options]
|
11
15
|
actions: start, stop or pull
|
12
16
|
|
13
17
|
start:
|
@@ -19,16 +23,32 @@ if action.nil? || service.nil?
|
|
19
23
|
|
20
24
|
pull:
|
21
25
|
service: redis, rabbitmq, mysql, riak or all
|
26
|
+
|
27
|
+
[options]
|
22
28
|
MESSAGE
|
29
|
+
q.on("-c", "--config=file", "Path to mcrain config file, default: .mcrain.yml"){ |v| opts[:config_file] = v }
|
30
|
+
q.on("-V", "--verbose"){ |v| opts[:verbose] = v }
|
31
|
+
q.parse!
|
32
|
+
end
|
23
33
|
|
34
|
+
action, service, *args = *ARGV
|
35
|
+
if action.nil? || service.nil?
|
36
|
+
$stderr.puts ARGV.options
|
24
37
|
exit(1)
|
25
38
|
end
|
26
39
|
|
27
|
-
unless verbose
|
40
|
+
unless opts[:verbose]
|
28
41
|
require 'logger'
|
29
42
|
Mcrain.logger = Logger.new("/dev/null")
|
30
43
|
end
|
31
44
|
|
45
|
+
if opts[:config_file] && File.exist?(opts[:config_file])
|
46
|
+
Mcrain.logger.debug "Loading config file from #{opts[:config_file]}"
|
47
|
+
Mcrain.load_config opts[:config_file]
|
48
|
+
else
|
49
|
+
Mcrain.logger.debug "Skipped to load config file"
|
50
|
+
end
|
51
|
+
|
32
52
|
begin
|
33
53
|
options = {}
|
34
54
|
case service
|
@@ -64,7 +84,7 @@ begin
|
|
64
84
|
exit(1)
|
65
85
|
end
|
66
86
|
when "pull" then
|
67
|
-
services = (service == "all") ? Mcrain.images.keys : [service]
|
87
|
+
services = (service == "all") ? Mcrain.configuration.images.keys : [service]
|
68
88
|
services.map(&:to_sym).map{|s| Mcrain.class_for(s)}.each(&:pull_image)
|
69
89
|
else
|
70
90
|
raise "Unknown action: #{action.inspect}"
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "mcrain"
|
2
|
+
require "yaml"
|
3
|
+
|
4
|
+
module Mcrain
|
5
|
+
class Configuration
|
6
|
+
DEFAULT_IMAGES = {
|
7
|
+
mysql: "mysql:5.5",
|
8
|
+
redis: "redis:2.8.19",
|
9
|
+
rabbitmq: "rabbitmq:3.4.4-management",
|
10
|
+
riak: "hectcastro/riak",
|
11
|
+
hbase: "nerdammer/hbase:latest",
|
12
|
+
}.freeze
|
13
|
+
|
14
|
+
attr_accessor :images
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@images = DEFAULT_IMAGES.dup
|
18
|
+
end
|
19
|
+
|
20
|
+
class << self
|
21
|
+
def load_config(file)
|
22
|
+
loaded_config = YAML.load(File.read(file))
|
23
|
+
c = self.new
|
24
|
+
if loaded_config["images"]
|
25
|
+
loaded_config["images"].each do |k,v|
|
26
|
+
c.images[k.to_sym] = v
|
27
|
+
end
|
28
|
+
end
|
29
|
+
c
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/mcrain/riak.rb
CHANGED
data/lib/mcrain/version.rb
CHANGED
data/lib/mcrain.rb
CHANGED
@@ -31,18 +31,19 @@ module Mcrain
|
|
31
31
|
class_names[name] = class_name
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
34
|
+
def load_config(file)
|
35
|
+
@configuration = Mcrain::Configuration.load_config(file)
|
36
|
+
end
|
37
|
+
|
38
|
+
attr_writer :configuration
|
39
|
+
def configuration
|
40
|
+
@configuration ||= Mcrain::Configuration.new
|
41
|
+
end
|
42
|
+
|
43
|
+
def configure
|
44
|
+
yield configuration
|
45
|
+
configuration
|
44
46
|
end
|
45
|
-
attr_writer :images
|
46
47
|
|
47
48
|
attr_writer :logger
|
48
49
|
def logger
|
@@ -73,6 +74,7 @@ module Mcrain
|
|
73
74
|
end
|
74
75
|
|
75
76
|
autoload :Base, 'mcrain/base'
|
77
|
+
autoload :Configuration, 'mcrain/configuration'
|
76
78
|
autoload :DockerMachine, 'mcrain/docker_machine'
|
77
79
|
autoload :ContainerController, 'mcrain/container_controller'
|
78
80
|
autoload :ClientProvider, 'mcrain/client_provider'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mcrain
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- akm
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logger_pipe
|
@@ -102,6 +102,7 @@ executables:
|
|
102
102
|
extensions: []
|
103
103
|
extra_rdoc_files: []
|
104
104
|
files:
|
105
|
+
- ".circleci/config.yml"
|
105
106
|
- ".gitignore"
|
106
107
|
- ".gitmodules"
|
107
108
|
- ".rspec"
|
@@ -112,11 +113,11 @@ files:
|
|
112
113
|
- Rakefile
|
113
114
|
- bin/console
|
114
115
|
- bin/setup
|
115
|
-
- circle.yml
|
116
116
|
- exe/mcrain
|
117
117
|
- lib/mcrain.rb
|
118
118
|
- lib/mcrain/base.rb
|
119
119
|
- lib/mcrain/client_provider.rb
|
120
|
+
- lib/mcrain/configuration.rb
|
120
121
|
- lib/mcrain/container_controller.rb
|
121
122
|
- lib/mcrain/docker_machine.rb
|
122
123
|
- lib/mcrain/hbase.rb
|
@@ -146,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
147
|
version: '0'
|
147
148
|
requirements: []
|
148
149
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.
|
150
|
+
rubygems_version: 2.5.2.1
|
150
151
|
signing_key:
|
151
152
|
specification_version: 4
|
152
153
|
summary: mcrain supports to run docker container for test.
|
data/circle.yml
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
machine:
|
2
|
-
ruby:
|
3
|
-
version: 2.2.2
|
4
|
-
services:
|
5
|
-
- docker
|
6
|
-
|
7
|
-
dependencies:
|
8
|
-
cache_directories:
|
9
|
-
- "~/docker"
|
10
|
-
pre:
|
11
|
-
- echo 'DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"' | sudo tee -a /etc/default/docker
|
12
|
-
- sudo service docker restart
|
13
|
-
- gem install bundler --version '~> 1.10.5'
|
14
|
-
- mkdir -p ~/docker
|
15
|
-
- if [[ -e ~/docker/mysql.tar ]]; then
|
16
|
-
docker load -i ~/docker/mysql.tar;
|
17
|
-
else
|
18
|
-
docker pull mysql:5.5;
|
19
|
-
docker save mysql:5.5 > ~/docker/mysql.tar;
|
20
|
-
fi
|
21
|
-
- if [[ -e ~/docker/redis.tar ]]; then
|
22
|
-
docker load -i ~/docker/redis.tar;
|
23
|
-
else
|
24
|
-
docker pull redis:2.8.19;
|
25
|
-
docker save redis:2.8.19 > ~/docker/redis.tar;
|
26
|
-
fi
|
27
|
-
- if [[ -e ~/docker/rabbitmq.tar ]]; then
|
28
|
-
docker load -i ~/docker/rabbitmq.tar;
|
29
|
-
else
|
30
|
-
docker pull rabbitmq:3.4.4-management;
|
31
|
-
docker save rabbitmq:3.4.4-management > ~/docker/rabbitmq.tar;
|
32
|
-
fi
|
33
|
-
- if [[ -e ~/docker/riak.tar ]]; then
|
34
|
-
docker load -i ~/docker/riak.tar;
|
35
|
-
else
|
36
|
-
docker pull hectcastro/riak:latest;
|
37
|
-
docker save hectcastro/riak:latest > ~/docker/riak.tar;
|
38
|
-
fi
|
39
|
-
|
40
|
-
test:
|
41
|
-
override:
|
42
|
-
- bundle exec rake spec:
|
43
|
-
environment:
|
44
|
-
DOCKER_HOST: tcp://127.0.0.1:2375
|