cide 0.4.1 → 0.5.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/.gitignore +3 -0
- data/.nojekyll +0 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +12 -1
- data/{LICENSE → LICENSE.md} +0 -0
- data/README.md +10 -11
- data/Rakefile +3 -2
- data/bin/cide +2 -2
- data/cide.gemspec +8 -6
- data/{.cide.yml → cide.yml} +0 -1
- data/docs/cide.yml.md +154 -0
- data/docs/sidebar.md +22 -0
- data/index.html +53 -0
- data/lib/cide/build/config.rb +12 -0
- data/lib/cide/cli.rb +10 -10
- data/lib/cide/constants.rb +1 -1
- data/man/cide-build.1.md +62 -0
- data/man/cide-clean.1.md +34 -0
- data/man/cide-debug.1.md +42 -0
- data/man/cide-init.1.md +29 -0
- data/man/cide.1.md +113 -0
- data/man/cide.yml.1.md +154 -0
- metadata +36 -12
- data/lib/cide.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7abefe36a37940197b6aadd1fcb7df51562fde0
|
4
|
+
data.tar.gz: 5a4c14225d5fa5a7a3331c2c4eede54f0a1ad661
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6610a43e9ed60f4f8e2addfdf7ae204b82ef082971b1555e333d69e88afb51ebcb8a04b576b080cbb3172dc7215613a48d8e2bb17e2f62fc7e0e47b544984bd6
|
7
|
+
data.tar.gz: 4f294c94689281c3195997dd036c0f1ca66a63b5f05e489e3d99cef09539d035d6197391d23975ace077cde710f7558a7ea5ca0be3d9ce4398508f7f4521863e
|
data/.gitignore
CHANGED
data/.nojekyll
ADDED
File without changes
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cide (0.
|
4
|
+
cide (0.5.0)
|
5
5
|
thor (~> 0.19)
|
6
6
|
virtus (~> 1.0)
|
7
7
|
|
@@ -21,6 +21,8 @@ GEM
|
|
21
21
|
descendants_tracker (~> 0.0.4)
|
22
22
|
ice_nine (~> 0.11.0)
|
23
23
|
thread_safe (~> 0.3, >= 0.3.1)
|
24
|
+
binman (4.0.0)
|
25
|
+
opener (>= 0.1.0, < 1)
|
24
26
|
coercible (1.0.0)
|
25
27
|
descendants_tracker (~> 0.0.1)
|
26
28
|
descendants_tracker (0.0.4)
|
@@ -30,12 +32,17 @@ GEM
|
|
30
32
|
i18n (0.7.0)
|
31
33
|
ice_nine (0.11.1)
|
32
34
|
json (1.8.1)
|
35
|
+
md2man (4.0.0)
|
36
|
+
binman (~> 4.0)
|
37
|
+
redcarpet (~> 3.0)
|
33
38
|
minitest (5.4.3)
|
39
|
+
opener (0.1.0)
|
34
40
|
parser (2.2.0.3)
|
35
41
|
ast (>= 1.1, < 3.0)
|
36
42
|
powerpack (0.1.0)
|
37
43
|
rainbow (2.0.0)
|
38
44
|
rake (10.4.2)
|
45
|
+
redcarpet (3.3.1)
|
39
46
|
rspec (3.2.0)
|
40
47
|
rspec-core (~> 3.2.0)
|
41
48
|
rspec-expectations (~> 3.2.0)
|
@@ -72,6 +79,10 @@ PLATFORMS
|
|
72
79
|
DEPENDENCIES
|
73
80
|
activesupport
|
74
81
|
cide!
|
82
|
+
md2man
|
75
83
|
rake
|
76
84
|
rspec
|
77
85
|
rubocop
|
86
|
+
|
87
|
+
BUNDLED WITH
|
88
|
+
1.10.3
|
data/{LICENSE → LICENSE.md}
RENAMED
File without changes
|
data/README.md
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
*cide* -
|
2
|
-
|
1
|
+
*cide* - Isolated test runner with Docker
|
2
|
+
=========================================
|
3
3
|
|
4
4
|
*cide* is a command-line tool that runs tests in an isolated (docker)
|
5
5
|
environment. It solves a problem where Jenkins workers need all the project's
|
6
6
|
dependencies (possibly conflicting) to be installed on the boxes. With *cide*
|
7
7
|
each run gets it's own set of temporary docker containers which are scratched
|
8
|
-
at the end. Incidentally it's also possible to
|
9
|
-
the developer machine and get the same build
|
10
|
-
makes configuration iterations much shorter and
|
11
|
-
configuration faster.
|
8
|
+
at the end. Incidentally it's also possible to run the same `cide` command on
|
9
|
+
the developer machine and get the same build environment as on the CI. This
|
10
|
+
makes configuration iterations much shorter and allows to converge on a
|
11
|
+
working configuration faster.
|
12
12
|
|
13
13
|
Usage
|
14
14
|
-----
|
15
15
|
|
16
16
|
Go to the target project's root and run `cide init` to populate a default
|
17
|
-
|
18
|
-
cide.
|
17
|
+
`cide.yml`. This file contains all the instruction to build your project with
|
18
|
+
cide and is [documented here](docs/cide.yml.md).
|
19
19
|
|
20
20
|
Once the file is configure run `cide` to execute the build. All the output
|
21
21
|
will appear in the console.
|
@@ -23,7 +23,7 @@ will appear in the console.
|
|
23
23
|
Example
|
24
24
|
-------
|
25
25
|
|
26
|
-
|
26
|
+
`cide.yml`
|
27
27
|
```yaml
|
28
28
|
---
|
29
29
|
from: "ruby:2.1"
|
@@ -55,6 +55,7 @@ Missing features
|
|
55
55
|
current format might be a bit daunting for non-experts.
|
56
56
|
* Build matrix: run variations of the tests, for example with different
|
57
57
|
versions of ruby to make sure all are supported (useful for libraries).
|
58
|
+
* Support for local docker machine
|
58
59
|
|
59
60
|
PR welcome !
|
60
61
|
|
@@ -89,8 +90,6 @@ Similar projects
|
|
89
90
|
TODO
|
90
91
|
----
|
91
92
|
|
92
|
-
* Document the `.cide.yml` format. Look into `lib/cide/build/config_loader.rb`
|
93
|
-
for now
|
94
93
|
* Explain how to use *cide* with Jenkins
|
95
94
|
* Explain Travis CI vs *cide* + Jenkins
|
96
95
|
|
data/Rakefile
CHANGED
data/bin/cide
CHANGED
data/cide.gemspec
CHANGED
@@ -2,13 +2,14 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'cide'
|
5
|
-
s.version = '0.
|
5
|
+
s.version = '0.5.0'
|
6
6
|
s.authors = ['zimbatm']
|
7
7
|
s.email = ['zimbatm@zimbatm.com']
|
8
|
-
s.summary = '
|
8
|
+
s.summary = 'Isolated test runner with Docker'
|
9
9
|
s.description = <<DESC
|
10
|
-
cide
|
11
|
-
|
10
|
+
cide is a command-line tool that runs tests in an isolated (docker)
|
11
|
+
environment. It allows to run the same command on the developer and CI
|
12
|
+
machines.
|
12
13
|
DESC
|
13
14
|
s.homepage = 'https://github.com/zimbatm/cide'
|
14
15
|
s.license = 'MIT'
|
@@ -22,8 +23,9 @@ DESC
|
|
22
23
|
|
23
24
|
s.add_runtime_dependency 'thor', '~> 0.19'
|
24
25
|
s.add_runtime_dependency 'virtus', '~> 1.0'
|
26
|
+
s.add_development_dependency 'activesupport'
|
27
|
+
s.add_development_dependency 'md2man'
|
25
28
|
s.add_development_dependency 'rake'
|
26
|
-
s.add_development_dependency 'rubocop'
|
27
29
|
s.add_development_dependency 'rspec'
|
28
|
-
s.add_development_dependency '
|
30
|
+
s.add_development_dependency 'rubocop'
|
29
31
|
end
|
data/{.cide.yml → cide.yml}
RENAMED
data/docs/cide.yml.md
ADDED
@@ -0,0 +1,154 @@
|
|
1
|
+
CIDE.YML 1 "JUNE 2015" cide.yml "Cide Manual"
|
2
|
+
=============================================
|
3
|
+
|
4
|
+
NAME
|
5
|
+
----
|
6
|
+
|
7
|
+
cide.yml - file format that directs the `cide build` execution
|
8
|
+
|
9
|
+
DESCRIPTION
|
10
|
+
-----------
|
11
|
+
|
12
|
+
The `cide.yml` file is encoded in the [YAML markup language](http://yaml.org/)
|
13
|
+
and describes mostly how the Dockerfile will be generated.
|
14
|
+
|
15
|
+
It has the following semantic:
|
16
|
+
|
17
|
+
Root document
|
18
|
+
-------------
|
19
|
+
|
20
|
+
```yaml
|
21
|
+
---
|
22
|
+
# Image to base the build on
|
23
|
+
#
|
24
|
+
# required
|
25
|
+
# type: string
|
26
|
+
from: 'ubuntu'
|
27
|
+
|
28
|
+
# A step executed as root. See the Step definition.
|
29
|
+
as_root: {}
|
30
|
+
|
31
|
+
# If set to true, inject the invoker's SSH key into the image.
|
32
|
+
# This is used for shared github access for example.
|
33
|
+
#
|
34
|
+
# type: boolean
|
35
|
+
use_ssh: no
|
36
|
+
|
37
|
+
# A step executed as the "cide" user. See the Step definition.
|
38
|
+
before: {}
|
39
|
+
|
40
|
+
# Environment variables set at runtime. See the ENV definition.
|
41
|
+
env: {}
|
42
|
+
|
43
|
+
# Selects a file or directory to export. When set and cide is invoked with
|
44
|
+
# --export the same directory will be copied back into the project's root.
|
45
|
+
#
|
46
|
+
# type: string
|
47
|
+
export_dir:
|
48
|
+
|
49
|
+
# When defined, executes and attaches the defined linked containers to the
|
50
|
+
# CI runtime. See the Link definition.
|
51
|
+
links: []
|
52
|
+
|
53
|
+
# Determines what script to run to execute the tests. This is the main command
|
54
|
+
# that is used to run the CI.
|
55
|
+
#
|
56
|
+
# The script has to exit with an exit-status of zero to succeed.
|
57
|
+
#
|
58
|
+
# default: "script/ci"
|
59
|
+
# type: string
|
60
|
+
run: rake
|
61
|
+
```
|
62
|
+
|
63
|
+
Step definition
|
64
|
+
---------------
|
65
|
+
|
66
|
+
Here is the format for a step.
|
67
|
+
|
68
|
+
```yaml
|
69
|
+
# An array or hash of files to add
|
70
|
+
#
|
71
|
+
# In the hash form, the target is on the left-hand side and source on the
|
72
|
+
# right-hand side. If multiple values are passed on to the right then they are
|
73
|
+
# all added to the same folder.
|
74
|
+
#
|
75
|
+
# If a URL is provided in the source it is fetched during the build.
|
76
|
+
#
|
77
|
+
# Note that source files should either come from a URL or from a file within
|
78
|
+
# the project's directory.
|
79
|
+
add:
|
80
|
+
/etc/cacert.pem: http://curl.se/cacert.pem
|
81
|
+
/src:
|
82
|
+
- Gemfile
|
83
|
+
- Gemfile.lock
|
84
|
+
# or
|
85
|
+
add:
|
86
|
+
- one
|
87
|
+
- two
|
88
|
+
|
89
|
+
# Sets environment variables in this step (and next ones). See the ENV
|
90
|
+
# definition.
|
91
|
+
env: {}
|
92
|
+
|
93
|
+
# A list of commands to run in that stage
|
94
|
+
#
|
95
|
+
# type: string or array of string
|
96
|
+
run:
|
97
|
+
- bundle exec
|
98
|
+
- npm install
|
99
|
+
# or
|
100
|
+
run: go get ./...
|
101
|
+
```
|
102
|
+
|
103
|
+
If the step is defined as a string or array, those are interpreted as commands
|
104
|
+
to add to that step.
|
105
|
+
|
106
|
+
ENV definition
|
107
|
+
--------------
|
108
|
+
|
109
|
+
An array or hash of environment variables to load
|
110
|
+
|
111
|
+
In the hash for, the left-hand side is the key and the right-hand side the
|
112
|
+
value.
|
113
|
+
|
114
|
+
If a hash value is nil or the array form is used, the environment variables
|
115
|
+
are loaded from the cide invoker environment.
|
116
|
+
|
117
|
+
```yaml
|
118
|
+
env:
|
119
|
+
HOME: /cide
|
120
|
+
AWS_ACCESS_KEY_ID:
|
121
|
+
# or
|
122
|
+
env:
|
123
|
+
- AWS_ACCESS_SECRET_KEY
|
124
|
+
```
|
125
|
+
|
126
|
+
Link definition
|
127
|
+
---------------
|
128
|
+
|
129
|
+
A hash that describes a linked containers. Linked containers are automatically
|
130
|
+
started before executing the main command and destroyed after that.
|
131
|
+
|
132
|
+
```yaml
|
133
|
+
# Gives a name to the container to execute. This also determines the hostname
|
134
|
+
# the main container will be able to address this container with.
|
135
|
+
#
|
136
|
+
# If the name is missing, the name is extracted from the `from` key. For
|
137
|
+
# example if the `from` value is "foobar/redis:2.6" the name will be "redis"
|
138
|
+
#
|
139
|
+
# type: string
|
140
|
+
name: 'mysql'
|
141
|
+
|
142
|
+
# Name of the image to pull and base the container on.
|
143
|
+
#
|
144
|
+
# type: string
|
145
|
+
name: 'redis:2.6'
|
146
|
+
|
147
|
+
# Environment variables for that container. See the ENV definition.
|
148
|
+
env: {}
|
149
|
+
|
150
|
+
# Single command to execute the container with.
|
151
|
+
#
|
152
|
+
# type: string
|
153
|
+
run: 'redis-server'
|
154
|
+
```
|
data/docs/sidebar.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# cide
|
2
|
+
|
3
|
+
[ditto:searchbar]
|
4
|
+
- [Home]()
|
5
|
+
- [CHANGELOG](#/CHANGELOG)
|
6
|
+
- [LICENSE (MIT)](#/LICENSE)
|
7
|
+
|
8
|
+
## Github
|
9
|
+
|
10
|
+
- [Repo](https://github.com/zimbatm/cide)
|
11
|
+
- [Issues](https://github.com/zimbatm/cide/issues)
|
12
|
+
- [Releases](https://github.com/zimbatm/cide/releases)
|
13
|
+
- [Wiki](https://github.com/zimbatm/cide/wiki)
|
14
|
+
|
15
|
+
## Man pages
|
16
|
+
- [man 1 cide](#man/cide.1)
|
17
|
+
- [man 1 cide-build](#man/cide-build.1)
|
18
|
+
- [man 1 cide-clean](#man/cide-clean.1)
|
19
|
+
- [man 1 cide-debug](#man/cide-debug.1)
|
20
|
+
- [man 1 cide-init](#man/cide-init.1)
|
21
|
+
- [man 1 cide.yml](#man/cide.yml.1)
|
22
|
+
|
data/index.html
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>cide - Isolated test runner with Docker</title>
|
6
|
+
|
7
|
+
<!-- jQuery -->
|
8
|
+
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
|
9
|
+
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.min.js"></script>
|
10
|
+
|
11
|
+
<!-- marked -->
|
12
|
+
<script src="//chutsu.github.io/ditto/ver/0.12/marked.js"></script>
|
13
|
+
|
14
|
+
<!-- highlight -->
|
15
|
+
<link rel="stylesheet" href="//chutsu.github.io/ditto/ver/0.12/github.css">
|
16
|
+
<script src="//chutsu.github.io/ditto/ver/0.12/highlight.js"></script>
|
17
|
+
|
18
|
+
<!-- ditto -->
|
19
|
+
<link rel="stylesheet" href="//chutsu.github.io/ditto/ver/0.12/ditto.css">
|
20
|
+
<script src="//chutsu.github.io/ditto/ver/0.12/ditto.js"></script>
|
21
|
+
</head>
|
22
|
+
<body>
|
23
|
+
<!-- essential -->
|
24
|
+
<div id="sidebar"></div>
|
25
|
+
<div id="content"></div>
|
26
|
+
<div id="hide"></div>
|
27
|
+
|
28
|
+
<!-- optional -->
|
29
|
+
<div id="back_to_top">back to top</div>
|
30
|
+
<div id="edit">edit</div>
|
31
|
+
<div id="loading">Loading ...</div>
|
32
|
+
<div id="error"></div>
|
33
|
+
|
34
|
+
<script>
|
35
|
+
$(function($) {
|
36
|
+
// essential settings
|
37
|
+
ditto.index = "README.md";
|
38
|
+
ditto.sidebar_file = "docs/sidebar.md";
|
39
|
+
|
40
|
+
// optional settings if you want github search
|
41
|
+
ditto.github_username = "zimbatm";
|
42
|
+
ditto.github_repo = "cide";
|
43
|
+
ditto.highlight_code = true;
|
44
|
+
|
45
|
+
// where the docs are actually stored on github - so you can edit
|
46
|
+
ditto.base_url = "https://github.com/zimbatm/cide/edit/master";
|
47
|
+
|
48
|
+
// run
|
49
|
+
ditto.run();
|
50
|
+
});
|
51
|
+
</script>
|
52
|
+
</body>
|
53
|
+
</html>
|
data/lib/cide/build/config.rb
CHANGED
@@ -70,6 +70,11 @@ module CIDE
|
|
70
70
|
ERB.new(File.read(DOCKERFILE_TEMPLATE), nil, '<>-').result(binding)
|
71
71
|
end
|
72
72
|
|
73
|
+
def self.load(dir = Dir.pwd, output = $stderr)
|
74
|
+
file_path = find_config(dir)
|
75
|
+
load_file(file_path, output)
|
76
|
+
end
|
77
|
+
|
73
78
|
def self.load_file(file_path, output = $stderr)
|
74
79
|
obj = new
|
75
80
|
loader = ConfigLoader.new(obj)
|
@@ -86,6 +91,13 @@ module CIDE
|
|
86
91
|
return obj if obj.errors.empty?
|
87
92
|
nil
|
88
93
|
end
|
94
|
+
|
95
|
+
def self.find_config(dir)
|
96
|
+
paths = CONFIG_FILES.map { |name| File.expand_path(name, dir) }
|
97
|
+
paths
|
98
|
+
.find { |path| File.exist?(path) } ||
|
99
|
+
fail("Config not found among these paths: #{paths.inspect}")
|
100
|
+
end
|
89
101
|
end
|
90
102
|
end
|
91
103
|
end
|
data/lib/cide/cli.rb
CHANGED
@@ -21,7 +21,7 @@ module CIDE
|
|
21
21
|
|
22
22
|
method_option 'name',
|
23
23
|
desc: 'Name of the build',
|
24
|
-
aliases: %w(n t),
|
24
|
+
aliases: %w(-n -t),
|
25
25
|
default: File.basename(Dir.pwd)
|
26
26
|
|
27
27
|
method_option 'export',
|
@@ -31,13 +31,13 @@ module CIDE
|
|
31
31
|
|
32
32
|
method_option 'export_dir',
|
33
33
|
desc: 'Change the ouput directory on the host',
|
34
|
-
aliases: %w(o host_export_dir),
|
34
|
+
aliases: %w(-o --host_export_dir),
|
35
35
|
default: nil
|
36
36
|
|
37
37
|
method_option 'run',
|
38
38
|
desc: 'Override the script to run',
|
39
39
|
type: :array,
|
40
|
-
aliases: ['r'],
|
40
|
+
aliases: ['-r'],
|
41
41
|
default: []
|
42
42
|
|
43
43
|
method_option 'pull',
|
@@ -47,7 +47,7 @@ module CIDE
|
|
47
47
|
|
48
48
|
method_option 'ssh_key',
|
49
49
|
desc: 'Path to a ssh key to import into the docker image',
|
50
|
-
aliases: ['s'],
|
50
|
+
aliases: ['-s'],
|
51
51
|
default: '~/.ssh/id_rsa'
|
52
52
|
|
53
53
|
def build
|
@@ -57,7 +57,7 @@ module CIDE
|
|
57
57
|
|
58
58
|
## Config ##
|
59
59
|
banner 'Config'
|
60
|
-
build = Build::Config.
|
60
|
+
build = Build::Config.load(Dir.pwd)
|
61
61
|
exit 1 if build.nil?
|
62
62
|
export_dir = options.export_dir
|
63
63
|
export_dir ||= File.dirname(build.export_dir) if build.export_dir
|
@@ -161,7 +161,7 @@ module CIDE
|
|
161
161
|
desc 'debug', 'Opens a debug console in the last project image'
|
162
162
|
method_option 'name',
|
163
163
|
desc: 'Name of the build',
|
164
|
-
aliases: %w(n t),
|
164
|
+
aliases: %w(-n -t),
|
165
165
|
default: File.basename(Dir.pwd)
|
166
166
|
method_option 'user',
|
167
167
|
desc: 'User to run under',
|
@@ -173,7 +173,7 @@ module CIDE
|
|
173
173
|
|
174
174
|
## Config ##
|
175
175
|
banner 'Config'
|
176
|
-
build = Build::Config.
|
176
|
+
build = Build::Config.load
|
177
177
|
exit 1 if build.nil?
|
178
178
|
name = CIDE::Docker.id options.name
|
179
179
|
tag = "cide/#{name}"
|
@@ -270,10 +270,10 @@ module CIDE
|
|
270
270
|
docker('rmi', '--force', *old_cide_images)
|
271
271
|
end
|
272
272
|
|
273
|
-
desc 'init', "Creates a blank #{
|
273
|
+
desc 'init', "Creates a blank #{CONFIG_FILES.first} into the project"
|
274
274
|
def init
|
275
|
-
puts "Creating #{
|
276
|
-
create_file
|
275
|
+
puts "Creating #{CONFIG_FILES.first} with default values"
|
276
|
+
create_file CONFIG_FILES.first, File.read(DEFAULT_CIDEFILE)
|
277
277
|
end
|
278
278
|
|
279
279
|
private
|
data/lib/cide/constants.rb
CHANGED
@@ -5,7 +5,7 @@ module CIDE
|
|
5
5
|
TEMP_SSH_KEY = 'id_rsa.tmp'
|
6
6
|
SSH_CONFIG_FILE = 'ssh_config'
|
7
7
|
SSH_CONFIG_PATH = File.join(dir, SSH_CONFIG_FILE)
|
8
|
-
|
8
|
+
CONFIG_FILES = ['cide.yml', '.cide.yml']
|
9
9
|
CIDE_DIR = '/cide'
|
10
10
|
CIDE_SRC_DIR = File.join(CIDE_DIR, 'src')
|
11
11
|
CIDE_SSH_DIR = File.join(CIDE_DIR, '.ssh')
|
data/man/cide-build.1.md
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
CIDE-BUILD 1 "JUNE 2015" cide-build "Cide Manual"
|
2
|
+
=================================================
|
3
|
+
|
4
|
+
NAME
|
5
|
+
----
|
6
|
+
|
7
|
+
cide-build - Builds an image and executes the run script
|
8
|
+
|
9
|
+
SYNOPSIS
|
10
|
+
--------
|
11
|
+
|
12
|
+
*cide build* [`-n`|`--name`=<*name*>] [`--export`|`--no-export`]
|
13
|
+
[`-o`|`--export-dir`=<*path*>] [`-r`|`--run`=<*command*>]
|
14
|
+
[`--pull`|`--no-pull`] [`-s`|`--ssh-key`=<*path*>]
|
15
|
+
|
16
|
+
DESCRIPTION
|
17
|
+
-----------
|
18
|
+
|
19
|
+
This is the default command that does most of the work and is invoked 99% of
|
20
|
+
the command.
|
21
|
+
|
22
|
+
When invoked it will read the `cide.yml` file, generate a temporary
|
23
|
+
`Dockerfile.cide` file, build it with *docker build*, start all the linked
|
24
|
+
containers and finally run the selected script. When that script exits all the
|
25
|
+
running containers are torn down. This loop guarantees a blank slate for every
|
26
|
+
CI run with isolated dependencies.
|
27
|
+
|
28
|
+
OPTIONS
|
29
|
+
-------
|
30
|
+
|
31
|
+
`-n`, `--name`=<*name*>
|
32
|
+
Name of the built image. This can be used to differentiate between branches
|
33
|
+
or others in a CI environment. By default the name is the basename(1) of the
|
34
|
+
current directory.
|
35
|
+
|
36
|
+
`--export`, `--no-export`
|
37
|
+
Whenever to export artifacts. If `--export` is passed and the `export:`
|
38
|
+
directive is set in the `cide.yml` file, artifacts from that directory are
|
39
|
+
transfered back outside of the container and into the current directory.
|
40
|
+
|
41
|
+
`-o`, `--export-dir`=<*path*>
|
42
|
+
By default the export directory is the same as the one given in the
|
43
|
+
`export:` directive in the `cide.yml` file. It's possible to change that
|
44
|
+
target folder outside of the container.
|
45
|
+
|
46
|
+
`-r`, `--run`=<*command*>
|
47
|
+
Override the script to run. Usually the `run:` directive in the `cide.yml`
|
48
|
+
is defining what to run but this could be used for a quick one-off.
|
49
|
+
|
50
|
+
`--pull`, `--no-pull`
|
51
|
+
Whenever to pull for new images on build. If set it will try to fetch new
|
52
|
+
versions of the `from:` directive. It can be useful to get new versions of
|
53
|
+
an image but also invalidates all the cache.
|
54
|
+
|
55
|
+
`-s`, `--ssh-key`=<*path*>
|
56
|
+
When the `use_ssh:` directive is set to true, where to get the ssh key to
|
57
|
+
inject into the container. Defaults to `~/.ssh/id_rsa`.
|
58
|
+
|
59
|
+
SEE ALSO
|
60
|
+
--------
|
61
|
+
|
62
|
+
cide(1), cide.yml(1)
|
data/man/cide-clean.1.md
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
CIDE-CLEAN 1 "JUNE 2015" cide-clean "Cide Manual"
|
2
|
+
=================================================
|
3
|
+
|
4
|
+
NAME
|
5
|
+
----
|
6
|
+
|
7
|
+
cide-clean - Removes old containers
|
8
|
+
|
9
|
+
SYNOPSIS
|
10
|
+
--------
|
11
|
+
|
12
|
+
*cide clean* [`--days`=<*n*>] [`--count`=<*n*>]
|
13
|
+
|
14
|
+
DESCRIPTION
|
15
|
+
-----------
|
16
|
+
|
17
|
+
`cide` can generate a lot of data on the box in terms of docker images and
|
18
|
+
containers. This command tries to removes old images with a simple heuristic.
|
19
|
+
|
20
|
+
*NOTE*: This command might interfer with other users of the docker daemon.
|
21
|
+
|
22
|
+
OPTIONS
|
23
|
+
-------
|
24
|
+
|
25
|
+
`--days`=<*n*>
|
26
|
+
Number of days to keep the images. Defaults to 7
|
27
|
+
|
28
|
+
`--count`=<*n*>
|
29
|
+
Maximum number of images to keep. Defaults to 10
|
30
|
+
|
31
|
+
SEE ALSO
|
32
|
+
--------
|
33
|
+
|
34
|
+
cide(1)
|
data/man/cide-debug.1.md
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
CIDE-DEBUG 1 "JUNE 2015" cide-debug "Cide Manual"
|
2
|
+
=================================================
|
3
|
+
|
4
|
+
NAME
|
5
|
+
----
|
6
|
+
|
7
|
+
cide-debug - Opens a debug console in the last project image
|
8
|
+
|
9
|
+
SYNOPSIS
|
10
|
+
--------
|
11
|
+
|
12
|
+
*cide debug* [`-n`|`--name`=<*name*>] [`--user`=<*username*>]
|
13
|
+
|
14
|
+
DESCRIPTION
|
15
|
+
-----------
|
16
|
+
|
17
|
+
Sometimes it's useful to run commands inside of the same environment where the
|
18
|
+
CI tests are run from. For example if an error doesn't reproduce on the
|
19
|
+
developer's machine.
|
20
|
+
|
21
|
+
*cide debug* starts a new temporary container (and linked containers) in the
|
22
|
+
previously generated container. This requires the user to have run *cide
|
23
|
+
build* previously.
|
24
|
+
|
25
|
+
OPTIONS
|
26
|
+
-------
|
27
|
+
|
28
|
+
`-n`, `--name`=<*name*>
|
29
|
+
Name of the image. This is generally not required unless a name has been
|
30
|
+
given during the *cide build* phase as well.
|
31
|
+
|
32
|
+
Defaults to the basename(1) of the current directory.
|
33
|
+
|
34
|
+
`--user`=<*username*>
|
35
|
+
Selects the user to run the container under. By default the `cide` user is
|
36
|
+
selected. In some situations it's useful to run the container as `root`
|
37
|
+
(when poking at system dependencies)
|
38
|
+
|
39
|
+
SEE ALSO
|
40
|
+
--------
|
41
|
+
|
42
|
+
cide(1)
|
data/man/cide-init.1.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
CIDE-INIT 1 "JUNE 2015" cide-init "Cide Manual"
|
2
|
+
=================================================
|
3
|
+
|
4
|
+
NAME
|
5
|
+
----
|
6
|
+
|
7
|
+
cide-init - Creates a blank `cide.yml` into the project
|
8
|
+
|
9
|
+
SYNOPSIS
|
10
|
+
--------
|
11
|
+
|
12
|
+
*cide init*
|
13
|
+
|
14
|
+
DESCRIPTION
|
15
|
+
-----------
|
16
|
+
|
17
|
+
It's useful to get a basic skeleton when adding *cide* to a new project. If
|
18
|
+
the file already exists a confirmation is asked.
|
19
|
+
|
20
|
+
FILES
|
21
|
+
-----
|
22
|
+
|
23
|
+
*cide.yml*
|
24
|
+
Per project build and test settings. See cide.yml(1)
|
25
|
+
|
26
|
+
SEE ALSO
|
27
|
+
--------
|
28
|
+
|
29
|
+
cide(1), cide.yml(1)
|
data/man/cide.1.md
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
CIDE 1 "JUNE 2015" cide "Cide Manual"
|
2
|
+
======================================
|
3
|
+
|
4
|
+
NAME
|
5
|
+
----
|
6
|
+
|
7
|
+
cide - Isolated test runner with Docker
|
8
|
+
|
9
|
+
SYNOPSIS
|
10
|
+
--------
|
11
|
+
|
12
|
+
*cide* [`-f`|`--force`] [`-p`|`--pretend`|`--no-pretend`]
|
13
|
+
[`-q`|`--quiet`|`--no-quiet`] [`-s`|`--skip`|`--no-skip`]
|
14
|
+
<*command*> [<*args*>]
|
15
|
+
|
16
|
+
DESCRIPTION
|
17
|
+
-----------
|
18
|
+
|
19
|
+
*cide* is a command-line tool that executes tests in isolation using a
|
20
|
+
container (through Docker).
|
21
|
+
|
22
|
+
The default *cide build* command reads a `.cide.yml` file in the current
|
23
|
+
folder and takes it's content to build a temporary Dockerfile that imports all
|
24
|
+
of the current directory's structure, builds an image with it and then runs a
|
25
|
+
container from it that executes the specified tests. See the cide.yml(1) man
|
26
|
+
page for the structure of that file.
|
27
|
+
|
28
|
+
OPTIONS
|
29
|
+
-------
|
30
|
+
|
31
|
+
These are global options that set the behavior of all commands.
|
32
|
+
|
33
|
+
`-f`, `--force`
|
34
|
+
Overwrite files that already exist
|
35
|
+
|
36
|
+
`-p`, `--pretend`, `--no-pretend`
|
37
|
+
Run but do not make any changes
|
38
|
+
|
39
|
+
`-q`, `--quiet`, `--no-quiet`
|
40
|
+
Suppress status output
|
41
|
+
|
42
|
+
`-s`, `--skip`, `--no-skip`
|
43
|
+
Skip files that already exist
|
44
|
+
|
45
|
+
COMMANDS
|
46
|
+
--------
|
47
|
+
|
48
|
+
*cide build* [<*options*>]
|
49
|
+
Builds an image and executes the run script. This is the default command
|
50
|
+
when none is provided.
|
51
|
+
|
52
|
+
See cide-build(1)
|
53
|
+
|
54
|
+
*cide clean* [<*options*>]
|
55
|
+
Removes old containers.
|
56
|
+
|
57
|
+
See cide-clean(1)
|
58
|
+
|
59
|
+
*cide debug* [<*options*>]
|
60
|
+
Opens a debug console in the last project image
|
61
|
+
|
62
|
+
See cide-debug(1)
|
63
|
+
|
64
|
+
*cide help* [<*command*>]
|
65
|
+
Shows the general help or the one for the given *command*
|
66
|
+
|
67
|
+
*cide init*
|
68
|
+
Creates a blank `cide.yml` file into the project.
|
69
|
+
|
70
|
+
See cide-init(1)
|
71
|
+
|
72
|
+
FILES
|
73
|
+
-----
|
74
|
+
|
75
|
+
*cide.yml*
|
76
|
+
Per project build and test settings. See cide.yml(1)
|
77
|
+
|
78
|
+
ENVIRONMENT
|
79
|
+
-----------
|
80
|
+
|
81
|
+
The following environment variables are used by the `docker` client to connect
|
82
|
+
to the `docker` daemon. See also
|
83
|
+
https://docs.docker.com/docker/reference/commandline/cli/#environment-variables:b659b046131d4024ab5e2d3675716bf0
|
84
|
+
|
85
|
+
*DOCKER_HOST*
|
86
|
+
Daemon socket to connect to.
|
87
|
+
|
88
|
+
*DOCKER_CERT_PATH*
|
89
|
+
The location of your authentication keys.
|
90
|
+
|
91
|
+
*DOCKER_TLS_VERIFY*
|
92
|
+
When set Docker uses TLS and verifies the remote.
|
93
|
+
|
94
|
+
CONTRIBUTE
|
95
|
+
----------
|
96
|
+
|
97
|
+
Bug reports, contributions and forks are welcome.
|
98
|
+
|
99
|
+
All bugs or other forms of discussion happen on
|
100
|
+
<http://github.com/zimbatm/cide/issues>
|
101
|
+
|
102
|
+
There is also a wiki available where you can share your usage patterns or
|
103
|
+
other tips and tricks <https://github.com/zimbatm/cide/wiki>
|
104
|
+
|
105
|
+
COPYRIGHT
|
106
|
+
---------
|
107
|
+
|
108
|
+
Copyright (C) 2015 zimbatm and contributors under the MIT licence.
|
109
|
+
|
110
|
+
SEE ALSO
|
111
|
+
--------
|
112
|
+
|
113
|
+
cide.yml(1)
|
data/man/cide.yml.1.md
ADDED
@@ -0,0 +1,154 @@
|
|
1
|
+
CIDE.YML 1 "JUNE 2015" cide.yml "Cide Manual"
|
2
|
+
=============================================
|
3
|
+
|
4
|
+
NAME
|
5
|
+
----
|
6
|
+
|
7
|
+
cide.yml - file format that directs the `cide build` execution
|
8
|
+
|
9
|
+
DESCRIPTION
|
10
|
+
-----------
|
11
|
+
|
12
|
+
The `cide.yml` file is encoded in the [YAML markup language](http://yaml.org/)
|
13
|
+
and describes mostly how the Dockerfile will be generated.
|
14
|
+
|
15
|
+
It has the following semantic:
|
16
|
+
|
17
|
+
Root document
|
18
|
+
-------------
|
19
|
+
|
20
|
+
```yaml
|
21
|
+
---
|
22
|
+
# Image to base the build on
|
23
|
+
#
|
24
|
+
# required
|
25
|
+
# type: string
|
26
|
+
from: 'ubuntu'
|
27
|
+
|
28
|
+
# A step executed as root. See the Step definition.
|
29
|
+
as_root: {}
|
30
|
+
|
31
|
+
# If set to true, inject the invoker's SSH key into the image.
|
32
|
+
# This is used for shared github access for example.
|
33
|
+
#
|
34
|
+
# type: boolean
|
35
|
+
use_ssh: no
|
36
|
+
|
37
|
+
# A step executed as the "cide" user. See the Step definition.
|
38
|
+
before: {}
|
39
|
+
|
40
|
+
# Environment variables set at runtime. See the ENV definition.
|
41
|
+
env: {}
|
42
|
+
|
43
|
+
# Selects a file or directory to export. When set and cide is invoked with
|
44
|
+
# --export the same directory will be copied back into the project's root.
|
45
|
+
#
|
46
|
+
# type: string
|
47
|
+
export_dir:
|
48
|
+
|
49
|
+
# When defined, executes and attaches the defined linked containers to the
|
50
|
+
# CI runtime. See the Link definition.
|
51
|
+
links: []
|
52
|
+
|
53
|
+
# Determines what script to run to execute the tests. This is the main command
|
54
|
+
# that is used to run the CI.
|
55
|
+
#
|
56
|
+
# The script has to exit with an exit-status of zero to succeed.
|
57
|
+
#
|
58
|
+
# default: "script/ci"
|
59
|
+
# type: string
|
60
|
+
run: rake
|
61
|
+
```
|
62
|
+
|
63
|
+
Step definition
|
64
|
+
---------------
|
65
|
+
|
66
|
+
Here is the format for a step.
|
67
|
+
|
68
|
+
```yaml
|
69
|
+
# An array or hash of files to add
|
70
|
+
#
|
71
|
+
# In the hash form, the target is on the left-hand side and source on the
|
72
|
+
# right-hand side. If multiple values are passed on to the right then they are
|
73
|
+
# all added to the same folder.
|
74
|
+
#
|
75
|
+
# If a URL is provided in the source it is fetched during the build.
|
76
|
+
#
|
77
|
+
# Note that source files should either come from a URL or from a file within
|
78
|
+
# the project's directory.
|
79
|
+
add:
|
80
|
+
/etc/cacert.pem: http://curl.se/cacert.pem
|
81
|
+
/src:
|
82
|
+
- Gemfile
|
83
|
+
- Gemfile.lock
|
84
|
+
# or
|
85
|
+
add:
|
86
|
+
- one
|
87
|
+
- two
|
88
|
+
|
89
|
+
# Sets environment variables in this step (and next ones). See the ENV
|
90
|
+
# definition.
|
91
|
+
env: {}
|
92
|
+
|
93
|
+
# A list of commands to run in that stage
|
94
|
+
#
|
95
|
+
# type: string or array of string
|
96
|
+
run:
|
97
|
+
- bundle exec
|
98
|
+
- npm install
|
99
|
+
# or
|
100
|
+
run: go get ./...
|
101
|
+
```
|
102
|
+
|
103
|
+
If the step is defined as a string or array, those are interpreted as commands
|
104
|
+
to add to that step.
|
105
|
+
|
106
|
+
ENV definition
|
107
|
+
--------------
|
108
|
+
|
109
|
+
An array or hash of environment variables to load
|
110
|
+
|
111
|
+
In the hash for, the left-hand side is the key and the right-hand side the
|
112
|
+
value.
|
113
|
+
|
114
|
+
If a hash value is nil or the array form is used, the environment variables
|
115
|
+
are loaded from the cide invoker environment.
|
116
|
+
|
117
|
+
```yaml
|
118
|
+
env:
|
119
|
+
HOME: /cide
|
120
|
+
AWS_ACCESS_KEY_ID:
|
121
|
+
# or
|
122
|
+
env:
|
123
|
+
- AWS_ACCESS_SECRET_KEY
|
124
|
+
```
|
125
|
+
|
126
|
+
Link definition
|
127
|
+
---------------
|
128
|
+
|
129
|
+
A hash that describes a linked containers. Linked containers are automatically
|
130
|
+
started before executing the main command and destroyed after that.
|
131
|
+
|
132
|
+
```yaml
|
133
|
+
# Gives a name to the container to execute. This also determines the hostname
|
134
|
+
# the main container will be able to address this container with.
|
135
|
+
#
|
136
|
+
# If the name is missing, the name is extracted from the `from` key. For
|
137
|
+
# example if the `from` value is "foobar/redis:2.6" the name will be "redis"
|
138
|
+
#
|
139
|
+
# type: string
|
140
|
+
name: 'mysql'
|
141
|
+
|
142
|
+
# Name of the image to pull and base the container on.
|
143
|
+
#
|
144
|
+
# type: string
|
145
|
+
name: 'redis:2.6'
|
146
|
+
|
147
|
+
# Environment variables for that container. See the ENV definition.
|
148
|
+
env: {}
|
149
|
+
|
150
|
+
# Single command to execute the container with.
|
151
|
+
#
|
152
|
+
# type: string
|
153
|
+
run: 'redis-server'
|
154
|
+
```
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cide
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zimbatm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: activesupport
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -53,7 +53,21 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: md2man
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - ">="
|
@@ -81,7 +95,7 @@ dependencies:
|
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: rubocop
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - ">="
|
@@ -95,8 +109,9 @@ dependencies:
|
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0'
|
97
111
|
description: |
|
98
|
-
cide
|
99
|
-
|
112
|
+
cide is a command-line tool that runs tests in an isolated (docker)
|
113
|
+
environment. It allows to run the same command on the developer and CI
|
114
|
+
machines.
|
100
115
|
email:
|
101
116
|
- zimbatm@zimbatm.com
|
102
117
|
executables:
|
@@ -104,22 +119,25 @@ executables:
|
|
104
119
|
extensions: []
|
105
120
|
extra_rdoc_files: []
|
106
121
|
files:
|
107
|
-
- ".cide.yml"
|
108
122
|
- ".editorconfig"
|
109
123
|
- ".gitignore"
|
124
|
+
- ".nojekyll"
|
110
125
|
- ".rspec"
|
111
126
|
- ".rubocop.yml"
|
112
127
|
- ".travis.yml"
|
113
128
|
- CHANGELOG.md
|
114
129
|
- Gemfile
|
115
130
|
- Gemfile.lock
|
116
|
-
- LICENSE
|
131
|
+
- LICENSE.md
|
117
132
|
- README.md
|
118
133
|
- Rakefile
|
119
134
|
- bin/cide
|
120
135
|
- cide
|
121
136
|
- cide.gemspec
|
122
|
-
-
|
137
|
+
- cide.yml
|
138
|
+
- docs/cide.yml.md
|
139
|
+
- docs/sidebar.md
|
140
|
+
- index.html
|
123
141
|
- lib/cide/build.rb
|
124
142
|
- lib/cide/build/config.rb
|
125
143
|
- lib/cide/build/config_loader.rb
|
@@ -128,6 +146,12 @@ files:
|
|
128
146
|
- lib/cide/default_cide.yml
|
129
147
|
- lib/cide/docker.rb
|
130
148
|
- lib/cide/dockerfile_template.erb
|
149
|
+
- man/cide-build.1.md
|
150
|
+
- man/cide-clean.1.md
|
151
|
+
- man/cide-debug.1.md
|
152
|
+
- man/cide-init.1.md
|
153
|
+
- man/cide.1.md
|
154
|
+
- man/cide.yml.1.md
|
131
155
|
- spec/build_config_loader_spec.rb
|
132
156
|
- spec/spec_helper.rb
|
133
157
|
homepage: https://github.com/zimbatm/cide
|
@@ -150,10 +174,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
174
|
version: '0'
|
151
175
|
requirements: []
|
152
176
|
rubyforge_project:
|
153
|
-
rubygems_version: 2.4.
|
177
|
+
rubygems_version: 2.4.7
|
154
178
|
signing_key:
|
155
179
|
specification_version: 4
|
156
|
-
summary:
|
180
|
+
summary: Isolated test runner with Docker
|
157
181
|
test_files:
|
158
182
|
- spec/build_config_loader_spec.rb
|
159
183
|
- spec/spec_helper.rb
|