Package not found. Please check the package name and try again.
manifest-builder 0.6.2 → 0.6.4
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/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'
|