dockly 0.0.4 → 0.0.5
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.
- data/README.md +47 -10
- data/lib/dockly/docker.rb +12 -8
- data/lib/dockly/version.rb +1 -1
- data/spec/dockly/deb_spec.rb +1 -2
- data/spec/dockly/docker_spec.rb +3 -5
- metadata +2 -2
data/README.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
[](http://badge.fury.io/rb/dockly)
|
2
|
+
[](https://travis-ci.org/swipely/dockly)
|
3
|
+
[](https://gemnasium.com/swipely/dockly)
|
4
|
+
|
1
5
|
Dockly
|
2
6
|
=======
|
3
7
|
|
@@ -21,11 +25,11 @@ docker :test_docker do
|
|
21
25
|
end
|
22
26
|
```
|
23
27
|
|
24
|
-
Each object has an enumeration of valid attributes. The following code sets the `
|
28
|
+
Each object has an enumeration of valid attributes. The following code sets the `repository` attribute in a `docker` called `test_docker`:
|
25
29
|
|
26
30
|
```ruby
|
27
31
|
docker :test_docker do
|
28
|
-
|
32
|
+
repository 'an-awesome-name'
|
29
33
|
end
|
30
34
|
```
|
31
35
|
|
@@ -33,7 +37,7 @@ Finally, each object has zero or more valid references to other DSL objects. The
|
|
33
37
|
|
34
38
|
```ruby
|
35
39
|
docker :my_docker do
|
36
|
-
|
40
|
+
repository 'my-name'
|
37
41
|
end
|
38
42
|
|
39
43
|
deb :my_deb do
|
@@ -46,11 +50,40 @@ Below is an alternative syntax that accomplishes the same thing:
|
|
46
50
|
```ruby
|
47
51
|
deb :my_deb do
|
48
52
|
docker do
|
49
|
-
|
53
|
+
repository 'my-name'
|
50
54
|
end
|
51
55
|
end
|
52
56
|
```
|
53
57
|
|
58
|
+
`build_cache`
|
59
|
+
-------------
|
60
|
+
|
61
|
+
The `build_cache` DSL is used to prevent rebuilding assets every build and used cached assets.
|
62
|
+
|
63
|
+
- `s3_bucket`
|
64
|
+
- required: `true`
|
65
|
+
- description: the bucket name to download and upload build caches to
|
66
|
+
- `s3_object_prefix`
|
67
|
+
- required: `true`
|
68
|
+
- description: the name prepended to the package; allows for namespacing your caches
|
69
|
+
- `hash_command`
|
70
|
+
- required: `true`
|
71
|
+
- description: command run inside of the Docker image to determine if the build cache is up to date (eg. `md5sum ... | awk '{ print $1 }'`)
|
72
|
+
- `build_command`
|
73
|
+
- required: `true`
|
74
|
+
- description: command run inside of the Docker image when the build cache is out of date
|
75
|
+
- `output_dir`
|
76
|
+
- required: `true`
|
77
|
+
- description: where the cache is located in the Docker image filesystem
|
78
|
+
- `tmp_dir`
|
79
|
+
- required: `true`
|
80
|
+
- default: `/tmp`
|
81
|
+
- description: where the build cache files are stored locally; this should be able to be removed easily since they all exist in S3 as well
|
82
|
+
- `use_latest`
|
83
|
+
- required: `false`
|
84
|
+
- default: `false`
|
85
|
+
- description: when using S3, will insert the S3 object tagged as latest in your "s3://s3_bucket/s3_object_prefix" before running the build command to quicken build times
|
86
|
+
|
54
87
|
`docker`
|
55
88
|
--------
|
56
89
|
|
@@ -58,7 +91,6 @@ The `docker` DSL is used to define Docker containers. It has the following attri
|
|
58
91
|
|
59
92
|
- `import`
|
60
93
|
- required: `true`
|
61
|
-
- default: `nil`
|
62
94
|
- description: the location (url or S3 path) of the base image to start building from
|
63
95
|
- `git_archive`:
|
64
96
|
- required: `false`
|
@@ -66,15 +98,15 @@ The `docker` DSL is used to define Docker containers. It has the following attri
|
|
66
98
|
- description: the relative file path of git repo that should be added to the container
|
67
99
|
- `build`
|
68
100
|
- required: `true`
|
69
|
-
- default: `nil`
|
70
101
|
- description: aditional Dockerfile commands that you'd like to pass to `docker build`
|
71
|
-
- `
|
102
|
+
- `repository`
|
72
103
|
- required: `true`
|
73
104
|
- default: `'dockly'`
|
74
105
|
- description: the repository of the created image
|
106
|
+
- `name`
|
107
|
+
- alias for: `repository`
|
75
108
|
- `tag`
|
76
109
|
- required: `true`
|
77
|
-
- default: `nil`
|
78
110
|
- description: the tag of the created image
|
79
111
|
- `build_dir`
|
80
112
|
- required: `true`
|
@@ -93,6 +125,13 @@ The `docker` DSL is used to define Docker containers. It has the following attri
|
|
93
125
|
- default: `[]`
|
94
126
|
- description: a listing of references to build caches to run
|
95
127
|
|
128
|
+
In addition to the above attributes, `docker` has the following references:
|
129
|
+
|
130
|
+
- `build_cache`
|
131
|
+
- required: `false`
|
132
|
+
- class: `Dockly::BuildCache`
|
133
|
+
- description: a caching system to stop rebuilding/compiling the same files every time
|
134
|
+
|
96
135
|
`foreman`
|
97
136
|
---------
|
98
137
|
|
@@ -133,7 +172,6 @@ The `deb` DSL is used to define Debian packages. It has the following attributes
|
|
133
172
|
|
134
173
|
- `package_name`
|
135
174
|
- required: `true`
|
136
|
-
- default: `nil`
|
137
175
|
- description: the name of the created package
|
138
176
|
- `version`
|
139
177
|
- required: `true`
|
@@ -185,7 +223,6 @@ deb :dockly_package do
|
|
185
223
|
|
186
224
|
docker do
|
187
225
|
name :dockly_docker
|
188
|
-
tag 'dockly_docker'
|
189
226
|
import 's3://dockly-bucket-name/base-image.tar.gz'
|
190
227
|
git_archive '/app'
|
191
228
|
timeout 120
|
data/lib/dockly/docker.rb
CHANGED
@@ -10,10 +10,10 @@ class Dockly::Docker
|
|
10
10
|
include Dockly::Util::Logger::Mixin
|
11
11
|
|
12
12
|
logger_prefix '[dockly docker]'
|
13
|
-
dsl_attribute :import, :git_archive, :build, :
|
13
|
+
dsl_attribute :name, :import, :git_archive, :build, :tag, :build_dir, :package_dir,
|
14
14
|
:timeout, :cleanup_images, :build_caches
|
15
15
|
|
16
|
-
default_value :
|
16
|
+
default_value :tag, nil
|
17
17
|
default_value :build_dir, 'build/docker'
|
18
18
|
default_value :package_dir, '/opt/docker'
|
19
19
|
default_value :build_caches, []
|
@@ -38,7 +38,7 @@ class Dockly::Docker
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def export_filename
|
41
|
-
"#{
|
41
|
+
"#{name}-image.tgz"
|
42
42
|
end
|
43
43
|
|
44
44
|
def run_build_caches(image)
|
@@ -66,7 +66,7 @@ class Dockly::Docker
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def make_git_archive
|
69
|
-
ensure_present! :
|
69
|
+
ensure_present! :git_archive
|
70
70
|
info "initializing"
|
71
71
|
|
72
72
|
prefix = git_archive
|
@@ -110,16 +110,16 @@ class Dockly::Docker
|
|
110
110
|
end
|
111
111
|
|
112
112
|
def build_image(image)
|
113
|
-
ensure_present! :
|
113
|
+
ensure_present! :name, :build
|
114
114
|
info "starting build from #{image.id}"
|
115
115
|
out_image = ::Docker::Image.build("from #{image.id}\n#{build}")
|
116
116
|
info "built the image: #{out_image.id}"
|
117
|
-
out_image.tag(:repo =>
|
117
|
+
out_image.tag(:repo => name, :tag => tag)
|
118
118
|
out_image
|
119
119
|
end
|
120
120
|
|
121
121
|
def export_image(image)
|
122
|
-
ensure_present! :
|
122
|
+
ensure_present! :name, :build_dir
|
123
123
|
container = ::Docker::Container.create('Image' => image.id, 'Cmd' => %w[true])
|
124
124
|
info "created the container: #{container.id}"
|
125
125
|
Zlib::GzipWriter.open(tar_path) do |file|
|
@@ -131,7 +131,7 @@ class Dockly::Docker
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def fetch_import
|
134
|
-
ensure_present! :
|
134
|
+
ensure_present! :import
|
135
135
|
path = "/tmp/dockly-docker-import.#{name}.#{File.basename(import)}"
|
136
136
|
|
137
137
|
if File.exist?(path)
|
@@ -162,6 +162,10 @@ class Dockly::Docker
|
|
162
162
|
build_caches << Dockly::BuildCache.new(&block)
|
163
163
|
end
|
164
164
|
|
165
|
+
def repository(value = nil)
|
166
|
+
name(value)
|
167
|
+
end
|
168
|
+
|
165
169
|
private
|
166
170
|
def connection
|
167
171
|
Dockly::AWS.s3
|
data/lib/dockly/version.rb
CHANGED
data/spec/dockly/deb_spec.rb
CHANGED
@@ -48,11 +48,10 @@ describe Dockly::Deb do
|
|
48
48
|
context 'when it has a docker', :docker do
|
49
49
|
before do
|
50
50
|
subject.docker do
|
51
|
-
name '
|
51
|
+
name 'deb_test'
|
52
52
|
import 'https://s3.amazonaws.com/swipely-pub/docker-export-ubuntu-latest.tgz'
|
53
53
|
git_archive '.'
|
54
54
|
build 'touch /deb_worked'
|
55
|
-
tag 'deb_test'
|
56
55
|
build_dir 'build/docker'
|
57
56
|
end
|
58
57
|
end
|
data/spec/dockly/docker_spec.rb
CHANGED
@@ -149,7 +149,7 @@ describe Dockly::Docker do
|
|
149
149
|
end
|
150
150
|
|
151
151
|
describe '#generate!', :docker do
|
152
|
-
let(:docker_file) { 'build/docker/dockly_test-
|
152
|
+
let(:docker_file) { 'build/docker/dockly_test-image.tgz' }
|
153
153
|
before { FileUtils.rm_rf(docker_file) }
|
154
154
|
|
155
155
|
context 'without cleaning up' do
|
@@ -158,8 +158,7 @@ describe Dockly::Docker do
|
|
158
158
|
import 'https://s3.amazonaws.com/swipely-pub/docker-export-ubuntu-latest.tgz'
|
159
159
|
git_archive '.'
|
160
160
|
build "run touch /it_worked"
|
161
|
-
|
162
|
-
tag 'generate'
|
161
|
+
repository 'dockly_test'
|
163
162
|
build_dir 'build/docker'
|
164
163
|
cleanup_images false
|
165
164
|
end
|
@@ -188,8 +187,7 @@ describe Dockly::Docker do
|
|
188
187
|
import 'https://s3.amazonaws.com/swipely-pub/docker-export-ubuntu-latest.tgz'
|
189
188
|
git_archive '.'
|
190
189
|
build "run touch /it_worked"
|
191
|
-
|
192
|
-
tag 'generate'
|
190
|
+
repository 'dockly_test'
|
193
191
|
build_dir 'build/docker'
|
194
192
|
cleanup_images true
|
195
193
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dockly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-11-
|
12
|
+
date: 2013-11-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: clamp
|