cide 0.9.1 → 0.9.2
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/.rubocop.yml +3 -1
- data/Gemfile +0 -3
- data/Gemfile.lock +40 -39
- data/README.md +8 -15
- data/cide.gemspec +5 -4
- data/lib/cide/builder.rb +3 -3
- data/lib/cide/cli.rb +24 -27
- data/lib/cide/config_file.rb +1 -1
- data/lib/cide/config_file_loader.rb +6 -5
- data/lib/cide/constants.rb +5 -5
- data/lib/cide/docker.rb +11 -25
- data/lib/cide/dockerfile_template.erb +4 -0
- data/lib/cide/runner.rb +3 -3
- metadata +20 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 81495b6767bc28da5ffbfd0c0193b416ca186354
|
|
4
|
+
data.tar.gz: 43e6044abe9fb0ff99febbea8415308688e42bf7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fff6cb3795f75e91c6787c20b9f605c12bbf380bd2ab2bbdd5b5db73396521cd47f3ad7f4d40d68e9c87a4fc2b7bc9da6c2cf525c564678a8084db640b1848a3
|
|
7
|
+
data.tar.gz: 1db3d9839621779ac121782a38c2d8969c449615661e77076437b31ea7e9af0f639a420ddaafc7d9ee9c0c802f0e2e974771ba20b7048d86e0a5553655747ab9
|
data/.rubocop.yml
CHANGED
|
@@ -46,6 +46,8 @@ Style/SpecialGlobalVars:
|
|
|
46
46
|
|
|
47
47
|
# Allows for easy diffing
|
|
48
48
|
# Keep them sorted alphabetically unless a meaningful order exists
|
|
49
|
-
Style/
|
|
49
|
+
Style/TrailingCommaInLiteral:
|
|
50
|
+
EnforcedStyleForMultiline: comma
|
|
51
|
+
Style/TrailingCommaInArguments:
|
|
50
52
|
EnforcedStyleForMultiline: comma
|
|
51
53
|
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,33 +1,32 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
cide (0.9.
|
|
4
|
+
cide (0.9.2)
|
|
5
|
+
aws-sdk (~> 2)
|
|
5
6
|
thor (~> 0.19)
|
|
6
7
|
virtus (~> 1.0)
|
|
7
8
|
|
|
8
9
|
GEM
|
|
9
10
|
remote: https://rubygems.org/
|
|
10
11
|
specs:
|
|
11
|
-
activesupport (4.2.
|
|
12
|
+
activesupport (4.2.6)
|
|
12
13
|
i18n (~> 0.7)
|
|
13
14
|
json (~> 1.7, >= 1.7.7)
|
|
14
15
|
minitest (~> 5.1)
|
|
15
16
|
thread_safe (~> 0.3, >= 0.3.4)
|
|
16
17
|
tzinfo (~> 1.1)
|
|
17
|
-
ast (2.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
aws-sdk (2.2.
|
|
21
|
-
aws-sdk-resources (= 2.2.16)
|
|
22
|
-
aws-sdk-core (2.2.16)
|
|
18
|
+
ast (2.2.0)
|
|
19
|
+
aws-sdk (2.2.31)
|
|
20
|
+
aws-sdk-resources (= 2.2.31)
|
|
21
|
+
aws-sdk-core (2.2.31)
|
|
23
22
|
jmespath (~> 1.0)
|
|
24
|
-
aws-sdk-resources (2.2.
|
|
25
|
-
aws-sdk-core (= 2.2.
|
|
23
|
+
aws-sdk-resources (2.2.31)
|
|
24
|
+
aws-sdk-core (= 2.2.31)
|
|
26
25
|
axiom-types (0.1.1)
|
|
27
26
|
descendants_tracker (~> 0.0.4)
|
|
28
27
|
ice_nine (~> 0.11.0)
|
|
29
28
|
thread_safe (~> 0.3, >= 0.3.1)
|
|
30
|
-
binman (
|
|
29
|
+
binman (5.1.0)
|
|
31
30
|
opener (>= 0.1.0, < 1)
|
|
32
31
|
coercible (1.0.0)
|
|
33
32
|
descendants_tracker (~> 0.0.1)
|
|
@@ -38,42 +37,45 @@ GEM
|
|
|
38
37
|
i18n (0.7.0)
|
|
39
38
|
ice_nine (0.11.2)
|
|
40
39
|
jmespath (1.1.3)
|
|
41
|
-
json (1.8.
|
|
42
|
-
md2man (
|
|
43
|
-
binman (~>
|
|
40
|
+
json (1.8.3)
|
|
41
|
+
md2man (5.1.1)
|
|
42
|
+
binman (~> 5.0)
|
|
44
43
|
redcarpet (~> 3.0)
|
|
45
|
-
|
|
44
|
+
rouge (~> 1.0)
|
|
45
|
+
minitest (5.8.4)
|
|
46
46
|
opener (0.1.0)
|
|
47
|
-
parser (2.
|
|
48
|
-
ast (
|
|
49
|
-
powerpack (0.1.
|
|
50
|
-
rainbow (2.
|
|
51
|
-
rake (
|
|
52
|
-
redcarpet (3.3.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
rspec-
|
|
56
|
-
rspec-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
47
|
+
parser (2.3.0.7)
|
|
48
|
+
ast (~> 2.2)
|
|
49
|
+
powerpack (0.1.1)
|
|
50
|
+
rainbow (2.1.0)
|
|
51
|
+
rake (11.1.2)
|
|
52
|
+
redcarpet (3.3.4)
|
|
53
|
+
rouge (1.10.1)
|
|
54
|
+
rspec (3.4.0)
|
|
55
|
+
rspec-core (~> 3.4.0)
|
|
56
|
+
rspec-expectations (~> 3.4.0)
|
|
57
|
+
rspec-mocks (~> 3.4.0)
|
|
58
|
+
rspec-core (3.4.4)
|
|
59
|
+
rspec-support (~> 3.4.0)
|
|
60
|
+
rspec-expectations (3.4.0)
|
|
60
61
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
61
|
-
rspec-support (~> 3.
|
|
62
|
-
rspec-mocks (3.
|
|
62
|
+
rspec-support (~> 3.4.0)
|
|
63
|
+
rspec-mocks (3.4.1)
|
|
63
64
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
64
|
-
rspec-support (~> 3.
|
|
65
|
-
rspec-support (3.
|
|
66
|
-
rubocop (0.
|
|
67
|
-
|
|
68
|
-
parser (>= 2.2.0.1, < 3.0)
|
|
65
|
+
rspec-support (~> 3.4.0)
|
|
66
|
+
rspec-support (3.4.1)
|
|
67
|
+
rubocop (0.39.0)
|
|
68
|
+
parser (>= 2.3.0.7, < 3.0)
|
|
69
69
|
powerpack (~> 0.1)
|
|
70
70
|
rainbow (>= 1.99.1, < 3.0)
|
|
71
|
-
ruby-progressbar (~> 1.
|
|
71
|
+
ruby-progressbar (~> 1.7)
|
|
72
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
|
72
73
|
ruby-progressbar (1.7.5)
|
|
73
|
-
thor (0.19.
|
|
74
|
+
thor (0.19.4)
|
|
74
75
|
thread_safe (0.3.5)
|
|
75
76
|
tzinfo (1.2.2)
|
|
76
77
|
thread_safe (~> 0.1)
|
|
78
|
+
unicode-display_width (1.0.3)
|
|
77
79
|
virtus (1.0.5)
|
|
78
80
|
axiom-types (~> 0.1)
|
|
79
81
|
coercible (~> 1.0)
|
|
@@ -85,7 +87,6 @@ PLATFORMS
|
|
|
85
87
|
|
|
86
88
|
DEPENDENCIES
|
|
87
89
|
activesupport
|
|
88
|
-
aws-sdk (~> 2)
|
|
89
90
|
cide!
|
|
90
91
|
md2man
|
|
91
92
|
rake
|
|
@@ -93,4 +94,4 @@ DEPENDENCIES
|
|
|
93
94
|
rubocop
|
|
94
95
|
|
|
95
96
|
BUNDLED WITH
|
|
96
|
-
1.
|
|
97
|
+
1.14.6
|
data/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
*cide* - Isolated test runner with Docker
|
|
2
|
-
=========================================
|
|
1
|
+
# *cide* - Isolated build tool and test runner with Docker
|
|
3
2
|
|
|
4
|
-
*cide* is a command-line tool that runs tests in an isolated (docker)
|
|
3
|
+
*cide* is a command-line tool that builds packages and runs tests in an isolated (docker)
|
|
5
4
|
environment. It solves a problem where Jenkins workers need all the project's
|
|
6
5
|
dependencies (possibly conflicting) to be installed on the boxes. With *cide*
|
|
7
6
|
each run gets its own set of temporary docker containers which are scratched
|
|
@@ -10,8 +9,7 @@ the developer machine and get the same build environment as on the CI. This
|
|
|
10
9
|
makes configuration iterations much shorter and allows to converge on a
|
|
11
10
|
working configuration faster.
|
|
12
11
|
|
|
13
|
-
Usage
|
|
14
|
-
-----
|
|
12
|
+
## Usage
|
|
15
13
|
|
|
16
14
|
Go to the target project's root and run `cide init` to populate a default
|
|
17
15
|
`cide.yml`. This file contains all the instruction to build your project with
|
|
@@ -20,8 +18,7 @@ cide.
|
|
|
20
18
|
Once the file is configured run `cide` to execute the build. All the output
|
|
21
19
|
will appear in the console.
|
|
22
20
|
|
|
23
|
-
Example
|
|
24
|
-
-------
|
|
21
|
+
## Example
|
|
25
22
|
|
|
26
23
|
`cide.yml`
|
|
27
24
|
```yaml
|
|
@@ -39,8 +36,7 @@ run: bundle exec rspec
|
|
|
39
36
|
|
|
40
37
|
See [the cide.yml man page](man/cide.yml.1.md) for the full documentation.
|
|
41
38
|
|
|
42
|
-
Features
|
|
43
|
-
--------
|
|
39
|
+
## Features
|
|
44
40
|
|
|
45
41
|
* straighforward to use, just run `cide` inside of your project
|
|
46
42
|
* works on OSX with boot2docker
|
|
@@ -48,8 +44,7 @@ Features
|
|
|
48
44
|
* can use linked containers for backend dependencies like MySQL or redis
|
|
49
45
|
* artefact export
|
|
50
46
|
|
|
51
|
-
Missing features
|
|
52
|
-
----------------
|
|
47
|
+
## Missing features
|
|
53
48
|
|
|
54
49
|
* Linked container readiness detection. Some containers take a while to boot
|
|
55
50
|
up. Currently the `script/ci` must implement some sort of detection loop.
|
|
@@ -61,8 +56,7 @@ Missing features
|
|
|
61
56
|
|
|
62
57
|
PR welcome !
|
|
63
58
|
|
|
64
|
-
Installation
|
|
65
|
-
------------
|
|
59
|
+
## Installation
|
|
66
60
|
|
|
67
61
|
The current dependencies are [ruby
|
|
68
62
|
2.0+](https://www.ruby-lang.org/en/documentation/installation/) and [docker
|
|
@@ -82,8 +76,7 @@ Then install the *cide* ruby gem:
|
|
|
82
76
|
gem install cide
|
|
83
77
|
```
|
|
84
78
|
|
|
85
|
-
Similar projects
|
|
86
|
-
----------------
|
|
79
|
+
## Similar projects
|
|
87
80
|
|
|
88
81
|
* [Docker Compose](https://docs.docker.com/compose/) - Docker development environment
|
|
89
82
|
* [Travis CI](https://travis-ci.org/) - Great CI for Open Source projects
|
data/cide.gemspec
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = 'cide'
|
|
5
|
-
s.version = '0.9.
|
|
6
|
-
s.authors = ['
|
|
7
|
-
s.email = ['
|
|
5
|
+
s.version = '0.9.2'
|
|
6
|
+
s.authors = ['pusher']
|
|
7
|
+
s.email = ['support@pusher.com']
|
|
8
8
|
s.summary = 'Isolated test runner with Docker'
|
|
9
9
|
s.description = <<DESC
|
|
10
10
|
cide is a command-line tool that runs tests in an isolated (docker)
|
|
11
11
|
environment. It allows to run the same command on the developer and CI
|
|
12
12
|
machines.
|
|
13
13
|
DESC
|
|
14
|
-
s.homepage = 'https://
|
|
14
|
+
s.homepage = 'https://pusher.github.io/cide'
|
|
15
15
|
s.license = 'MIT'
|
|
16
16
|
|
|
17
17
|
s.executables = ['cide']
|
|
@@ -21,6 +21,7 @@ DESC
|
|
|
21
21
|
|
|
22
22
|
s.required_ruby_version = '>= 1.9.3'
|
|
23
23
|
|
|
24
|
+
s.add_runtime_dependency 'aws-sdk', '~> 2'
|
|
24
25
|
s.add_runtime_dependency 'thor', '~> 0.19'
|
|
25
26
|
s.add_runtime_dependency 'virtus', '~> 1.0'
|
|
26
27
|
s.add_development_dependency 'activesupport'
|
data/lib/cide/builder.rb
CHANGED
|
@@ -14,12 +14,12 @@ module CIDE
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def build(tag: nil, pull: nil, ssh_key: nil)
|
|
17
|
-
|
|
17
|
+
raise ArgumentError, 'tag missing' unless tag
|
|
18
18
|
|
|
19
19
|
if config.use_ssh
|
|
20
|
-
|
|
20
|
+
raise ArgumentError, 'ssh_key missing' unless ssh_key
|
|
21
21
|
unless File.exist?(ssh_key)
|
|
22
|
-
|
|
22
|
+
raise ArgumentError, "ssh_key #{ssh_key} not found"
|
|
23
23
|
end
|
|
24
24
|
create_tmp_file! TEMP_SSH_KEY, File.read(ssh_key)
|
|
25
25
|
end
|
data/lib/cide/cli.rb
CHANGED
|
@@ -57,8 +57,6 @@ module CIDE
|
|
|
57
57
|
default: '~/.ssh/id_rsa'
|
|
58
58
|
|
|
59
59
|
def exec
|
|
60
|
-
setup_docker
|
|
61
|
-
|
|
62
60
|
tag = name_to_tag options.name
|
|
63
61
|
|
|
64
62
|
banner 'Config'
|
|
@@ -93,7 +91,7 @@ module CIDE
|
|
|
93
91
|
|
|
94
92
|
guest_dir = options.guest_export_dir || config.export_dir
|
|
95
93
|
if guest_dir.nil?
|
|
96
|
-
puts
|
|
94
|
+
puts 'Ignoring, missing export_dir'
|
|
97
95
|
return
|
|
98
96
|
end
|
|
99
97
|
|
|
@@ -141,7 +139,7 @@ module CIDE
|
|
|
141
139
|
default: ENV['AWS_BUCKET']
|
|
142
140
|
|
|
143
141
|
def package
|
|
144
|
-
|
|
142
|
+
raise 'missing AWS_BUCKET' if options.upload && !options.aws_bucket
|
|
145
143
|
|
|
146
144
|
tag = name_to_tag options.name
|
|
147
145
|
|
|
@@ -248,8 +246,6 @@ module CIDE
|
|
|
248
246
|
desc: 'User to run under',
|
|
249
247
|
default: 'cide'
|
|
250
248
|
def debug
|
|
251
|
-
setup_docker
|
|
252
|
-
|
|
253
249
|
tag = name_to_tag options.name
|
|
254
250
|
|
|
255
251
|
## Config ##
|
|
@@ -287,18 +283,18 @@ module CIDE
|
|
|
287
283
|
default: 20,
|
|
288
284
|
type: :numeric
|
|
289
285
|
def clean
|
|
290
|
-
setup_docker
|
|
291
|
-
|
|
292
286
|
days_to_keep = options[:days]
|
|
293
287
|
max_images = options[:count]
|
|
294
288
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
289
|
+
# Delete failed images
|
|
290
|
+
failed_filter = 'label=cide.build.complete=false'
|
|
291
|
+
cide_failed_image_ids = docker_image_ids(filter_by: failed_filter)
|
|
292
|
+
if cide_failed_image_ids.any?
|
|
293
|
+
docker('rmi', '--force', *cide_failed_image_ids)
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
# Retrieve all other cide images
|
|
297
|
+
cide_image_ids = docker_image_ids(filter_by: 'label=cide')
|
|
302
298
|
|
|
303
299
|
if cide_image_ids.empty?
|
|
304
300
|
puts 'No images found to be cleaned'
|
|
@@ -306,26 +302,27 @@ module CIDE
|
|
|
306
302
|
end
|
|
307
303
|
|
|
308
304
|
x = docker('inspect', *cide_image_ids, capture: true)
|
|
309
|
-
cide_images =
|
|
305
|
+
cide_images =
|
|
306
|
+
JSON
|
|
307
|
+
.parse(x.strip)
|
|
310
308
|
.each { |image| image['Created'] = Time.iso8601(image['Created']) }
|
|
311
309
|
.sort { |a, b| a['Created'] <=> b['Created'] }
|
|
312
310
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
end
|
|
311
|
+
to_destroy = cide_images[max_images..-1]
|
|
312
|
+
leftover_images = cide_images[0..(max_images - 1)]
|
|
313
|
+
|
|
314
|
+
expire_from = Time.now - (days_to_keep * 24 * 60 * 60)
|
|
315
|
+
to_destroy <<
|
|
316
|
+
leftover_images.select { |image| image['Created'] < expire_from }
|
|
317
|
+
|
|
318
|
+
to_destroy_ids = to_destroy.map { |image| image['Id'] }
|
|
322
319
|
|
|
323
|
-
if
|
|
320
|
+
if to_destroy_ids.empty?
|
|
324
321
|
puts 'No images found to be cleaned'
|
|
325
322
|
return
|
|
326
323
|
end
|
|
327
324
|
|
|
328
|
-
docker('rmi', '--force', *
|
|
325
|
+
docker('rmi', '--force', *to_destroy_ids)
|
|
329
326
|
end
|
|
330
327
|
|
|
331
328
|
desc 'init', "Creates a blank #{CONFIG_FILES.first} in the project"
|
data/lib/cide/config_file.rb
CHANGED
|
@@ -102,7 +102,7 @@ module CIDE
|
|
|
102
102
|
paths = CONFIG_FILES.map { |name| File.expand_path(name, dir) }
|
|
103
103
|
paths
|
|
104
104
|
.find { |path| File.exist?(path) } ||
|
|
105
|
-
|
|
105
|
+
raise("Config not found among these paths: #{paths.inspect}")
|
|
106
106
|
end
|
|
107
107
|
end
|
|
108
108
|
end
|
|
@@ -311,11 +311,12 @@ module CIDE
|
|
|
311
311
|
value.each_pair do |key, value_|
|
|
312
312
|
key = key.to_s
|
|
313
313
|
path_ = path.append(key)
|
|
314
|
-
|
|
315
|
-
value_
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
314
|
+
value_ =
|
|
315
|
+
if value_.nil?
|
|
316
|
+
expect_env(path_, key)
|
|
317
|
+
else
|
|
318
|
+
expect_string(path_, value_)
|
|
319
|
+
end
|
|
319
320
|
hash[key.to_s] = value_ if value_
|
|
320
321
|
end
|
|
321
322
|
else
|
data/lib/cide/constants.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
module CIDE
|
|
2
2
|
dir = File.expand_path('..', __FILE__)
|
|
3
|
-
DOCKERFILE = 'Dockerfile.cide'
|
|
3
|
+
DOCKERFILE = 'Dockerfile.cide'.freeze
|
|
4
4
|
DEFAULT_CIDEFILE = File.join(dir, 'default_cide.yml')
|
|
5
|
-
TEMP_SSH_KEY = 'id_rsa.tmp'
|
|
6
|
-
SSH_CONFIG_FILE = 'ssh_config'
|
|
5
|
+
TEMP_SSH_KEY = 'id_rsa.tmp'.freeze
|
|
6
|
+
SSH_CONFIG_FILE = 'ssh_config'.freeze
|
|
7
7
|
SSH_CONFIG_PATH = File.join(dir, SSH_CONFIG_FILE)
|
|
8
|
-
CONFIG_FILES = ['cide.yml', '.cide.yml']
|
|
9
|
-
CIDE_DIR = '/cide'
|
|
8
|
+
CONFIG_FILES = ['cide.yml', '.cide.yml'].freeze
|
|
9
|
+
CIDE_DIR = '/cide'.freeze
|
|
10
10
|
CIDE_SRC_DIR = File.join(CIDE_DIR, 'src')
|
|
11
11
|
CIDE_SSH_DIR = File.join(CIDE_DIR, '.ssh')
|
|
12
12
|
end
|
data/lib/cide/docker.rb
CHANGED
|
@@ -5,7 +5,7 @@ module CIDE
|
|
|
5
5
|
module Docker
|
|
6
6
|
# Generates a valid id for docker from any string
|
|
7
7
|
def self.id(str)
|
|
8
|
-
|
|
8
|
+
str.to_s.downcase.gsub(/[^a-z0-9\-_.]/, '_')
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
# Raised when a docker command exits with a status higher than zero
|
|
@@ -19,6 +19,15 @@ module CIDE
|
|
|
19
19
|
|
|
20
20
|
class VersionError < StandardError; end
|
|
21
21
|
|
|
22
|
+
def docker_image_ids(filter_by: false)
|
|
23
|
+
args = ['--no-trunc']
|
|
24
|
+
args << ['--filter', filter_by] if filter_by
|
|
25
|
+
lines = docker('images', *args, capture: true).lines[1..-1]
|
|
26
|
+
lines
|
|
27
|
+
.map { |line| line.split(/\s+/) }
|
|
28
|
+
.map { |line| line[2] }
|
|
29
|
+
end
|
|
30
|
+
|
|
22
31
|
def docker(*args, verbose: false, capture: false)
|
|
23
32
|
cmd = (['docker'] + args).map(&:to_s)
|
|
24
33
|
p cmd if verbose
|
|
@@ -36,30 +45,7 @@ module CIDE
|
|
|
36
45
|
ensure
|
|
37
46
|
Process.wait(pid)
|
|
38
47
|
exitstatus = $?.exitstatus
|
|
39
|
-
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
protected
|
|
43
|
-
|
|
44
|
-
def setup_docker
|
|
45
|
-
@setup_docker ||= (
|
|
46
|
-
# Check docker version
|
|
47
|
-
docker_version = nil
|
|
48
|
-
case `docker version 2>/dev/null`
|
|
49
|
-
when /Client version: ([^\s]+)/
|
|
50
|
-
docker_version = $1
|
|
51
|
-
when /\s+Version:\s+([^\s]+)/
|
|
52
|
-
docker_version = $1
|
|
53
|
-
else
|
|
54
|
-
fail VersionError, 'Unknown docker version'
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
if Gem::Version.new(docker_version) < Gem::Version.new('1.5.0')
|
|
58
|
-
fail VersionError, "Docker version #{$1} too old"
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
true
|
|
62
|
-
)
|
|
48
|
+
raise Error, exitstatus if exitstatus > 0
|
|
63
49
|
end
|
|
64
50
|
end
|
|
65
51
|
end
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
FROM <%= from %>
|
|
2
|
+
LABEL cide=""
|
|
3
|
+
LABEL cide.build.complete="false"
|
|
4
|
+
|
|
2
5
|
USER root
|
|
3
6
|
RUN useradd -m -U -d <%= CIDE_DIR %> cide
|
|
4
7
|
|
|
@@ -55,3 +58,4 @@ USER root
|
|
|
55
58
|
ADD . <%= CIDE_SRC_DIR %>
|
|
56
59
|
RUN chown -R cide:cide <%= CIDE_DIR %>
|
|
57
60
|
USER cide
|
|
61
|
+
LABEL cide.build.complete="true"
|
data/lib/cide/runner.rb
CHANGED
|
@@ -13,7 +13,7 @@ module CIDE
|
|
|
13
13
|
tag: nil,
|
|
14
14
|
user: nil
|
|
15
15
|
)
|
|
16
|
-
|
|
16
|
+
raise ArgumentError, 'tag missing' unless tag
|
|
17
17
|
|
|
18
18
|
@containers = []
|
|
19
19
|
@id = SecureRandom.hex
|
|
@@ -54,8 +54,8 @@ module CIDE
|
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
def export!(guest_dir: nil, host_dir: nil)
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
raise ArgumentError, 'guest export_dir missing' unless guest_dir
|
|
58
|
+
raise ArgumentError, 'host export_dir missing' unless host_dir
|
|
59
59
|
|
|
60
60
|
# FIXME: strip trailing slashes ?
|
|
61
61
|
guest_dir = File.expand_path(guest_dir, CIDE_SRC_DIR)
|
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cide
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.9.
|
|
4
|
+
version: 0.9.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
-
|
|
7
|
+
- pusher
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-03-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: aws-sdk
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '2'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '2'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: thor
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -113,7 +127,7 @@ description: |
|
|
|
113
127
|
environment. It allows to run the same command on the developer and CI
|
|
114
128
|
machines.
|
|
115
129
|
email:
|
|
116
|
-
-
|
|
130
|
+
- support@pusher.com
|
|
117
131
|
executables:
|
|
118
132
|
- cide
|
|
119
133
|
extensions: []
|
|
@@ -158,7 +172,7 @@ files:
|
|
|
158
172
|
- script/ci
|
|
159
173
|
- spec/build_config_loader_spec.rb
|
|
160
174
|
- spec/spec_helper.rb
|
|
161
|
-
homepage: https://
|
|
175
|
+
homepage: https://pusher.github.io/cide
|
|
162
176
|
licenses:
|
|
163
177
|
- MIT
|
|
164
178
|
metadata: {}
|
|
@@ -178,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
178
192
|
version: '0'
|
|
179
193
|
requirements: []
|
|
180
194
|
rubyforge_project:
|
|
181
|
-
rubygems_version: 2.
|
|
195
|
+
rubygems_version: 2.5.2
|
|
182
196
|
signing_key:
|
|
183
197
|
specification_version: 4
|
|
184
198
|
summary: Isolated test runner with Docker
|