cide 0.8.1 → 0.9.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 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
- ```