cicd-builder 0.9.32 → 0.9.33

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: 3d5b439d8599dc11343c4a867ba4395425a5bc2f
4
- data.tar.gz: c179de346efe4964da6bfa8a88f11eb03fa52fad
3
+ metadata.gz: 75d36cb9025cf66cd01e307a37d1b8459a97a5cf
4
+ data.tar.gz: 9d82387d840c35215a7cd37102e4e84908ec78fc
5
5
  SHA512:
6
- metadata.gz: 48e143c0e1d50ab196f574b0fd7981b53dfc95d6ad7f4bcb9df48ce591b706c3c13de2ae19e80609b4944d002977091696c79f89df585945ec76b27306adca46
7
- data.tar.gz: a5e8d8f8482081068b22d2e2412730514b8930847657fca4f8d1d2ecbd6960d3feb0b3e4a9066494adaa8fca88055bf82c542a913db0f74c2c0b840eb2295c4d
6
+ metadata.gz: 0d77cf39a842a06f50dcc6c11b9e4c1a53ceb3e24a897bc8fea6db807427ef87d05563e8a3718d867148c0610f9b158fc67f1bd65c7057848759084bbbe0fc28
7
+ data.tar.gz: b7b47af6df74ee2ab3633e94fa93bb9b6d0849bb6b1bb1cb86c1cb46dbba6fe6ae45bad774f34461f2b55a1acc1e6d5002e6401f7f0985597c2168ec83c1e081
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cicd-builder (0.9.32)
4
+ cicd-builder (0.9.33)
5
5
  artifactory (>= 2.2.1, < 2.3)
6
6
  awesome_print (>= 1.6, < 2.0)
7
7
  aws-sdk (>= 2.0, < 2.1)
@@ -51,7 +51,7 @@ module CiCd
51
51
  # }
52
52
  ini = IniFile.load(@options[:inifile])
53
53
  ini['global'].each{ |key,value|
54
- ENV[key]=value
54
+ ENV[key]=value.to_s
55
55
  }
56
56
  def _expand(k,v,regex,rerun)
57
57
  matches = v.match(regex)
@@ -87,41 +87,63 @@ module CiCd
87
87
  else
88
88
  raise 'Artifact does not have file or data?'
89
89
  end
90
- file_name = File.basename(data[:file])
91
- if file_name =~ %r'^#{data[:name]}'
92
- file_name.gsub!(%r'^#{data[:name]}\.*','')
93
- end
94
- file_name.gsub!(%r'\.*-*#{data[:version]}','')
95
- file_name.gsub!(%r'\.*-*#{data[:build]}-*','')
96
- file_ext = file_name.dup
97
- file_ext.gsub!(%r'^.*?\.*(tar\.gz|tgz|tar\.bzip2|bzip2|tar\.bz2|bz2|jar|war|groovy)$','\1')
98
- unless file_ext.empty?
99
- file_name.gsub!(%r'\.*#{file_ext}$','')
100
- end
90
+ file_name, file_ext = get_artifact_file_name_ext(data)
101
91
  if file_name =~ %r'\.+'
102
92
  raise "Unable to parse out file name in #{data[:file]}"
103
93
  end
104
94
  unless file_name.empty?
105
95
  file_name = '_'+file_name.gsub(%r'^(\.|-|)(\w)', '\2').gsub(%r'(\.|-)+', '_')
106
96
  end
107
- maybeUploadArtifactoryObject(data, data[:name], data[:version] || @vars[:version], file_ext, file_name) # -#{@vars[:variant]
97
+ maybeUploadArtifactoryObject(data, data[:module], data[:version] || @vars[:version], file_ext, file_name) # -#{@vars[:variant]
108
98
  break unless @vars[:return_code] == 0
109
99
  }
110
100
  if @vars[:return_code] == 0
101
+ manifest = @manifest.dup
102
+ manifest.each do |mod,man|
103
+ manifest_data = ''
104
+ man.each do |k,v|
105
+ manifest_data += "#{k}=#{v}\n"
106
+ end
107
+ data = { module: mod, data: manifest_data, version: @vars[:build_ver], build: @vars[:build_num], properties: @properties_matrix }
108
+ tempArtifactFile("#{mod}-manifest", data)
109
+ data[:sha1] = Digest::SHA1.file(data[:file]).hexdigest
110
+ data[:md5 ] = Digest::MD5.file(data[:file]).hexdigest
111
+ data[:name] = "#{mod}-manifest"
112
+ maybeUploadArtifactoryObject(data, data[:name], data[:version] || @vars[:version], 'properties', '') # -#{@vars[:variant]}
113
+ end
111
114
  manifest_data = ''
112
- @manifest.each do |k,v|
113
- manifest_data += "#{k}=#{v}\n"
115
+ manifest.each do |mod,man|
116
+ man.each do |k,v|
117
+ manifest_data += "#{k}=#{v}\n"
118
+ end
114
119
  end
115
- data = { data: manifest_data, version: @vars[:build_ver], build: @vars[:build_num], properties: @properties_matrix }
116
- tempArtifactFile('manifest', data)
120
+ amn = artifactory_manifest_name # Just using a local iso invoking method_missing repeatedly ... ;)
121
+ data = { module: amn, data: manifest_data, version: @vars[:build_ver], build: @vars[:build_num], properties: @properties_matrix }
122
+ tempArtifactFile(amn, data)
117
123
  data[:sha1] = Digest::SHA1.file(data[:file]).hexdigest
118
124
  data[:md5 ] = Digest::MD5.file(data[:file]).hexdigest
119
- data[:name] = artifactory_manifest_name
120
- maybeUploadArtifactoryObject(data, artifactory_manifest_name, data[:version] || @vars[:version], 'properties', '') # -#{@vars[:variant]}
125
+ data[:name] = amn
126
+ maybeUploadArtifactoryObject(data, amn, data[:version] || @vars[:version], 'properties', '') # -#{@vars[:variant]}
127
+ @manifest = manifest
121
128
  end
122
129
  @vars[:return_code]
123
130
  end
124
131
 
132
+ def get_artifact_file_name_ext(data)
133
+ file_name = File.basename(data[:file])
134
+ if file_name =~ %r'^#{data[:name]}'
135
+ file_name.gsub!(%r'^#{data[:name]}\.*', '')
136
+ end
137
+ file_name.gsub!(%r'\.*-*#{data[:version]}', '')
138
+ file_name.gsub!(%r'\.*-*#{data[:build]}-*', '')
139
+ file_ext = file_name.dup
140
+ file_ext.gsub!(%r'^.*?\.*(tar\.gz|tgz|tar\.bzip2|bzip2|tar\.bz2|bz2|zip|jar|war|groovy)$', '\1')
141
+ unless file_ext.empty?
142
+ file_name.gsub!(%r'\.*#{file_ext}$', '')
143
+ end
144
+ return file_name, file_ext
145
+ end
146
+
125
147
  def maybeUploadArtifactoryObject(data, artifact_module, artifact_version, file_ext, file_name)
126
148
  artifact_name = getArtifactName(data[:name], file_name, artifact_version, file_ext) # artifact_path = "#{artifactory_org_path()}/#{data[:name]}/#{data[:version]}-#{@vars[:variant]}/#{artifact_name}"
127
149
  artifact_path = getArtifactPath(artifact_module, artifact_version, artifact_name)
@@ -132,7 +154,7 @@ module CiCd
132
154
  upload = true
133
155
  else
134
156
  @logger.info "#{artifactory_endpoint()}/#{artifactory_repo()}/#{artifact_path} exists - #{objects.size} results"
135
- @logger.info "\t#{objects.map{|o| o.attributes[:uri]}.join("\t")}"
157
+ @logger.info "\t#{objects.map{|o| o.attributes[:uri]}.join("\n\t")}"
136
158
  matched = matchArtifactoryObjects(artifact_path, data, objects)
137
159
  upload ||= (matched.size == 0)
138
160
  end
@@ -148,12 +170,16 @@ module CiCd
148
170
  @logger.info "Keep existing #{matched.map{|o| o.attributes[:uri]}.join("\t")}"
149
171
  end
150
172
  if data[:temp]
151
- File.unlink(data[:file])
173
+ if File.exists?(data[:file])
174
+ File.unlink(data[:file]) if File.exists?(data[:file])
175
+ else
176
+ @logger.warn "Temporary file disappeared: #{data.ai}"
177
+ end
152
178
  end
153
179
  @vars[:return_code] = Errors::ARTIFACT_NOT_UPLOADED unless matched.size > 0
154
180
  if @vars[:return_code] == 0
155
181
  artifact_version += "-#{data[:build] || @vars[:build_num]}"
156
- artifact_name = getArtifactName(artifact_module, file_name, artifact_version, file_ext, )
182
+ artifact_name = getArtifactName(data[:name], file_name, artifact_version, file_ext, )
157
183
  artifact_path = getArtifactPath(artifact_module, artifact_version, artifact_name)
158
184
  copies = maybeArtifactoryObject(artifact_module, artifact_version, false)
159
185
  matched = matchArtifactoryObjects(artifact_path, data, copies)
@@ -169,7 +195,18 @@ module CiCd
169
195
  else
170
196
  @logger.info "Keep existing #{matched.map{|o| o.attributes[:uri]}.join("\t")}"
171
197
  end
172
- @manifest[data[:name]] = artifact_version
198
+ if @manifest[artifact_module].nil?
199
+ @manifest[artifact_module] = {}
200
+ file_name = artifact_module
201
+ else
202
+ file_name, _ = get_artifact_file_name_ext(data)
203
+ if file_name.empty?
204
+ file_name = artifact_module
205
+ else
206
+ file_name = "#{artifact_module}#{file_name}"
207
+ end
208
+ end
209
+ @manifest[artifact_module][file_name] = artifact_version
173
210
  end
174
211
 
175
212
  @vars[:return_code]
@@ -229,9 +266,13 @@ module CiCd
229
266
  @logger.info "[#{Time.now.strftime('%Y-%m-%d %H:%M:%S %z')}] Uploaded: #{result.attributes.select { |k, _| k != :client }.ai}"
230
267
  artifact.upload_checksum(artifactory_repo(), "#{artifact_path}", :sha1, data[:sha1])
231
268
  artifact.upload_checksum(artifactory_repo(), "#{artifact_path}", :md5, data[:md5])
232
- objects = maybeArtifactoryObject(artifact_module, artifact_version, false)
233
- unless objects.size > 0
234
- objects = maybeArtifactoryObject(artifact_module, artifact_version, true)
269
+ attempt = 0
270
+ objects = []
271
+ while attempt < 3
272
+ objects = maybeArtifactoryObject(artifact_module, artifact_version, false)
273
+ break if objects.size > 0
274
+ sleep 2
275
+ attempt += 1
235
276
  end
236
277
  raise "Failed to upload '#{artifact_path}'" unless objects.size > 0
237
278
  objects
@@ -247,7 +288,11 @@ module CiCd
247
288
  @logger.info "[#{Time.now.strftime('%Y-%m-%d %H:%M:%S %z')}] Copied: #{result.ai}"
248
289
  end
249
290
  objects = maybeArtifactoryObject(artifact_module, artifact_version, false)
250
- raise "Failed to copy '#{artifact_path}'" unless objects.size > 0
291
+ unless objects.size > 0
292
+ sleep 10
293
+ objects = maybeArtifactoryObject(artifact_module, artifact_version, false)
294
+ raise "Failed to copy '#{artifact_path}'" unless objects.size > 0
295
+ end
251
296
  objects
252
297
  rescue Exception => e
253
298
  @logger.error "Failed to copy #{artifact_path}: #{e.class.name} #{e.message}"
@@ -4,7 +4,7 @@ module CiCd
4
4
  # file = File.expand_path("#{File.dirname(__FILE__)}/../../../VERSION")
5
5
  # lines = File.readlines(file)
6
6
  # version = lines[0]
7
- version = '0.9.32'
7
+ version = '0.9.33'
8
8
  VERSION = version unless const_defined?('VERSION')
9
9
  major, minor, tiny = VERSION.split('.')
10
10
  MAJOR = major unless const_defined?('MAJOR')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cicd-builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.32
4
+ version: 0.9.33
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-03-03 00:00:00.000000000 Z
11
+ date: 2015-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print