ruby_yacht 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile.lock +1 -1
- data/doc/TODO.md +16 -6
- data/doc/configuration_sample.rb +8 -9
- data/lib/ruby_yacht/dsl/app.rb +29 -1
- data/lib/ruby_yacht/dsl/app_type.rb +112 -0
- data/lib/ruby_yacht/dsl/configuration.rb +163 -2
- data/lib/ruby_yacht/dsl/dsl.rb +51 -9
- data/lib/ruby_yacht/dsl/hook.rb +105 -0
- data/lib/ruby_yacht/dsl/project.rb +17 -21
- data/lib/ruby_yacht/dsl.rb +2 -0
- data/lib/ruby_yacht/images/app/Dockerfile.erb +20 -13
- data/lib/ruby_yacht/images/app/before_startup.bash.erb +8 -0
- data/lib/ruby_yacht/images/app/checkout.bash +6 -0
- data/lib/ruby_yacht/images/app/startup.bash.erb +5 -0
- data/lib/ruby_yacht/images/app-dependencies/Dockerfile.erb +23 -5
- data/lib/ruby_yacht/images/database/Dockerfile.erb +25 -11
- data/lib/ruby_yacht/images/database/checkout.bash +10 -0
- data/lib/ruby_yacht/images/database/setup.bash +15 -0
- data/lib/ruby_yacht/images/web/Dockerfile.erb +4 -3
- data/lib/ruby_yacht/plugins/rails/scripts/install_gems.rb +3 -0
- data/lib/ruby_yacht/plugins/rails/scripts/load_seeds.rb +34 -0
- data/lib/ruby_yacht/{images/app/startup.rb → plugins/rails/scripts/prepare_rails_for_launch.rb} +2 -8
- data/lib/ruby_yacht/{images/app/update_database_config.rb → plugins/rails/scripts/update_rails_config.rb} +0 -1
- data/lib/ruby_yacht/plugins/rails.rb +40 -0
- data/lib/ruby_yacht/plugins.rb +6 -0
- data/lib/ruby_yacht/runner/build_images.rb +72 -5
- data/lib/ruby_yacht/runner/checkout.rb +1 -1
- data/lib/ruby_yacht.rb +2 -1
- data/ruby_yacht.gemspec +2 -1
- data/spec/docker/Dockerfile +1 -1
- data/spec/dsl/app_spec.rb +34 -0
- data/spec/dsl/app_type_spec.rb +176 -0
- data/spec/dsl/configuration_spec.rb +161 -2
- data/spec/dsl/dsl_spec.rb +3 -3
- data/spec/dsl/hook_spec.rb +111 -0
- data/spec/dsl/project_spec.rb +19 -83
- data/spec/fixtures/app-dependencies-dockerfile-generic +21 -0
- data/spec/fixtures/app-dependencies-dockerfile-generic-with-library-install +28 -0
- data/spec/fixtures/app-dependencies-dockerfile-rails +32 -0
- data/spec/fixtures/database-dockerfile +16 -15
- data/spec/fixtures/database-dockerfile-rails +35 -0
- data/spec/fixtures/database-dockerfile-with-seed-hooks +34 -0
- data/spec/fixtures/hooks/hook1.rb +0 -0
- data/spec/fixtures/hooks/hook2.rb +0 -0
- data/spec/fixtures/mars-before-startup +4 -0
- data/spec/fixtures/mars-before-startup-rails +7 -0
- data/spec/fixtures/mars-before-startup-with-before-startup-hooks +7 -0
- data/spec/fixtures/mars-dockerfile +9 -14
- data/spec/fixtures/mars-dockerfile-rails +33 -0
- data/spec/fixtures/mars-dockerfile-with-after-checkout-hooks +30 -0
- data/spec/fixtures/mars-dockerfile-with-before-startup-hooks +29 -0
- data/spec/fixtures/mars-startup +3 -0
- data/spec/fixtures/mars-startup-rails +3 -0
- data/spec/fixtures/multi-project-web-dockerfile +0 -10
- data/spec/fixtures/web-dockerfile +0 -6
- data/spec/plugins/rails_spec.rb +198 -0
- data/spec/runner/build_images_spec.rb +181 -15
- data/spec/runner/checkout_spec.rb +2 -2
- data/spec/support/test_project.rb +16 -8
- metadata +62 -30
- data/lib/ruby_yacht/images/app/checkout.rb +0 -7
- data/lib/ruby_yacht/images/app-dependencies/install_gems.rb +0 -12
- data/lib/ruby_yacht/images/database/load_seeds.rb +0 -42
- data/lib/ruby_yacht/images/database/setup.rb +0 -19
- data/lib/ruby_yacht/images/database/setup_database.sql.erb +0 -12
- data/spec/fixtures/app-dependencies-dockerfile +0 -25
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_yacht
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- John Brownlee
|
@@ -14,52 +13,46 @@ dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: codeclimate-test-reporter
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: timecop
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
|
-
description:
|
55
|
+
description: A DSL for building docker containers for a family of Rails apps
|
63
56
|
email: apps@mail.johnbrownlee.com
|
64
57
|
executables: []
|
65
58
|
extensions: []
|
@@ -81,21 +74,21 @@ files:
|
|
81
74
|
- lib/ruby_yacht.rb
|
82
75
|
- lib/ruby_yacht/dsl.rb
|
83
76
|
- lib/ruby_yacht/dsl/app.rb
|
77
|
+
- lib/ruby_yacht/dsl/app_type.rb
|
84
78
|
- lib/ruby_yacht/dsl/configuration.rb
|
85
79
|
- lib/ruby_yacht/dsl/database.rb
|
86
80
|
- lib/ruby_yacht/dsl/dns_server.rb
|
87
81
|
- lib/ruby_yacht/dsl/dsl.rb
|
82
|
+
- lib/ruby_yacht/dsl/hook.rb
|
88
83
|
- lib/ruby_yacht/dsl/project.rb
|
89
84
|
- lib/ruby_yacht/images/app-dependencies/Dockerfile.erb
|
90
|
-
- lib/ruby_yacht/images/app-dependencies/install_gems.rb
|
91
85
|
- lib/ruby_yacht/images/app/Dockerfile.erb
|
92
|
-
- lib/ruby_yacht/images/app/
|
93
|
-
- lib/ruby_yacht/images/app/
|
94
|
-
- lib/ruby_yacht/images/app/
|
86
|
+
- lib/ruby_yacht/images/app/before_startup.bash.erb
|
87
|
+
- lib/ruby_yacht/images/app/checkout.bash
|
88
|
+
- lib/ruby_yacht/images/app/startup.bash.erb
|
95
89
|
- lib/ruby_yacht/images/database/Dockerfile.erb
|
96
|
-
- lib/ruby_yacht/images/database/
|
97
|
-
- lib/ruby_yacht/images/database/setup.
|
98
|
-
- lib/ruby_yacht/images/database/setup_database.sql.erb
|
90
|
+
- lib/ruby_yacht/images/database/checkout.bash
|
91
|
+
- lib/ruby_yacht/images/database/setup.bash
|
99
92
|
- lib/ruby_yacht/images/deploy/Dockerfile.erb
|
100
93
|
- lib/ruby_yacht/images/web/Dockerfile.erb
|
101
94
|
- lib/ruby_yacht/images/web/add_app.rb
|
@@ -104,6 +97,12 @@ files:
|
|
104
97
|
- lib/ruby_yacht/images/web/index.html.erb
|
105
98
|
- lib/ruby_yacht/images/web/index_config.erb
|
106
99
|
- lib/ruby_yacht/images/web/setup.rb
|
100
|
+
- lib/ruby_yacht/plugins.rb
|
101
|
+
- lib/ruby_yacht/plugins/rails.rb
|
102
|
+
- lib/ruby_yacht/plugins/rails/scripts/install_gems.rb
|
103
|
+
- lib/ruby_yacht/plugins/rails/scripts/load_seeds.rb
|
104
|
+
- lib/ruby_yacht/plugins/rails/scripts/prepare_rails_for_launch.rb
|
105
|
+
- lib/ruby_yacht/plugins/rails/scripts/update_rails_config.rb
|
107
106
|
- lib/ruby_yacht/runner.rb
|
108
107
|
- lib/ruby_yacht/runner/build.rb
|
109
108
|
- lib/ruby_yacht/runner/build_images.rb
|
@@ -120,17 +119,34 @@ files:
|
|
120
119
|
- spec/docker/Dockerfile
|
121
120
|
- spec/docker/build.bash
|
122
121
|
- spec/dsl/app_spec.rb
|
122
|
+
- spec/dsl/app_type_spec.rb
|
123
123
|
- spec/dsl/configuration_spec.rb
|
124
124
|
- spec/dsl/database_spec.rb
|
125
125
|
- spec/dsl/dns_server_spec.rb
|
126
126
|
- spec/dsl/dsl_spec.rb
|
127
|
+
- spec/dsl/hook_spec.rb
|
127
128
|
- spec/dsl/project_spec.rb
|
128
|
-
- spec/fixtures/app-dependencies-dockerfile
|
129
|
+
- spec/fixtures/app-dependencies-dockerfile-generic
|
130
|
+
- spec/fixtures/app-dependencies-dockerfile-generic-with-library-install
|
131
|
+
- spec/fixtures/app-dependencies-dockerfile-rails
|
129
132
|
- spec/fixtures/database-dockerfile
|
133
|
+
- spec/fixtures/database-dockerfile-rails
|
134
|
+
- spec/fixtures/database-dockerfile-with-seed-hooks
|
130
135
|
- spec/fixtures/deploy-dockerfile
|
136
|
+
- spec/fixtures/hooks/hook1.rb
|
137
|
+
- spec/fixtures/hooks/hook2.rb
|
138
|
+
- spec/fixtures/mars-before-startup
|
139
|
+
- spec/fixtures/mars-before-startup-rails
|
140
|
+
- spec/fixtures/mars-before-startup-with-before-startup-hooks
|
131
141
|
- spec/fixtures/mars-dockerfile
|
142
|
+
- spec/fixtures/mars-dockerfile-rails
|
143
|
+
- spec/fixtures/mars-dockerfile-with-after-checkout-hooks
|
144
|
+
- spec/fixtures/mars-dockerfile-with-before-startup-hooks
|
145
|
+
- spec/fixtures/mars-startup
|
146
|
+
- spec/fixtures/mars-startup-rails
|
132
147
|
- spec/fixtures/multi-project-web-dockerfile
|
133
148
|
- spec/fixtures/web-dockerfile
|
149
|
+
- spec/plugins/rails_spec.rb
|
134
150
|
- spec/runner/build_images_spec.rb
|
135
151
|
- spec/runner/build_spec.rb
|
136
152
|
- spec/runner/checkout_spec.rb
|
@@ -148,43 +164,59 @@ files:
|
|
148
164
|
homepage: https://github.com/brownleej/ruby-yacht
|
149
165
|
licenses:
|
150
166
|
- MIT
|
167
|
+
metadata: {}
|
151
168
|
post_install_message:
|
152
169
|
rdoc_options: []
|
153
170
|
require_paths:
|
154
171
|
- lib
|
155
172
|
required_ruby_version: !ruby/object:Gem::Requirement
|
156
|
-
none: false
|
157
173
|
requirements:
|
158
|
-
- -
|
174
|
+
- - '>='
|
159
175
|
- !ruby/object:Gem::Version
|
160
176
|
version: '0'
|
161
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
178
|
requirements:
|
164
|
-
- -
|
179
|
+
- - '>='
|
165
180
|
- !ruby/object:Gem::Version
|
166
181
|
version: '0'
|
167
182
|
requirements: []
|
168
183
|
rubyforge_project:
|
169
|
-
rubygems_version:
|
184
|
+
rubygems_version: 2.0.14.1
|
170
185
|
signing_key:
|
171
|
-
specification_version:
|
186
|
+
specification_version: 4
|
172
187
|
summary: A DSL for building docker containers for a family of Rails apps
|
173
188
|
test_files:
|
174
189
|
- spec/docker/Dockerfile
|
175
190
|
- spec/docker/build.bash
|
176
191
|
- spec/dsl/app_spec.rb
|
192
|
+
- spec/dsl/app_type_spec.rb
|
177
193
|
- spec/dsl/configuration_spec.rb
|
178
194
|
- spec/dsl/database_spec.rb
|
179
195
|
- spec/dsl/dns_server_spec.rb
|
180
196
|
- spec/dsl/dsl_spec.rb
|
197
|
+
- spec/dsl/hook_spec.rb
|
181
198
|
- spec/dsl/project_spec.rb
|
182
|
-
- spec/fixtures/app-dependencies-dockerfile
|
199
|
+
- spec/fixtures/app-dependencies-dockerfile-generic
|
200
|
+
- spec/fixtures/app-dependencies-dockerfile-generic-with-library-install
|
201
|
+
- spec/fixtures/app-dependencies-dockerfile-rails
|
183
202
|
- spec/fixtures/database-dockerfile
|
203
|
+
- spec/fixtures/database-dockerfile-rails
|
204
|
+
- spec/fixtures/database-dockerfile-with-seed-hooks
|
184
205
|
- spec/fixtures/deploy-dockerfile
|
206
|
+
- spec/fixtures/hooks/hook1.rb
|
207
|
+
- spec/fixtures/hooks/hook2.rb
|
208
|
+
- spec/fixtures/mars-before-startup
|
209
|
+
- spec/fixtures/mars-before-startup-rails
|
210
|
+
- spec/fixtures/mars-before-startup-with-before-startup-hooks
|
185
211
|
- spec/fixtures/mars-dockerfile
|
212
|
+
- spec/fixtures/mars-dockerfile-rails
|
213
|
+
- spec/fixtures/mars-dockerfile-with-after-checkout-hooks
|
214
|
+
- spec/fixtures/mars-dockerfile-with-before-startup-hooks
|
215
|
+
- spec/fixtures/mars-startup
|
216
|
+
- spec/fixtures/mars-startup-rails
|
186
217
|
- spec/fixtures/multi-project-web-dockerfile
|
187
218
|
- spec/fixtures/web-dockerfile
|
219
|
+
- spec/plugins/rails_spec.rb
|
188
220
|
- spec/runner/build_images_spec.rb
|
189
221
|
- spec/runner/build_spec.rb
|
190
222
|
- spec/runner/checkout_spec.rb
|
@@ -1,12 +0,0 @@
|
|
1
|
-
#! /usr/local/bin/ruby
|
2
|
-
|
3
|
-
require 'yaml'
|
4
|
-
|
5
|
-
app_name = ARGV.shift
|
6
|
-
repository_host = ARGV.shift
|
7
|
-
repository_name = ARGV.shift
|
8
|
-
|
9
|
-
puts "Installing gems for #{app_name}"
|
10
|
-
system "mkdir -p /var/code"
|
11
|
-
system "git clone git@#{repository_host}:#{repository_name} /var/code/#{app_name}"
|
12
|
-
system "cd /var/code/#{app_name} && bundle install"
|
@@ -1,42 +0,0 @@
|
|
1
|
-
#! /usr/local/bin/ruby
|
2
|
-
|
3
|
-
require 'yaml'
|
4
|
-
require 'fileutils'
|
5
|
-
|
6
|
-
puts "Loading seeds"
|
7
|
-
|
8
|
-
app_name = ARGV.shift
|
9
|
-
name = ARGV.shift
|
10
|
-
username = ARGV.shift
|
11
|
-
password = ARGV.shift
|
12
|
-
initialized_database = (ARGV.shift == 'true')
|
13
|
-
|
14
|
-
puts "Creating #{name} database"
|
15
|
-
system "service mysql start"
|
16
|
-
|
17
|
-
directory = "/var/code/#{app_name}"
|
18
|
-
config_path = "#{directory}/config/database.yml"
|
19
|
-
|
20
|
-
FileUtils.cd directory
|
21
|
-
database_config = {
|
22
|
-
'development' => {
|
23
|
-
'adapter' => 'mysql2',
|
24
|
-
'encoding' => 'utf8',
|
25
|
-
'reconnect' => true,
|
26
|
-
'username' => username,
|
27
|
-
'password' => password,
|
28
|
-
'host' => 'localhost',
|
29
|
-
'database' => name
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
|
-
File.open(config_path, "w") do |file|
|
34
|
-
file.write(database_config.to_yaml)
|
35
|
-
end
|
36
|
-
|
37
|
-
if initialized_database
|
38
|
-
rake_command = "bundle exec rake db:migrate; bundle exec rake db:seed"
|
39
|
-
else
|
40
|
-
rake_command = "bundle exec rake db:reset"
|
41
|
-
end
|
42
|
-
system "bundle install; #{rake_command}"
|
@@ -1,19 +0,0 @@
|
|
1
|
-
#! /usr/local/bin/ruby
|
2
|
-
|
3
|
-
require 'erb'
|
4
|
-
require 'yaml'
|
5
|
-
|
6
|
-
@database_name = ARGV.shift
|
7
|
-
@database_user = ARGV.shift
|
8
|
-
@database_password = ARGV.shift
|
9
|
-
@rails_environment = ARGV.shift
|
10
|
-
|
11
|
-
system "service mysql start"
|
12
|
-
system "mysql -uroot -e \"CREATE USER '#{@database_user}'@'localhost' IDENTIFIED BY '#{@database_password}'\""
|
13
|
-
system "mysql -uroot -e \"CREATE USER '#{@database_user}'@'%' IDENTIFIED BY '#{@database_password}'\""
|
14
|
-
|
15
|
-
template = ERB.new(File.read('/var/docker/setup_database.sql.erb'))
|
16
|
-
File.open('/var/docker/create_database.sql', 'w') do |file|
|
17
|
-
file.write(template.result(binding))
|
18
|
-
end
|
19
|
-
system "mysql -uroot < /var/docker/create_database.sql"
|
@@ -1,12 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
if @rails_environment == 'development'
|
3
|
-
database_names = %w(_development _test).map { |suffix| @database_name + suffix }
|
4
|
-
else
|
5
|
-
database_names = [@database_name]
|
6
|
-
end
|
7
|
-
%>
|
8
|
-
<% database_names.each do |database_name| %>
|
9
|
-
GRANT ALL ON <%= database_name %>.* to '<%= @database_user %>'@'localhost';
|
10
|
-
GRANT ALL ON <%= database_name %>.* to '<%= @database_user %>'@'%';
|
11
|
-
CREATE DATABASE <%= database_name %>;
|
12
|
-
<% end %>
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# This Dockerfile creates an image for installing all of the gem dependencies
|
2
|
-
# for all of the apps.
|
3
|
-
#
|
4
|
-
# This is a slow process, so this should be kept as simple as possible so that
|
5
|
-
# it can remain unchanged.
|
6
|
-
|
7
|
-
FROM ruby:2.3
|
8
|
-
|
9
|
-
RUN mkdir -p /root/.ssh
|
10
|
-
COPY id_rsa /root/.ssh
|
11
|
-
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
|
12
|
-
|
13
|
-
RUN mkdir -p /var/docker/
|
14
|
-
COPY install_gems.rb /var/docker/install_gems.rb
|
15
|
-
|
16
|
-
|
17
|
-
RUN ruby /var/docker/install_gems.rb mars github.com brownleej/mars
|
18
|
-
|
19
|
-
RUN ruby /var/docker/install_gems.rb saturn github.com brownleej/saturn
|
20
|
-
|
21
|
-
|
22
|
-
RUN rm /var/docker/install_gems.rb
|
23
|
-
|
24
|
-
RUN apt-get update && apt-get upgrade -y
|
25
|
-
RUN apt-get install -y mysql-client
|