manifest-builder 0.6.2 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +16 -12
- data/lib/cicd/builder/manifest.rb +1 -0
- data/lib/cicd/builder/manifest/mixlib/build.rb +45 -41
- data/lib/cicd/builder/manifest/mixlib/repo.rb +1 -1
- data/lib/cicd/builder/manifest/mixlib/repo/artifactory.rb +106 -42
- data/lib/cicd/builder/manifest/version.rb +1 -1
- data/manifest-builder.gemspec +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f8692350e883642c61400675d5b04780b553a5b
|
4
|
+
data.tar.gz: 61d48a5874ff2b1c8aed3bd1c4accda5a1d6032c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06cba7f7f72e817a3343664c3c8cf9dd9218a0006d71a0b35e6722c09685771bc839f48ab5c9377df8f898b2ada4acb344531fd9ffc6648d69d08f09deb015e2
|
7
|
+
data.tar.gz: 32ecf4772c0abb9180b9f965a6cbec2d481786cd6d55fdc8dc60e3f08c06d0444d4815f4809347d5913061c769d93573982f1d66543b3801c2467ecccc89e20c
|
data/Gemfile.lock
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
manifest-builder (0.6.
|
4
|
+
manifest-builder (0.6.4)
|
5
5
|
archive-tar-minitar (= 0.5.2)
|
6
|
-
chefrepo-builder (>= 0.9.
|
6
|
+
chefrepo-builder (>= 0.9.34, < 1.1)
|
7
7
|
json (>= 1.8.1, < 1.9)
|
8
8
|
s3etag (>= 0.0.1, < 0.1.0)
|
9
9
|
|
10
10
|
PATH
|
11
11
|
remote: ../chefrepo-builder
|
12
12
|
specs:
|
13
|
-
chefrepo-builder (0.9.
|
14
|
-
cicd-builder (>= 0.9.
|
13
|
+
chefrepo-builder (0.9.34)
|
14
|
+
cicd-builder (>= 0.9.50, < 1.1)
|
15
15
|
json (= 1.8.1)
|
16
16
|
|
17
17
|
PATH
|
18
18
|
remote: ../cicd-builder
|
19
19
|
specs:
|
20
|
-
cicd-builder (0.9.
|
20
|
+
cicd-builder (0.9.50)
|
21
21
|
artifactory (>= 2.2.1, < 2.3)
|
22
22
|
awesome_print (>= 1.6, < 2.0)
|
23
23
|
aws-sdk (>= 2.0, < 2.1)
|
@@ -26,6 +26,8 @@ PATH
|
|
26
26
|
inifile (>= 3.0.0, < 3.1)
|
27
27
|
json (>= 1.8.1, < 1.9)
|
28
28
|
logging (>= 1.8.2, < 1.9)
|
29
|
+
parallel (>= 1.4.1, < 1.5)
|
30
|
+
ruby-progressbar (>= 1.7.5, < 2)
|
29
31
|
semverse (>= 1.2.1, < 1.3)
|
30
32
|
yajl-ruby (>= 1.2.1, < 1.3)
|
31
33
|
|
@@ -35,14 +37,14 @@ GEM
|
|
35
37
|
archive-tar-minitar (0.5.2)
|
36
38
|
artifactory (2.2.1)
|
37
39
|
awesome_print (1.6.1)
|
38
|
-
aws-sdk (2.0.
|
39
|
-
aws-sdk-resources (= 2.0.
|
40
|
-
aws-sdk-core (2.0.
|
40
|
+
aws-sdk (2.0.41)
|
41
|
+
aws-sdk-resources (= 2.0.41)
|
42
|
+
aws-sdk-core (2.0.41)
|
41
43
|
builder (~> 3.0)
|
42
44
|
jmespath (~> 1.0)
|
43
45
|
multi_json (~> 1.0)
|
44
|
-
aws-sdk-resources (2.0.
|
45
|
-
aws-sdk-core (= 2.0.
|
46
|
+
aws-sdk-resources (2.0.41)
|
47
|
+
aws-sdk-core (= 2.0.41)
|
46
48
|
builder (3.2.2)
|
47
49
|
chef (12.0.3)
|
48
50
|
chef-zero (~> 3.2)
|
@@ -95,7 +97,7 @@ GEM
|
|
95
97
|
little-plugger (>= 1.1.3)
|
96
98
|
multi_json (>= 1.8.4)
|
97
99
|
method_source (0.8.2)
|
98
|
-
mime-types (2.
|
100
|
+
mime-types (2.5)
|
99
101
|
mixlib-authentication (1.3.0)
|
100
102
|
mixlib-log
|
101
103
|
mixlib-cli (1.5.0)
|
@@ -109,7 +111,7 @@ GEM
|
|
109
111
|
net-ssh-multi (1.2.1)
|
110
112
|
net-ssh (>= 2.6.5)
|
111
113
|
net-ssh-gateway (>= 1.2.0)
|
112
|
-
ohai (8.
|
114
|
+
ohai (8.3.0)
|
113
115
|
ffi (~> 1.9)
|
114
116
|
ffi-yajl (>= 1.1, < 3.0)
|
115
117
|
ipaddress
|
@@ -121,6 +123,7 @@ GEM
|
|
121
123
|
rake (~> 10.1)
|
122
124
|
systemu (~> 2.6.4)
|
123
125
|
wmi-lite (~> 1.0)
|
126
|
+
parallel (1.4.1)
|
124
127
|
plist (3.1.0)
|
125
128
|
pry (0.10.1)
|
126
129
|
coderay (~> 1.1.0)
|
@@ -136,6 +139,7 @@ GEM
|
|
136
139
|
rspec-expectations (2.99.2)
|
137
140
|
diff-lcs (>= 1.1.3, < 2.0)
|
138
141
|
rspec-mocks (2.99.3)
|
142
|
+
ruby-progressbar (1.7.5)
|
139
143
|
rubygems-tasks (0.2.4)
|
140
144
|
s3etag (0.0.1)
|
141
145
|
semverse (1.2.1)
|
@@ -9,6 +9,7 @@ module CiCd
|
|
9
9
|
# ---------------------------------------------------------------------------------------------------------------
|
10
10
|
# noinspection RubyHashKeysTypesInspection
|
11
11
|
def prepareBuild()
|
12
|
+
@logger.step CLASS+'::'+__method__.to_s
|
12
13
|
ret = super
|
13
14
|
if ret == 0
|
14
15
|
@vars[:artifacts] = []
|
@@ -157,33 +158,22 @@ module CiCd
|
|
157
158
|
|
158
159
|
# ---------------------------------------------------------------------------------------------------------------
|
159
160
|
def packageBuild()
|
160
|
-
@logger.
|
161
|
+
@logger.info CLASS+'::'+__method__.to_s
|
161
162
|
if isSameDirectory(Dir.pwd, ENV['WORKSPACE'])
|
162
163
|
if @vars.has_key?(:components) and not @vars[:components].empty?
|
163
164
|
@vars[:return_code] = 0
|
164
165
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
@
|
169
|
-
|
166
|
+
getRepoInstance('S3')
|
167
|
+
if 0 == @vars[:return_code]
|
168
|
+
lines = []
|
169
|
+
@vars[:artifacts] = []
|
170
|
+
# Deal with all artifacts of each component
|
171
|
+
@vars[:components].each { |comp|
|
172
|
+
processComponent(comp, lines)
|
173
|
+
}
|
170
174
|
if @vars[:return_code] == 0
|
171
|
-
lines
|
172
|
-
@vars[:artifacts] = []
|
173
|
-
# Deal with all artifacts of each component
|
174
|
-
@vars[:components].each { |comp|
|
175
|
-
processComponent(comp, lines)
|
176
|
-
}
|
177
|
-
if @vars[:return_code] == 0
|
178
|
-
cleanupAfterPackaging(lines)
|
179
|
-
end
|
180
|
-
|
181
|
-
else
|
182
|
-
@logger.fatal "S3 repo error: Bucket #{ENV['AWS_S3_BUCKET']}"
|
175
|
+
cleanupAfterPackaging(lines)
|
183
176
|
end
|
184
|
-
else
|
185
|
-
@logger.error "CiCd::Builder::Repo::#{type} is not a valid repo class"
|
186
|
-
@vars[:return_code] = Errors::BUILDER_REPO_TYPE
|
187
177
|
end
|
188
178
|
else
|
189
179
|
@logger.error 'No components found during preparation?'
|
@@ -217,7 +207,7 @@ module CiCd
|
|
217
207
|
end
|
218
208
|
end
|
219
209
|
|
220
|
-
|
210
|
+
protected
|
221
211
|
|
222
212
|
# ---------------------------------------------------------------------------------------------------------------
|
223
213
|
def processComponent(comp, lines)
|
@@ -227,7 +217,7 @@ module CiCd
|
|
227
217
|
require 'uri'
|
228
218
|
require 'digest'
|
229
219
|
begin
|
230
|
-
key,
|
220
|
+
key, bucket, objects = getObjects(artifact, path,cdata)
|
231
221
|
local_dir = File.join(@vars[:local_dirs]['artifacts'], cname, '')
|
232
222
|
Dir.mkdir(local_dir, 0700) unless File.directory?(local_dir)
|
233
223
|
artifacts = []
|
@@ -244,7 +234,7 @@ module CiCd
|
|
244
234
|
etag = object.etag.gsub(%r/['"]/, '')
|
245
235
|
download = shouldDownload?(etag, local, object)
|
246
236
|
if download
|
247
|
-
changed = doDownload(etag, local, object)
|
237
|
+
changed = doDownload(etag, local, object, bucket)
|
248
238
|
else
|
249
239
|
@logger.info "\t\tunchanged"
|
250
240
|
end
|
@@ -261,7 +251,7 @@ module CiCd
|
|
261
251
|
artifacts.each do |local|
|
262
252
|
base = File.basename(local)
|
263
253
|
if sha256[base].is_a?(String)
|
264
|
-
msg = "Artifact checksum is invalid or manifest is incorrect. Artifact: s3://#{
|
254
|
+
msg = "Artifact checksum is invalid or manifest is incorrect. Artifact: s3://#{bucket}/#{key}#{artifact}, SHA256: Manifest=#{cdata[:sha256]}, Actual=#{sha256[base]}"
|
265
255
|
if ENV['ENFORCE_CHECKSUMS'] and ENV['ENFORCE_CHECKSUMS'].downcase =~ %r/^(yes|on|set|1|enable|active|enforced?)$/
|
266
256
|
@logger.fatal msg
|
267
257
|
@vars[:return_code] = Errors::ARTIFACT_CHECKSUM_BAD
|
@@ -280,12 +270,14 @@ module CiCd
|
|
280
270
|
build: build,
|
281
271
|
version: version,
|
282
272
|
file: local,
|
283
|
-
sha256: (sha256.keys.include?(base)) ? (sha256[base].is_a?(TrueClass) ? cdata[:sha256] : sha256[base]) : Digest::SHA256.file(local).hexdigest
|
273
|
+
sha256: (sha256.keys.include?(base)) ? (sha256[base].is_a?(TrueClass) ? cdata[:sha256] : sha256[base]) : Digest::SHA256.file(local).hexdigest,
|
274
|
+
file_name: cdata[:file_name],
|
275
|
+
file_ext: cdata[:file_ext],
|
284
276
|
})
|
285
277
|
end
|
286
278
|
end
|
287
279
|
else
|
288
|
-
@logger.fatal "Artifact not found: s3://#{
|
280
|
+
@logger.fatal "Artifact not found: s3://#{bucket}/#{key}#{artifact}"
|
289
281
|
@vars[:return_code] = Errors::ARTIFACT_NOT_FOUND
|
290
282
|
end
|
291
283
|
rescue Exception => e
|
@@ -295,26 +287,38 @@ module CiCd
|
|
295
287
|
end
|
296
288
|
|
297
289
|
# ---------------------------------------------------------------------------------------------------------------
|
298
|
-
def getObjects(artifact, path)
|
290
|
+
def getObjects(artifact, path, cdata)
|
299
291
|
parts = URI(path).path.gsub(%r'^#{File::SEPARATOR}', '').split(File::SEPARATOR)
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
292
|
+
bucket,prefix = if cdata[:s3_bucket] and cdata[:s3_key]
|
293
|
+
[cdata[:s3_bucket],File.join(File.dirname(cdata[:s3_key]),'')]
|
294
|
+
else
|
295
|
+
name = parts.shift
|
296
|
+
[name,File.join(parts, '')]
|
297
|
+
end
|
298
|
+
@logger.info "S3://#{bucket}:#{prefix} URL: #{path} #{artifact}"
|
304
299
|
objects = []
|
305
|
-
|
306
|
-
|
307
|
-
|
300
|
+
@s3 = @repo.getS3() #bucket_client = getBucket(bucket)
|
301
|
+
bucket_objects = @s3.list_objects(bucket: bucket, prefix: prefix)
|
302
|
+
if bucket_objects
|
303
|
+
bucket_objects = bucket_objects[:contents]
|
304
|
+
bucket_objects.each do |object|
|
305
|
+
if artifact.empty? or (not artifact.empty? and object.key =~ %r'#{prefix}#{artifact}')
|
306
|
+
objects << object
|
307
|
+
end
|
308
308
|
end
|
309
309
|
end
|
310
|
-
@logger.debug "S3://#{
|
311
|
-
return
|
310
|
+
@logger.debug "S3://#{bucket}:#{prefix} has #{objects.size} objects"
|
311
|
+
return prefix, bucket, objects
|
312
312
|
end
|
313
313
|
|
314
314
|
# ---------------------------------------------------------------------------------------------------------------
|
315
|
-
def doDownload(etag, local, object)
|
315
|
+
def doDownload(etag, local, object, bucket)
|
316
316
|
@logger.info "\t\tdownload #{object.size} bytes"
|
317
|
-
|
317
|
+
begin
|
318
|
+
response = object.get(:response_target => local)
|
319
|
+
rescue NoMethodError
|
320
|
+
response = @s3.get_object(bucket: bucket, key: object.key, response_target: local)
|
321
|
+
end
|
318
322
|
File.utime(response.last_modified, response.last_modified, local)
|
319
323
|
@logger.info "\t\tdone"
|
320
324
|
check = calcLocalETag(etag, local)
|
@@ -374,7 +378,7 @@ module CiCd
|
|
374
378
|
cname,cdata = comp
|
375
379
|
if cdata[:url]
|
376
380
|
path, artifact = File.split(cdata[:url])
|
377
|
-
version, build = getVersionBuild(path, artifact, comp)
|
381
|
+
version, build = (cdata[:version] and cdata[:build]) ? [cdata[:version], cdata[:build]] : getVersionBuild(path, artifact, comp)
|
378
382
|
elsif cdata[:base_url]
|
379
383
|
artifact = ''
|
380
384
|
if cdata[:build].nil?
|
@@ -389,7 +393,7 @@ module CiCd
|
|
389
393
|
else
|
390
394
|
path = ''
|
391
395
|
artifact = ''
|
392
|
-
version, build = getVersionBuild(path, artifact, comp)
|
396
|
+
version, build = (cdata[:version] and cdata[:build]) ? [cdata[:version], cdata[:build]] : getVersionBuild(path, artifact, comp)
|
393
397
|
end
|
394
398
|
return artifact, path, version, build
|
395
399
|
end
|
@@ -14,7 +14,7 @@ module CiCd
|
|
14
14
|
|
15
15
|
# ---------------------------------------------------------------------------------------------------------------
|
16
16
|
def getRepoClass(type = nil)
|
17
|
-
@logger.
|
17
|
+
@logger.step CLASS+'::'+__method__.to_s
|
18
18
|
if type.nil?
|
19
19
|
type ||= 'S3'
|
20
20
|
if ENV.has_key?('REPO_TYPE')
|
@@ -18,16 +18,15 @@ module CiCd
|
|
18
18
|
def uploadToRepo(artifacts)
|
19
19
|
@manifest = {}
|
20
20
|
super
|
21
|
-
|
22
|
-
# Preserve the manifest (maybeUploadArtifactoryObject will add everything we upload to the instance var)
|
23
|
-
manifest = @manifest.dup
|
24
|
-
# Create a manifest for each product and store it.
|
25
|
-
createProductManifests(manifest)
|
26
|
-
# Get a super manifest of all products and store as learning-manifest
|
27
|
-
createSuperManifest(manifest) # -#{@vars[:variant]}
|
28
|
-
@manifest = manifest
|
29
|
-
end
|
21
|
+
handleManifests()
|
30
22
|
# If we are asked to produce a PROJECTS_FILE then we do that from the manifest and components.
|
23
|
+
handleProjectsFile()
|
24
|
+
cleanupTempFiles()
|
25
|
+
@vars[:return_code]
|
26
|
+
end
|
27
|
+
|
28
|
+
# ---------------------------------------------------------------------------------------------------------------
|
29
|
+
def handleProjectsFile
|
31
30
|
unless ENV['PROJECTS_FILE'].nil?
|
32
31
|
if @vars[:return_code] == 0
|
33
32
|
if File.directory?(File.realdirpath(File.dirname(ENV['PROJECTS_FILE'])))
|
@@ -38,19 +37,19 @@ module CiCd
|
|
38
37
|
end
|
39
38
|
end
|
40
39
|
end
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
40
|
+
end
|
41
|
+
|
42
|
+
# ---------------------------------------------------------------------------------------------------------------
|
43
|
+
def handleManifests
|
44
|
+
if @vars[:return_code] == 0
|
45
|
+
# Preserve the manifest (maybeUploadArtifactoryObject will add everything we upload to the instance var)
|
46
|
+
manifest = @manifest.dup
|
47
|
+
# Create a manifest for each product and store it.
|
48
|
+
createProductManifests(manifest)
|
49
|
+
# Get a super manifest of all products and store as learning-manifest
|
50
|
+
createSuperManifest(manifest) # -#{@vars[:variant]}
|
51
|
+
@manifest = manifest
|
52
52
|
end
|
53
|
-
@vars[:return_code]
|
54
53
|
end
|
55
54
|
|
56
55
|
# ---------------------------------------------------------------------------------------------------------------
|
@@ -191,12 +190,16 @@ module CiCd
|
|
191
190
|
end
|
192
191
|
|
193
192
|
def createSuperManifest(manifest)
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
193
|
+
assemble = lambda{|mani|
|
194
|
+
manifest_data = ''
|
195
|
+
mani.each do |_, man|
|
196
|
+
man.each do |k, v|
|
197
|
+
manifest_data += "#{k}=#{v}\n"
|
198
|
+
end
|
198
199
|
end
|
199
|
-
|
200
|
+
manifest_data
|
201
|
+
}
|
202
|
+
manifest_data = assemble.call(manifest)
|
200
203
|
amn = artifactory_manifest_name # Just using a local iso invoking method_missing repeatedly ... ;)
|
201
204
|
data = {module: amn, data: manifest_data, version: @vars[:build_ver], build: @vars[:build_num], properties: @properties_matrix}
|
202
205
|
# tempArtifactFile(amn, data)
|
@@ -215,18 +218,22 @@ module CiCd
|
|
215
218
|
key: amn,
|
216
219
|
data: data.dup,
|
217
220
|
}
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
+
manifest = maybeUpdateManifest(data, manifest, assemble, amn)
|
222
|
+
if 0 == @vars[:return_code]
|
223
|
+
maybeUploadArtifactoryObject(data: data, artifact_module: amn, artifact_version: data[:version] || @vars[:version], file_name: '', file_ext: 'properties')
|
224
|
+
end
|
221
225
|
end
|
222
|
-
|
223
226
|
# ---------------------------------------------------------------------------------------------------------------
|
224
227
|
def createProductManifests(manifest)
|
225
228
|
manifest.dup.each do |mod, man|
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
229
|
+
assemble = lambda{ |mani|
|
230
|
+
manifest_data = ''
|
231
|
+
mani.each do |k, v|
|
232
|
+
manifest_data += "#{k}=#{v}\n"
|
233
|
+
end
|
234
|
+
manifest_data
|
235
|
+
}
|
236
|
+
manifest_data = assemble.call(man)
|
230
237
|
data = {
|
231
238
|
name: "#{mod}-manifest",
|
232
239
|
module: "#{mod}-manifest",
|
@@ -236,7 +243,6 @@ module CiCd
|
|
236
243
|
build: @vars[:build_num],
|
237
244
|
properties: @properties_matrix
|
238
245
|
}
|
239
|
-
# tempArtifactFile("#{mod}-manifest", data)
|
240
246
|
|
241
247
|
data[:file] = Dir::Tmpname.create("#{mod}-manifest") do |tmpnam, n, opts|
|
242
248
|
mode = File::RDWR|File::CREAT|File::EXCL
|
@@ -248,14 +254,72 @@ module CiCd
|
|
248
254
|
data[:sha1] = Digest::SHA1.file(data[:file]).hexdigest
|
249
255
|
data[:md5] = Digest::MD5.file(data[:file]).hexdigest
|
250
256
|
@vars[:artifacts] << {
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
257
|
+
key: "#{mod}-manifest",
|
258
|
+
data: data.dup,
|
259
|
+
}
|
260
|
+
|
261
|
+
maybeUpdateManifest(data, man, assemble)
|
262
|
+
if 0 == @vars[:return_code]
|
263
|
+
maybeUploadArtifactoryObject(data: data, artifact_module: data[:name], artifact_version: data[:version] || @vars[:version], file_name: '', file_ext: 'properties') # -#{@vars[:variant]}
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
256
267
|
|
257
|
-
|
268
|
+
# ---------------------------------------------------------------------------------------------------------------
|
269
|
+
def maybeUpdateManifest(data, man, assemble, supman=nil)
|
270
|
+
artifact_name = getArtifactName(data[:name], '', data[:version], 'properties')
|
271
|
+
artifact_path = getArtifactPath(data[:module], data[:version], data[:name])
|
272
|
+
objects = maybeArtifactoryObject(data[:module], @vars[:build_ver], false)
|
273
|
+
unless objects.nil? or objects.size == 0
|
274
|
+
@logger.info "#{artifact_name}(#{artifactory_endpoint()}/#{artifactory_repo()}/#{artifact_path}) exists - #{objects.size} results"
|
275
|
+
@logger.info "\t#{objects.map { |o| o.attributes[:uri] }.join("\n\t")}"
|
276
|
+
if objects.size > 1
|
277
|
+
@logger.error "Matched more than one artifact: #{artifact_path}/#{artifact_name}"
|
278
|
+
@vars[:return_code] = Errors::ARTIFACT_MULTI_MATCH
|
279
|
+
else
|
280
|
+
# Download over our temp file
|
281
|
+
local_dir, local_fil = File.split(data[:file])
|
282
|
+
@logger.info "Download #{data[:name]} to #{local_fil}"
|
283
|
+
@arti_download_artifact = false
|
284
|
+
3.times{
|
285
|
+
monitor(30){
|
286
|
+
IO.write(data[:file], '')
|
287
|
+
objects[0].download(local_dir, filename: local_fil)
|
288
|
+
@arti_download_artifact = true
|
289
|
+
}
|
290
|
+
break if @arti_download_artifact
|
291
|
+
}
|
292
|
+
# Add our manifest
|
293
|
+
data[:data] = IO.read(data[:file])
|
294
|
+
raise "Failed to download #{data[:name]}" if data[:data] == '' or not @arti_download_artifact
|
295
|
+
manifest = {}
|
296
|
+
data[:data].split(/\n+/).each do |line|
|
297
|
+
k, v = line.chomp.split(/=/)
|
298
|
+
manifest[k] = v #unless man.has_key?(k)
|
299
|
+
end
|
300
|
+
man = if supman
|
301
|
+
manifest.delete(supman)
|
302
|
+
man.each do |_,m|
|
303
|
+
m.each do |k,v|
|
304
|
+
manifest[k] = v
|
305
|
+
end
|
306
|
+
end
|
307
|
+
{ supman => manifest }
|
308
|
+
else
|
309
|
+
man.each do |k,v|
|
310
|
+
manifest[k] = v #unless man.has_key?(k)
|
311
|
+
end
|
312
|
+
manifest
|
313
|
+
end
|
314
|
+
data[:data] = assemble.call(man)
|
315
|
+
# Save the new file
|
316
|
+
IO.write(data[:file], data[:data])
|
317
|
+
data[:temp] = false
|
318
|
+
data[:sha1] = Digest::SHA1.file(data[:file]).hexdigest
|
319
|
+
data[:md5] = Digest::MD5.file(data[:file]).hexdigest
|
320
|
+
end
|
258
321
|
end
|
322
|
+
man
|
259
323
|
end
|
260
324
|
|
261
325
|
# ---------------------------------------------------------------------------------------------------------------
|
@@ -284,7 +348,7 @@ module CiCd
|
|
284
348
|
@vars[:return_code]
|
285
349
|
end
|
286
350
|
|
287
|
-
|
351
|
+
protected :createProductManifests, :createProjectsFile, :createSuperManifest
|
288
352
|
end
|
289
353
|
end
|
290
354
|
end
|
data/manifest-builder.gemspec
CHANGED
@@ -17,8 +17,8 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ['lib']
|
19
19
|
|
20
|
-
# gem.add_dependency 'cicd-builder', '>= 0.9.
|
21
|
-
gem.add_dependency 'chefrepo-builder', '>= 0.9.
|
20
|
+
# gem.add_dependency 'cicd-builder', '>= 0.9.50', '< 1.1'
|
21
|
+
gem.add_dependency 'chefrepo-builder', '>= 0.9.34', '< 1.1'
|
22
22
|
gem.add_dependency 'json', '>= 1.8.1', '< 1.9'
|
23
23
|
gem.add_dependency 's3etag', '>= 0.0.1', '< 0.1.0'
|
24
24
|
gem.add_dependency 'archive-tar-minitar', '= 0.5.2'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: manifest-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christo De Lange
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chefrepo-builder
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.9.
|
19
|
+
version: 0.9.34
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '1.1'
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.9.
|
29
|
+
version: 0.9.34
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '1.1'
|