cide 0.0.2 → 0.0.3

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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +17 -1
  4. data/bin/cide +56 -60
  5. data/cide.gemspec +1 -1
  6. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b13407dc7b787e3fc64af27c04c31c184db72fe8
4
- data.tar.gz: e4cce2fd8ea61a204413009b4e57f47abcf0b005
3
+ metadata.gz: a3dd99e04fa0893686988a2e80fc1082d5dcab15
4
+ data.tar.gz: a2df7f906f19db7e98e47829d3864d05bf75cb0a
5
5
  SHA512:
6
- metadata.gz: 5e224c380f04d7906384d5276ca039cf1c4c0f552381e18e0c6b70fa1ecd0d8b23191b46e7ac261ce4308fe557b7d5cf940283b925478c4a3044364122016bad
7
- data.tar.gz: c3a60c370b9fc787d6c24531ded055d07f2aeb6f9a54a0776d5a8fae5d90b6856d5812ce6010409f8873b657d32cf3b0ff6f4994cf4f38dde93ef5b815992c9b
6
+ metadata.gz: 867b9f04b9ae236496e92bcc6b81eb8f434412de87591e7691ebf2ceb0c24c0e76f93274cda4abe191eee6838ea72598bfe2ed14a2e6db7009058f8581238ce7
7
+ data.tar.gz: 93b5c43787f8bca0ca068a1fe232fe7bf4891b2a314f09f31cd79b422706aabab9661ff47fa03e1e7408a0807f49a0c04fe60b9db45413a3bf69e84bd034a67e
data/CHANGELOG.md CHANGED
@@ -1,4 +1,11 @@
1
1
 
2
+ 0.0.3 / 2014-09-29
3
+ ==================
4
+
5
+ * Cleanup and fixes DATA usage
6
+ * Removes the GEM_HOME environment setting
7
+ * Installation instructions
8
+
2
9
  0.0.2 / 2014-09-15
3
10
  ==================
4
11
 
data/README.md CHANGED
@@ -39,6 +39,23 @@ Limitations
39
39
  A temporary Dockerfile has to be created in the project's root because docker
40
40
  doesn't allow referencing files outside of the directory (even with a symlink)
41
41
 
42
+ Installation
43
+ ------------
44
+
45
+ Install docker: https://docs.docker.com/installation/#installation
46
+
47
+ ```
48
+ gem install cide
49
+ ```
50
+
51
+ OSX docker install:
52
+ ```
53
+ brew install boot2docker
54
+ boot2docker init
55
+ boot2docker up
56
+ # cide auto-detects boot2docker on OSX
57
+ ```
58
+
42
59
  TODO
43
60
  ----
44
61
 
@@ -50,4 +67,3 @@ TODO
50
67
  * `cide gc` to cleanup old cide builds
51
68
  * travis.yml compatiblity with docker containers that map to languages
52
69
  * add ways of exporting artifacts
53
- * ENV GEM_HOME is container specific
data/bin/cide CHANGED
@@ -7,9 +7,33 @@ require "erb"
7
7
  require "optparse"
8
8
  require "yaml"
9
9
 
10
+ DOCKERFILE = 'Dockerfile'
11
+ DOCKERFILE_TEMPLATE = <<EOF
12
+ FROM <%= image %>
13
+ RUN useradd -m -U -d /cide cide
14
+
15
+ # Install system build dependencies here
16
+
17
+ <% as_root.each do |cmd| %>
18
+ RUN <%= cmd %>
19
+ <% end %>
20
+
21
+ # Add project data
22
+
23
+ ADD . /cide/src
24
+ RUN chown -R cide:cide /cide
25
+
26
+ # Switch to cide user
27
+
28
+ USER cide
29
+
30
+ WORKDIR /cide/src
31
+ ENV HOME /cide
32
+ EOF
33
+
10
34
  module Fmt; extend self
11
35
  def fmt(obj)
12
- dump_obj(obj)
36
+ dump_obj obj
13
37
  end
14
38
 
15
39
  protected
@@ -25,13 +49,13 @@ module Fmt; extend self
25
49
  obj.index(/['"\s\{\}\[\]\=]/) ? obj.inspect : obj
26
50
  end
27
51
  rescue
28
- dump($!.to_s)
52
+ dump $!.to_s
29
53
  end
30
54
 
31
55
  def dump_obj(obj)
32
56
  obj.map do |(k, v)|
33
57
  "#{k}=#{dump v}"
34
- end.join(' ')
58
+ end.join ' '
35
59
  end
36
60
  end
37
61
 
@@ -39,27 +63,6 @@ def log(opts={})
39
63
  $stdout.puts "cide: #{Fmt.fmt opts}"
40
64
  end
41
65
 
42
- def struct(opts={})
43
- Class.new(Struct.new(*opts.keys)) do
44
- def set(name)
45
- method("#{name}=")
46
- end
47
-
48
- def to_dockerfile
49
- ERB.new(DATA.read).result(binding)
50
- end
51
-
52
- def merge!(opts={})
53
- opts.each_pair{|k,v| self[k] = v }
54
- end
55
- end.new(*opts.values)
56
- end
57
-
58
- # Replaces invalid docker tag characters by underscores
59
- def id(str)
60
- "#{str}".downcase.gsub(/[^a-z0-9\-_.]/, '_')
61
- end
62
-
63
66
  def sh(*args)
64
67
  log cmd: args
65
68
  unless system(*args.map(&:to_s))
@@ -71,20 +74,36 @@ def docker(*args)
71
74
  sh "docker", *args
72
75
  end
73
76
 
77
+ def struct(opts={}, &block)
78
+ Class.new(Struct.new(*opts.keys), &block).new(*opts.values)
79
+ end
80
+
74
81
  config = struct(
75
82
  image: "ubuntu",
76
- tag: id(File.basename(Dir.pwd)),
83
+ tag: File.basename(Dir.pwd),
77
84
  as_root: [],
78
85
  command: 'script/ci',
79
- )
86
+ ) do
87
+ def set(name)
88
+ method "#{name}="
89
+ end
80
90
 
81
- CIDEFILE = '.cide.yml'
82
- if !File.exists?(CIDEFILE)
83
- log reason: "not found", file: CIDEFILE
84
- else
85
- config.merge! YAML.load_file(CIDEFILE)
91
+ def tag=(str)
92
+ # Replaces invalid docker tag characters by underscores
93
+ super "#{str}".downcase.gsub(/[^a-z0-9\-_.]/, '_')
94
+ end
95
+
96
+ def to_dockerfile
97
+ ERB.new(DOCKERFILE_TEMPLATE).result(binding)
98
+ end
99
+
100
+ def merge!(opts={})
101
+ opts.each_pair{|k,v| self[k] = v }
102
+ end
86
103
  end
87
104
 
105
+ config.merge! YAML.load_file('.cide.yml')
106
+
88
107
  OptionParser.new do |opts|
89
108
  opts.on('-i', '--image IMAGE', "Select the source image (#{config.image})", &config.set(:image))
90
109
  opts.on('-t', '--tag TAG', "Name of the build (#{config.tag})", &config.set(:tag))
@@ -95,15 +114,13 @@ OptionParser.new do |opts|
95
114
  end
96
115
  end.parse!
97
116
 
98
- config.tag = id("cide-#{config.tag}")
99
-
100
117
  log config: config.to_h
101
118
 
102
- if !File.exist?('Dockerfile')
119
+ if !File.exist?(DOCKERFILE)
103
120
  log msg: "Creating temporary Dockerfile"
104
- File.write('Dockerfile', config.to_dockerfile)
121
+ File.write(DOCKERFILE, config.to_dockerfile)
105
122
  at_exit do
106
- File.unlink('Dockerfile')
123
+ File.unlink(DOCKERFILE)
107
124
  end
108
125
  else
109
126
  log msg: "Using existing Dockerfile"
@@ -119,28 +136,7 @@ if `uname`.strip == "Darwin" && !ENV['DOCKER_HOST']
119
136
  ENV['DOCKER_HOST'] = `boot2docker socket 2>/dev/null`.strip
120
137
  end
121
138
 
122
- docker :build, '-t', config.tag, '.'
123
- docker :run, '--rm', '-t', config.tag, "sh", "-c", config.command
124
-
125
- __END__
126
- FROM <%= image %>
127
- RUN useradd -m -U -d /cide cide
128
-
129
- # Install system build dependencies here
130
-
131
- <% as_root.each do |cmd| %>
132
- RUN <%= cmd %>
133
- <% end %>
134
-
135
- # Add project data
139
+ tag = "cide-#{config.tag}"
136
140
 
137
- ADD . /cide/src
138
- RUN chown -R cide:cide /cide
139
-
140
- # Switch to cide user
141
-
142
- USER cide
143
-
144
- WORKDIR /cide/src
145
- ENV HOME /cide
146
- ENV GEM_HOME /cide/.gem
141
+ docker :build, '-t', tag, '.'
142
+ docker :run, '--rm', '-t', tag, "sh", "-c", config.command
data/cide.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'cide'
5
- s.version = '0.0.2'
5
+ s.version = '0.0.3'
6
6
  s.authors = ['zimbatm']
7
7
  s.email = ['zimbatm@zimbatm.com']
8
8
  s.summary = 'CI docker runner'
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.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - zimbatm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-15 00:00:00.000000000 Z
11
+ date: 2014-09-29 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  cide makes it easy to reproduce CI builds on the developer computer by