bricky 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/bricky/bricks/bundle.rb +22 -0
- data/lib/bricky/bricks/debian.rb +17 -0
- data/lib/bricky/bricks/helper.rb +16 -0
- data/lib/bricky/bricks/mounts.rb +18 -0
- data/lib/bricky/bricks/ruby.rb +11 -0
- data/lib/bricky/bricks.rb +25 -0
- data/lib/bricky/command.rb +26 -0
- data/lib/bricky/commands/bootstrap.rb +33 -0
- data/lib/bricky/commands/builder.rb +35 -0
- data/lib/bricky/commands/install.rb +17 -0
- data/lib/bricky/config.rb +26 -0
- data/lib/bricky/image.rb +20 -0
- data/lib/bricky/package.rb +21 -0
- data/lib/bricky/setup.rb +18 -0
- data/lib/bricky/version.rb +3 -0
- data/lib/bricky.rb +14 -0
- metadata +17 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzJjYzUzYjA5MTJlZGY1MGZjN2E2NjkwMmE5ZmI4NmY1NjZmY2Q0Ng==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NjRhM2NlNDNiMWJlNzViYTQ3ZTJkYTI2NDVmMDJjM2NhZWEyMDNjMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MWM3NGY3MzE1YmJhM2QzMTAyZWNlYjI1NTk0MjcxYTUxYjA0YjZiOGU3MDlm
|
10
|
+
ZjI2N2JlMWIwOThmMjczOWM1MDRlYjM4YmE3NzQxNjUwMjkwMGY4ODA5Mzc3
|
11
|
+
ZjdmMTZmYTY0NmE1Mzk4MmQyMTU1ZDFhNTRhZWFiZDlhMjZjZjI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODRjZjIxMDQxNjg4NDQ5ZTdkZjMzMzZhNzU5YzU1Zjc4NWJkYzU2NzZkYTNi
|
14
|
+
NzcyYTY4NTEzYTE4MTJlOWMzMGQ3ZDcwNTNkMWM2NGQ0NDI4MTBkY2JkMTIy
|
15
|
+
ZDAzMDFkNGRiMGNmNWYzMzdhYzE3OTcwODliZWViOWMwMGU3YTc=
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Bricky
|
2
|
+
module Bricks
|
3
|
+
class Bundle < Helper
|
4
|
+
def arguments
|
5
|
+
scripts_path = "#{bricks_path}/bundle"
|
6
|
+
results = ["-v #{scripts_path}:/bricks/bundle"]
|
7
|
+
results.push(cached) if config["cache"]
|
8
|
+
results
|
9
|
+
end
|
10
|
+
|
11
|
+
def entrypoint
|
12
|
+
"/bricks/bundle/builder"
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
def cached
|
17
|
+
digest = Digest::MD5.file('Gemfile').hexdigest
|
18
|
+
["-v /tmp/bricky/cache/#{digest}:/opt/build/source/vendor/bundle"]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Bricky
|
2
|
+
module Bricks
|
3
|
+
class Debian < Helper
|
4
|
+
def arguments
|
5
|
+
builded_path = File.expand_path(config["build"])
|
6
|
+
scripts_path = "#{bricks_path}/debian"
|
7
|
+
|
8
|
+
%W(-v #{builded_path}:/builded
|
9
|
+
-v #{scripts_path}:/bricks/debian)
|
10
|
+
end
|
11
|
+
|
12
|
+
def entrypoint
|
13
|
+
"/bricks/debian/builder"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Bricky
|
2
|
+
module Bricks
|
3
|
+
class Mounts < Helper
|
4
|
+
def arguments
|
5
|
+
scripts_path = "#{bricks_path}/mounts"
|
6
|
+
command = "-v #{scripts_path}:/bricks/mounts"
|
7
|
+
|
8
|
+
config.inject([command]) do |acc, mount|
|
9
|
+
acc << "-v #{File.expand_path(mount.last)}:/bricks/mounts/volumes/#{mount.first}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def entrypoint
|
14
|
+
"/bricks/mounts/builder"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "byebug"
|
2
|
+
require "bricky/bricks/helper"
|
3
|
+
|
4
|
+
require "bricky/bricks/ruby"
|
5
|
+
require "bricky/bricks/bundle"
|
6
|
+
require "bricky/bricks/debian"
|
7
|
+
require "bricky/bricks/mounts"
|
8
|
+
|
9
|
+
module Bricky
|
10
|
+
module Bricks
|
11
|
+
extend self
|
12
|
+
|
13
|
+
def resolve
|
14
|
+
Bricky.config.bricks.collect do |name, config|
|
15
|
+
resolve_and_initialize(name, config)
|
16
|
+
end.uniq
|
17
|
+
end
|
18
|
+
|
19
|
+
def resolve_and_initialize(name, config)
|
20
|
+
return Bricky::Bricks::Bundle.new(config) if name.eql? "bundle"
|
21
|
+
return Bricky::Bricks::Debian.new(config) if name.eql? "debian"
|
22
|
+
return Bricky::Bricks::Mounts.new(config) if name.eql? "mounts"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "thor"
|
2
|
+
require "ostruct"
|
3
|
+
require "colorize"
|
4
|
+
|
5
|
+
require "bricky/commands/install"
|
6
|
+
require "bricky/commands/builder"
|
7
|
+
require "bricky/commands/bootstrap"
|
8
|
+
|
9
|
+
module Bricky
|
10
|
+
class Command < Thor
|
11
|
+
desc :install, "copy configuration files"
|
12
|
+
def install
|
13
|
+
Bricky::Commands::Install.new.execute
|
14
|
+
end
|
15
|
+
|
16
|
+
desc :bootstrap, "bootstrap project images"
|
17
|
+
def bootstrap
|
18
|
+
Bricky::Commands::Bootstrap.execute
|
19
|
+
end
|
20
|
+
|
21
|
+
desc :builder, "build project"
|
22
|
+
def builder
|
23
|
+
Bricky::Commands::Builder.execute
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Bricky
|
2
|
+
module Commands
|
3
|
+
module Bootstrap
|
4
|
+
extend self
|
5
|
+
|
6
|
+
def execute
|
7
|
+
puts "Boostraping images".colorize(:light_blue)
|
8
|
+
images.each {|image| build(image)}
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def build(image)
|
13
|
+
code = command(image.name, image.path)
|
14
|
+
puts "Processing #{name} image: ".colorize(:blue) + code
|
15
|
+
|
16
|
+
unless system(code)
|
17
|
+
puts "~~~~~~~~~~~ Problems building image ~~~~~~~~~~~".colorize(:white).on_red
|
18
|
+
return false
|
19
|
+
end
|
20
|
+
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
def command(template_name, image_path)
|
25
|
+
"docker build -t #{template_name} #{image_path}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def images
|
29
|
+
["builder", "runtime"].collect {|image| Bricky::Image.new(image) }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require "bricky/bricks"
|
2
|
+
|
3
|
+
module Bricky
|
4
|
+
module Commands
|
5
|
+
module Builder
|
6
|
+
extend self
|
7
|
+
|
8
|
+
def execute
|
9
|
+
puts "Building Project".colorize(:light_blue)
|
10
|
+
build(Bricky::Image.new("builder"))
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
def build(image)
|
15
|
+
code = command(image)
|
16
|
+
puts "Execute build: ".colorize(:blue) + code
|
17
|
+
|
18
|
+
unless system(code.gsub(/\n/, ""))
|
19
|
+
puts "~~~~~~~~~~~ Problems building image ~~~~~~~~~~~".colorize(:white).on_red
|
20
|
+
return false
|
21
|
+
end
|
22
|
+
|
23
|
+
true
|
24
|
+
end
|
25
|
+
|
26
|
+
def command(image)
|
27
|
+
bricks = Bricky::Bricks.resolve
|
28
|
+
arguments = bricks.collect(&:arguments).uniq.join(" ")
|
29
|
+
entrypoints = bricks.collect(&:entrypoint).uniq.join(";")
|
30
|
+
|
31
|
+
"docker run #{arguments} -i -t #{image.name} /bin/bash -l -c '#{entrypoints}'"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Bricky
|
2
|
+
module Commands
|
3
|
+
class Install < Thor::Group
|
4
|
+
include Thor::Actions
|
5
|
+
|
6
|
+
def execute
|
7
|
+
puts "Setup bricky configuration files".colorize(:light_blue)
|
8
|
+
directory "bricky"
|
9
|
+
copy_file "Brickyfile"
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.source_root
|
13
|
+
File.expand_path("../../../../etc/templates", __FILE__)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "yaml"
|
2
|
+
|
3
|
+
module Bricky
|
4
|
+
class Config
|
5
|
+
attr_accessor :name
|
6
|
+
attr_accessor :images
|
7
|
+
attr_accessor :bricks
|
8
|
+
|
9
|
+
def from_yaml(file)
|
10
|
+
config = YAML.load_file(file)["bricky"]
|
11
|
+
|
12
|
+
self.name = config["name"]
|
13
|
+
self.images = config["images"]
|
14
|
+
self.bricks = config["bricks"]
|
15
|
+
end
|
16
|
+
|
17
|
+
def full_scripts_path
|
18
|
+
File.expand_path("#{base_path}/bricky/containers/scripts", __FILE__)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
def base_path
|
23
|
+
"../../.."
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/bricky/image.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Bricky
|
2
|
+
class Image
|
3
|
+
attr_accessor :name
|
4
|
+
attr_accessor :path
|
5
|
+
|
6
|
+
def initialize(image)
|
7
|
+
self.name = format_name(image)
|
8
|
+
self.path = format_path(image)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def format_name(image)
|
13
|
+
"#{Bricky.config.name}/#{image}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def format_path(image)
|
17
|
+
"#{Bricky.config.images}/#{image}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Bricky
|
2
|
+
class Package
|
3
|
+
attr_accessor :image
|
4
|
+
|
5
|
+
def initialize(image)
|
6
|
+
self.image = image
|
7
|
+
end
|
8
|
+
|
9
|
+
project_path = File.expand_path(".")
|
10
|
+
builded_path = File.expand_path(Bricky.config.package.build)
|
11
|
+
cachedz_path = File.expand_path(Bricky.config.package.cache)
|
12
|
+
|
13
|
+
def script
|
14
|
+
"#{script_path}/#{image.name}"
|
15
|
+
end
|
16
|
+
|
17
|
+
def script_path
|
18
|
+
"#{Bricky.config.full_scripts_path}/#{Bricky.config.package.output}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/bricky/setup.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require "bricky/image"
|
2
|
+
require "bricky/config"
|
3
|
+
|
4
|
+
module Bricky
|
5
|
+
class Setup
|
6
|
+
def self.start
|
7
|
+
from_brickyfile
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
def self.from_brickyfile
|
12
|
+
configuration = "#{Dir.pwd}/Brickyfile"
|
13
|
+
if File.exists?(configuration)
|
14
|
+
eval(open("#{Dir.pwd}/Brickyfile").read)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/bricky.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bricky
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- andrerocker
|
@@ -89,6 +89,22 @@ extensions: []
|
|
89
89
|
extra_rdoc_files: []
|
90
90
|
files:
|
91
91
|
- bin/bricky
|
92
|
+
- lib/bricky.rb
|
93
|
+
- lib/bricky/bricks.rb
|
94
|
+
- lib/bricky/bricks/bundle.rb
|
95
|
+
- lib/bricky/bricks/debian.rb
|
96
|
+
- lib/bricky/bricks/helper.rb
|
97
|
+
- lib/bricky/bricks/mounts.rb
|
98
|
+
- lib/bricky/bricks/ruby.rb
|
99
|
+
- lib/bricky/command.rb
|
100
|
+
- lib/bricky/commands/bootstrap.rb
|
101
|
+
- lib/bricky/commands/builder.rb
|
102
|
+
- lib/bricky/commands/install.rb
|
103
|
+
- lib/bricky/config.rb
|
104
|
+
- lib/bricky/image.rb
|
105
|
+
- lib/bricky/package.rb
|
106
|
+
- lib/bricky/setup.rb
|
107
|
+
- lib/bricky/version.rb
|
92
108
|
homepage: http://bricky.deploy42.com
|
93
109
|
licenses:
|
94
110
|
- MIT
|