cide 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 448bec20bb2da007599668a8a7e25e1a1e2dbfb3
4
- data.tar.gz: de4f6cd1c52ba1f3d483b5768e9cae4d06a4f1b7
3
+ metadata.gz: 5592aec3c435216f8c55c34bffc949a8ac9974b5
4
+ data.tar.gz: 29018828dccd8df7788167c46c76331aba44fa8f
5
5
  SHA512:
6
- metadata.gz: e3a8e475acf9dd10ebbbc09035884322f74dd579ec725fece66b36b37be8afddd8ab80e5344419348337bddf124eed71dbbd58e8929523bb25a1a715704caeb4
7
- data.tar.gz: d3f82460d908ad40dc01ccfc54da9d14dd9c770df8aebca667ad2463b8697261bddfcf3a0eddc643d004c44ebf2aa82dcdbebd4993fc8542324c28e480a12da3
6
+ metadata.gz: 4adf57d0aec771685bf7b489523022d678321a23bef3faedf46ff1c1e2ad359bcb5edc02d4e5b6e180496201e3949150cb3943214db129ec7c1d71ae0240f476
7
+ data.tar.gz: 7e30ef9be4e887f2f7d80eda12c8072677ec66e8b4e2116dd1e6fb291334645f4191e7e0d0058114ec682d685bc31dac47969212d8759e9f8801bd962aeb8479
data/CHANGELOG.md CHANGED
@@ -1,4 +1,16 @@
1
1
 
2
+ 0.9.0 / 2016-02-26
3
+ ==================
4
+
5
+ * NEW: setting to inject versions in your package
6
+
7
+ ```yaml
8
+ package:
9
+ add_version:auto
10
+ ```
11
+
12
+ * NEW: add `cide package --build-id` to identify archives
13
+
2
14
  0.8.1 / 2016-02-15
3
15
  ==================
4
16
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cide (0.8.1)
4
+ cide (0.9.0)
5
5
  thor (~> 0.19)
6
6
  virtus (~> 1.0)
7
7
 
data/cide CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/bin/sh
2
- direnv exec `dirname $0` cide "$@"
2
+ direnv exec "$(dirname $0)" "$(dirname $0)/bin/cide" "$@"
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.8.1'
5
+ s.version = '0.9.0'
6
6
  s.authors = ['zimbatm']
7
7
  s.email = ['zimbatm@zimbatm.com']
8
8
  s.summary = 'Isolated test runner with Docker'
data/docs/cide.yml.md ADDED
@@ -0,0 +1 @@
1
+ ../man/cide.yml.1.md
data/docs/sidebar.md CHANGED
@@ -16,7 +16,7 @@
16
16
  - [man 1 cide](#man/cide.1)
17
17
  - [man 1 cide-clean](#man/cide-clean.1)
18
18
  - [man 1 cide-debug](#man/cide-debug.1)
19
- - [man 1 cide-exec](#man/cide-build.1)
19
+ - [man 1 cide-exec](#man/cide-exec.1)
20
20
  - [man 1 cide-init](#man/cide-init.1)
21
21
  - [man 1 cide-package](#man/cide-package.1)
22
22
  - [man 1 cide.yml](#man/cide.yml.1)
data/lib/cide/cli.rb CHANGED
@@ -123,8 +123,8 @@ module CIDE
123
123
  type: :boolean,
124
124
  default: true
125
125
 
126
- method_option 'set_version',
127
- desc: 'Tells cide the package version, otherwise extracted from git',
126
+ method_option 'build_id',
127
+ desc: 'Specifies the build id',
128
128
  default: nil
129
129
 
130
130
  # AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_REGION need to be passed
@@ -144,20 +144,30 @@ module CIDE
144
144
 
145
145
  FileUtils.rm_rf(build_root)
146
146
 
147
- version = options.set_version || (
147
+ build_id = options.build_id || (
148
+ timestamp = Time.now.strftime('%Y-%m-%d_%H%M%S')
148
149
  git_branch = `git symbolic-ref --short -q HEAD || echo unknown`.strip
149
150
  git_rev = `git rev-parse --short HEAD`.strip
150
- "#{git_branch}-#{git_rev}"
151
+ "#{timestamp}.#{git_branch}-#{git_rev}"
151
152
  )
152
153
 
153
- timestamp = Time.now.strftime('%Y-%m-%d_%H%M%S')
154
- tar_name = "#{options.package}.#{timestamp}.#{version}.tar.gz"
154
+ tar_name = "#{options.package}.#{build_id}.tar.gz"
155
155
  tar_path = File.join(build_root, tar_name)
156
156
 
157
157
  banner 'Config'
158
158
  config = ConfigFile.load(Dir.pwd)
159
159
  say_status :config, config.inspect
160
160
 
161
+ version_data =
162
+ case config.package && config.package.add_version
163
+ when 'sha'
164
+ `git rev-parse HEAD`.strip
165
+ when 'short_sha'
166
+ `git rev-parse --short HEAD`.strip
167
+ when 'auto'
168
+ build_id
169
+ end
170
+
161
171
  ## Build ##
162
172
  banner 'Build'
163
173
  builder = Builder.new(config)
@@ -185,6 +195,15 @@ module CIDE
185
195
  host_dir: host_export_dir,
186
196
  )
187
197
 
198
+ ## Set version ##
199
+ if version_data
200
+ version_file = File.join(host_export_dir, '.packager', 'version')
201
+ FileUtils.mkdir_p(File.dirname(version_file))
202
+ File.open(version_file, 'w') do |f|
203
+ f.puts version_data
204
+ end
205
+ end
206
+
188
207
  # Create archive
189
208
  puts "Package: #{tar_name}"
190
209
  system('tar', '-czf', tar_path, '-C', host_export_dir, '.')
@@ -46,6 +46,12 @@ module CIDE
46
46
  attr_accessor :id
47
47
  end
48
48
 
49
+ class PackageConfig
50
+ include Virtus.model
51
+ include NiceInspect
52
+ attribute :add_version, String, required: false
53
+ end
54
+
49
55
  include Virtus.model(strict: true)
50
56
  include NiceInspect
51
57
  attribute :from, String, default: 'ubuntu'
@@ -56,6 +62,7 @@ module CIDE
56
62
  attribute :export_dir, String, required: false
57
63
  attribute :links, Array[Link], default: []
58
64
  attribute :run, Array[String], default: ['script/ci']
65
+ attribute :package, PackageConfig, required: false
59
66
 
60
67
  attr_reader :warnings, :errors
61
68
 
@@ -41,6 +41,8 @@ module CIDE
41
41
  when 'run', 'command' then
42
42
  wanted_key(path, 'run', key)
43
43
  @config.run = expect_run(path, value)
44
+ when 'package' then
45
+ @config.package = maybe_package(path, value)
44
46
  else
45
47
  unknown_key(path)
46
48
  end
@@ -127,6 +129,45 @@ module CIDE
127
129
  step
128
130
  end
129
131
 
132
+ def maybe_package(path, value)
133
+ case value
134
+ when Hash then
135
+ load_package_config(path, value)
136
+ when nil then
137
+ nil
138
+ else
139
+ type_error(path, 'hash or nil', value)
140
+ nil
141
+ end
142
+ end
143
+
144
+ def load_package_config(path, data)
145
+ package = ConfigFile::PackageConfig.new
146
+ data.each_pair do |key, value|
147
+ key = key.to_s
148
+ path_ = path.append(key)
149
+ case key
150
+ when 'add_version' then
151
+ case value.to_s
152
+ when 'short_sha'
153
+ package.add_version = 'short_sha'
154
+ when 'sha'
155
+ package.add_version = 'sha'
156
+ when 'auto'
157
+ package.add_version = 'auto'
158
+ when nil, 'no', 'none'
159
+ # ignore
160
+ else
161
+ error('expected value to be one of ' \
162
+ "\"short_sha\", \"sha\" or \"auto\" in #{_path}")
163
+ end
164
+ else
165
+ unknown_key(path_)
166
+ end
167
+ end
168
+ package
169
+ end
170
+
130
171
  def expect_links(path, value)
131
172
  array = []
132
173
  case value
@@ -29,5 +29,9 @@ links:
29
29
  # Sets additional environment variables
30
30
  env: {}
31
31
 
32
+ # Packaging configuration
33
+ package:
34
+ # add_version: short_sha # sha or auto
35
+
32
36
  # Main script to run
33
37
  run: script/ci
data/man/cide.yml.1.md CHANGED
@@ -50,6 +50,10 @@ export_dir:
50
50
  # CI runtime. See the Link definition.
51
51
  links: []
52
52
 
53
+ # Setups the behaviour of the `cide package` command. See the Package
54
+ # definition.
55
+ package: {}
56
+
53
57
  # Determines what script to run to execute the tests. This is the main command
54
58
  # that is used to run the CI.
55
59
  #
@@ -152,3 +156,22 @@ env: {}
152
156
  # type: string
153
157
  run: 'redis-server'
154
158
  ```
159
+
160
+ Package definition
161
+ ------------------
162
+
163
+ A hash that changes the behavious of the `cide package command.
164
+
165
+
166
+ ```yaml
167
+ # When defined, will generate a .packager/version file before generating
168
+ # the archive.
169
+ #
170
+ # If the value is "sha" it use git's HEAD sha for the value.
171
+ #
172
+ # If the value is "short_sha" it will be the first 6 characteds of the sha.
173
+ #
174
+ # If the value is "auto" it will either be the default build ID or the one
175
+ # passed as a command-line argument.
176
+ add_version: auto
177
+ ```
data/script/build CHANGED
@@ -6,16 +6,10 @@ if [[ -z $1 ]]; then
6
6
  fi
7
7
 
8
8
  packager_bin() {
9
- local bin=$1
10
- local name=$(basename "$1")
11
- mkdir -p .packager/bin
12
- cat <<BIN > ".packager/bin/${name}"
13
- #!/bin/sh -e
14
- here=\$(dirname "\$(readlink -f "\$0")")
15
- target=\$(readlink -f "\$here/../../${bin}")
16
- exec "\$target" "\$@"
17
- BIN
18
- chmod +x ".packager/bin/${name}"
9
+ local bin=$1
10
+ local name=$(basename "$1")
11
+ mkdir -p .packager/bin
12
+ ln -s "../../$bin" ".packager/bin/$name"
19
13
  }
20
14
 
21
15
  TARGET=$1
@@ -19,6 +19,7 @@ describe "CIDE::ConfigFile::Loader" do
19
19
  "env" => {},
20
20
  "export_dir" => nil,
21
21
  "links" => [],
22
+ "package" => nil,
22
23
  "run" => ["script/ci"],
23
24
  }
24
25
 
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.8.1
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - zimbatm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-15 00:00:00.000000000 Z
11
+ date: 2016-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -179,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
179
  version: '0'
180
180
  requirements: []
181
181
  rubyforge_project:
182
- rubygems_version: 2.4.5.1
182
+ rubygems_version: 2.5.2
183
183
  signing_key:
184
184
  specification_version: 4
185
185
  summary: Isolated test runner with Docker
data/docs/cide.yml.md DELETED
@@ -1,154 +0,0 @@
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 exec` 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. Find images at http://index.docker.io/
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 form, 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
- from: '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
- ```