cicd-builder 0.9.23 → 0.9.25

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: 61ad72216b3d5b2ff2a2e52780638a8caee66e4b
4
- data.tar.gz: b3f2f57f65776b850cc026b1a8d9dc6af726878e
3
+ metadata.gz: 0eab5918292fa3a2bf62313f8abd03f761f3f45d
4
+ data.tar.gz: 01182f3afc46fddde83438647fad3719779099fd
5
5
  SHA512:
6
- metadata.gz: 87b31bbd6491c1a63674014eec0e0871a357cd5f6b080d666d7555fab1e2da7c87d93e38c484db053e7d844b18f1d18dc6111180c39d32c45c3e905d694b0255
7
- data.tar.gz: 905a2508e6fd8587f4a287779c3b596a1cf5c1b26cc127c53ffb843ea0587413fad27db85376709fde6dc02902f2f389c295cf2ca8d986808f505276fb94347c
6
+ metadata.gz: cb9cbefa0fc88d44b1ec6853fb414f12c87b063cf782a94ada69032688d810e45820eb3c37ef9f06ba4366460242ac3f32833b3c04620c061b1a9387af7acb8b
7
+ data.tar.gz: 00e6ad0652ddc63c2443d2f6ebaf82fe12e86df11f115d7ebeb450abc56d08097f39e2284a1265ad1b24e2583d364d8dd67493b43cd17c32f2855359b0d591a0
data/Gemfile.lock ADDED
@@ -0,0 +1,136 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ cicd-builder (0.9.25)
5
+ artifactory (>= 2.2.1, < 2.3)
6
+ awesome_print (= 1.2.0, < 1.3)
7
+ aws-sdk (>= 2.0, < 2.1)
8
+ chef (>= 11.18.2, < 12)
9
+ git (>= 1.2.7, < 1.3)
10
+ inifile (>= 3.0.0, < 3.1)
11
+ json (= 1.8.1, < 1.9)
12
+ logging (>= 1.8.2, < 1.9)
13
+ semverse (>= 1.2.1, < 1.3)
14
+ yajl-ruby (>= 1.2.1, < 1.3)
15
+
16
+ GEM
17
+ remote: http://rubygems.org/
18
+ specs:
19
+ artifactory (2.2.1)
20
+ awesome_print (1.2.0)
21
+ aws-sdk (2.0.28)
22
+ aws-sdk-resources (= 2.0.28)
23
+ aws-sdk-core (2.0.28)
24
+ builder (~> 3.0)
25
+ jmespath (~> 1.0)
26
+ multi_json (~> 1.0)
27
+ multi_xml (~> 0.5)
28
+ aws-sdk-resources (2.0.28)
29
+ aws-sdk-core (= 2.0.28)
30
+ builder (3.2.2)
31
+ chef (11.18.6)
32
+ chef-zero (~> 2.2, >= 2.2.1)
33
+ diff-lcs (~> 1.2, >= 1.2.4)
34
+ erubis (~> 2.7)
35
+ ffi-yajl (~> 1.2)
36
+ highline (~> 1.6, >= 1.6.9)
37
+ mime-types (~> 1.16)
38
+ mixlib-authentication (~> 1.3)
39
+ mixlib-cli (~> 1.4)
40
+ mixlib-config (~> 2.0)
41
+ mixlib-log (~> 1.3)
42
+ mixlib-shellout (~> 1.4)
43
+ net-ssh (~> 2.6)
44
+ net-ssh-multi (~> 1.1)
45
+ ohai (~> 7.4)
46
+ plist (~> 3.1.0)
47
+ pry (~> 0.9)
48
+ rest-client (>= 1.0.4, <= 1.6.7)
49
+ chef-zero (2.2.1)
50
+ ffi-yajl (~> 1.1)
51
+ hashie (~> 2.0)
52
+ mixlib-log (~> 1.3)
53
+ rack
54
+ coderay (1.1.0)
55
+ cucumber (0.10.7)
56
+ builder (>= 2.1.2)
57
+ diff-lcs (>= 1.1.2)
58
+ gherkin (~> 2.4.0)
59
+ json (>= 1.4.6)
60
+ term-ansicolor (>= 1.0.5)
61
+ diff-lcs (1.2.5)
62
+ erubis (2.7.0)
63
+ ffi (1.9.6)
64
+ ffi-yajl (1.4.0)
65
+ ffi (~> 1.5)
66
+ libyajl2 (~> 1.2)
67
+ gherkin (2.4.21)
68
+ json (>= 1.4.6)
69
+ git (1.2.9.1)
70
+ hashie (2.1.2)
71
+ highline (1.7.1)
72
+ inifile (3.0.0)
73
+ ipaddress (0.8.0)
74
+ jmespath (1.0.2)
75
+ multi_json (~> 1.0)
76
+ json (1.8.1)
77
+ libyajl2 (1.2.0)
78
+ little-plugger (1.1.3)
79
+ logging (1.8.2)
80
+ little-plugger (>= 1.1.3)
81
+ multi_json (>= 1.8.4)
82
+ method_source (0.8.2)
83
+ mime-types (1.25.1)
84
+ mixlib-authentication (1.3.0)
85
+ mixlib-log
86
+ mixlib-cli (1.5.0)
87
+ mixlib-config (2.1.0)
88
+ mixlib-log (1.6.0)
89
+ mixlib-shellout (1.6.1)
90
+ multi_json (1.10.1)
91
+ multi_xml (0.5.5)
92
+ net-ssh (2.9.2)
93
+ net-ssh-gateway (1.2.0)
94
+ net-ssh (>= 2.6.5)
95
+ net-ssh-multi (1.2.0)
96
+ net-ssh (>= 2.6.5)
97
+ net-ssh-gateway (>= 1.2.0)
98
+ ohai (7.4.1)
99
+ ffi (~> 1.9)
100
+ ffi-yajl (~> 1.1)
101
+ ipaddress
102
+ mime-types (~> 1.16)
103
+ mixlib-cli
104
+ mixlib-config (~> 2.0)
105
+ mixlib-log
106
+ mixlib-shellout (~> 1.2)
107
+ systemu (~> 2.6.4)
108
+ wmi-lite (~> 1.0)
109
+ plist (3.1.0)
110
+ pry (0.10.1)
111
+ coderay (~> 1.1.0)
112
+ method_source (~> 0.8.1)
113
+ slop (~> 3.4)
114
+ rack (1.6.0)
115
+ rake (10.3.2)
116
+ rest-client (1.6.7)
117
+ mime-types (>= 1.16)
118
+ rubygems-tasks (0.2.4)
119
+ semverse (1.2.1)
120
+ slop (3.6.0)
121
+ systemu (2.6.4)
122
+ term-ansicolor (1.3.0)
123
+ tins (~> 1.0)
124
+ tins (1.3.4)
125
+ wmi-lite (1.0.0)
126
+ yajl-ruby (1.2.1)
127
+
128
+ PLATFORMS
129
+ ruby
130
+
131
+ DEPENDENCIES
132
+ bundler (>= 1.6, < 1.7)
133
+ cicd-builder!
134
+ cucumber (>= 0.10.7, < 0.11)
135
+ rake (>= 10.3, < 11)
136
+ rubygems-tasks (>= 0.2, < 1.1)
data/cicd-builder.gemspec CHANGED
@@ -17,17 +17,19 @@ 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 'awesome_print', '= 1.2.0'
21
- gem.add_dependency 'inifile', '>= 2.0.2'
22
- gem.add_dependency 'logging', '>= 0.0.0'
23
- gem.add_dependency 'json', '= 1.8.1'
24
- gem.add_dependency 'chef', '>= 11.8.2'
25
- gem.add_dependency 'aws-sdk', '>= 1.49.0'
26
- gem.add_dependency 'yajl-ruby', '>= 1.2.1'
27
- gem.add_dependency 'git', '>= 1.2.7'
20
+ gem.add_dependency 'awesome_print', '= 1.2.0', '< 1.3'
21
+ gem.add_dependency 'inifile', '>= 3.0.0', '< 3.1'
22
+ gem.add_dependency 'logging', '>= 1.8.2', '< 1.9'
23
+ gem.add_dependency 'json', '= 1.8.1', '< 1.9'
24
+ gem.add_dependency 'chef', '>= 11.18.2', '< 12'
25
+ gem.add_dependency 'aws-sdk', '>= 2.0', '< 2.1'
26
+ gem.add_dependency 'yajl-ruby', '>= 1.2.1', '< 1.3'
27
+ gem.add_dependency 'git', '>= 1.2.7', '< 1.3'
28
+ gem.add_dependency 'semverse', '>= 1.2.1', '< 1.3'
29
+ gem.add_dependency 'artifactory', '>= 2.2.1', '< 2.3'
28
30
 
29
- gem.add_development_dependency 'bundler', '~> 1.6'
30
- gem.add_development_dependency 'rake', '~> 10.3'
31
- gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
32
- gem.add_development_dependency 'cucumber', '>= 0.10.7'
31
+ gem.add_development_dependency 'bundler', '>= 1.6', '< 1.7'
32
+ gem.add_development_dependency 'rake', '>= 10.3', '< 11'
33
+ gem.add_development_dependency 'rubygems-tasks', '>= 0.2', '< 1.1'
34
+ gem.add_development_dependency 'cucumber', '>= 0.10.7', '< 0.11'
33
35
  end
data/lib/cicd/builder.rb CHANGED
@@ -13,7 +13,8 @@ module CiCd
13
13
  require 'fileutils'
14
14
  require 'digest'
15
15
  require 'yajl/json_gem'
16
- require 'aws-sdk'
16
+ require 'aws-sdk-core'
17
+ require 'aws-sdk-resources'
17
18
 
18
19
  _lib=File.dirname(__FILE__)
19
20
  $:.unshift(_lib) unless $:.include?(_lib)
@@ -56,28 +57,21 @@ module CiCd
56
57
  end
57
58
 
58
59
  # ---------------------------------------------------------------------------------------------------------------
59
- def run()
60
+ def setup()
60
61
  $stdout.write("CiCd::Builder v#{VERSION}\n")
62
+ @default_options[:env_keys] = Hash[@default_options[:env_keys].flatten.map.with_index.to_a].keys
61
63
  parseOptions()
64
+ end
65
+
66
+ # ---------------------------------------------------------------------------------------------------------------
67
+ def run()
68
+ setup()
62
69
 
63
- ret = checkEnvironment()
64
- if 0 == ret
65
- ret = getVars()
66
- if 0 == ret
67
- ret = prepareBuild()
68
- if 0 == ret
69
- ret = makeBuild()
70
- if 0 == ret
71
- ret = saveBuild()
72
- if 0 == ret
73
- ret = uploadBuildArtifacts()
74
- if 0 == ret
75
- # noop
76
- end
77
- end
78
- end
79
- end
80
- end
70
+ ret = 0
71
+ %w(checkEnvironment getVars prepareBuild makeBuild saveBuild uploadBuildArtifacts).each do |step|
72
+ @logger.step "#{step}"
73
+ ret = send(step)
74
+ break unless ret == 0
81
75
  end
82
76
 
83
77
  @vars[:return_code]
@@ -85,5 +79,14 @@ module CiCd
85
79
 
86
80
  end
87
81
 
82
+ def isSameDirectory(pwd, workspace)
83
+ pwd = File.realdirpath(File.expand_path(pwd))
84
+ workspace = File.realdirpath(File.expand_path(workspace))
85
+ unless pwd == workspace
86
+
87
+ end
88
+ return pwd, workspace
89
+ end
90
+
88
91
  end
89
92
  end
@@ -5,6 +5,7 @@ module CiCd
5
5
 
6
6
  # ---------------------------------------------------------------------------------------------------------------
7
7
  def cleanupBuild()
8
+ @logger.step __method__.to_s
8
9
  [ :build_pkg, :build_chk, :build_mdf, :build_mff ].each do |fil|
9
10
  if File.exists?(@vars[fil])
10
11
  begin
@@ -12,7 +13,7 @@ module CiCd
12
13
  rescue => e
13
14
  @logger.error e.to_s
14
15
  #raise e
15
- return -96
16
+ return Errors::CLEANUPBUILD_EXCEPTION
16
17
  end
17
18
  end
18
19
  end
@@ -22,7 +23,7 @@ module CiCd
22
23
  rescue => e
23
24
  @logger.error e.to_s
24
25
  #raise e
25
- return -95
26
+ return Errors::CLEANUPBUILD_EXCEPTION
26
27
  end
27
28
  end
28
29
  0
@@ -31,48 +32,71 @@ module CiCd
31
32
  # ---------------------------------------------------------------------------------------------------------------
32
33
  def prepareBuild()
33
34
  meta = {}
35
+ @vars[:return_code] = 0
34
36
  %w[ WORKSPACE PROJECT_NAME ].each do |e|
35
37
  unless ENV.has_key?(e)
36
- raise "#{e} environment variable is required"
38
+ puts "#{e} environment variable is required"
39
+ @vars[:return_code] = Errors::MISSING_ENV_VAR
37
40
  end
38
41
  end
39
42
  meta[:Version] = @vars[:version]
40
43
  meta[:Release] = @vars[:release]
41
44
 
42
- place = ''
43
- begin
44
- place = 'require "git"'
45
- eval place
46
-
47
- # Assuming we are in the workspace ...
48
- place = "Git.open('#{ENV['WORKSPACE']}')"
49
- git = Git.open(ENV['WORKSPACE'], :log => @logger)
50
- place = 'git.log'
51
- meta[:Commit] = git.log[0].sha
52
- place = 'git.current_branch'
53
- meta[:Branch] = git.current_branch
54
-
55
- @vars[:build_ext] = 'tar.gz'
56
- @vars[:build_bra] = meta[:Branch].gsub(%r([/|]),'.')
57
- @vars[:build_ver] = "#{meta[:Version]}"
58
- @vars[:build_vrb] = "#{@vars[:build_ver]}-release-#{meta[:Release]}-#{@vars[:build_bra]}-#{@vars[:variant]}" #
59
- @vars[:build_nam] = "#{@vars[:project_name]}-#{@vars[:build_vrb]}"
60
- @vars[:build_rel] = "#{@vars[:build_nam]}-build-#{@vars[:build_num]}"
61
- @vars[:build_dir] = "#{ENV['WORKSPACE']}/#{@vars[:build_rel]}"
62
- @vars[:latest_pkg]= "#{@vars[:build_store]}/#{@vars[:build_rel]}.#{@vars[:build_ext]}"
63
- @vars[:build_pkg] = "#{@vars[:build_rel]}.#{@vars[:build_ext]}"
64
- @vars[:build_chk] = "#{@vars[:build_rel]}.checksum"
65
- @vars[:build_mff] = "#{@vars[:build_rel]}.manifest"
66
- @vars[:build_mdf] = "#{@vars[:build_rel]}.meta"
67
- @vars[:build_mdd] = meta.dup
68
- #noinspection RubyArgCount
69
- @vars[:build_mds] = Digest::SHA256.hexdigest(meta.to_s)
70
-
71
- @vars[:return_code] = 0
72
-
73
- rescue Exception => e
74
- @logger.error "#{e.class}:: '#{place}' - #{e.message}"
75
- @vars[:return_code] = -98
45
+ if @vars[:return_code] == 0
46
+
47
+ if File.exists?(ENV['WORKSPACE']) and (File.directory?(ENV['WORKSPACE']) or File.symlink?(ENV['WORKSPACE']))
48
+
49
+ place = ''
50
+ begin
51
+ req = 'require "git"'
52
+ eval req
53
+
54
+ # Assuming we are in the workspace ...
55
+ place = "Git.open('#{ENV['WORKSPACE']}')"
56
+ git = Git.open(ENV['WORKSPACE'], :log => @logger)
57
+ place = 'git.log'
58
+ meta[:Commit] = git.log[0].sha
59
+ place = 'git.current_branch'
60
+ meta[:Branch] = git.current_branch
61
+
62
+ @vars[:build_ext] = 'tar.gz'
63
+ @vars[:build_bra] = meta[:Branch].gsub(%r([/|]),'.')
64
+ @vars[:build_ver] = "#{meta[:Version]}"
65
+ @vars[:build_rel] = "#{meta[:Release]}"
66
+ @vars[:build_vrb] = "#{@vars[:build_ver]}-release-#{meta[:Release]}-#{@vars[:build_bra]}-#{@vars[:variant]}" #
67
+ @vars[:build_nam] = "#{@vars[:project_name]}-#{@vars[:build_vrb]}"
68
+ @vars[:build_nmn] = "#{@vars[:build_nam]}-build-#{@vars[:build_num]}"
69
+ @vars[:build_dir] = "#{ENV['WORKSPACE']}/#{@vars[:build_nmn]}"
70
+ @vars[:latest_pkg]= "#{@vars[:build_store]}/#{@vars[:build_nmn]}.#{@vars[:build_ext]}"
71
+ @vars[:build_pkg] = "#{@vars[:build_nmn]}.#{@vars[:build_ext]}"
72
+ @vars[:build_chk] = "#{@vars[:build_nmn]}.checksum"
73
+ @vars[:build_mff] = "#{@vars[:build_nmn]}.manifest"
74
+ @vars[:build_mdf] = "#{@vars[:build_nmn]}.meta"
75
+ @vars[:build_mdd] = meta.dup
76
+ #noinspection RubyArgCount
77
+ @vars[:build_mds] = Digest::SHA256.hexdigest(meta.to_s)
78
+
79
+ @vars[:return_code] = 0
80
+
81
+ rescue Exception => e
82
+ @logger.error "#{e.class}:: '#{place}' - #{e.message}"
83
+ @vars[:return_code] = Errors::PREPAREBUILD_EXCEPTION
84
+ end
85
+
86
+ else
87
+ puts "Invalid workspace: '#{ENV['WORKSPACE']}'"
88
+ @vars[:return_code] = Errors::INVALID_WORKSPACE
89
+ end
90
+ end
91
+
92
+ if @vars[:return_code] == 0
93
+ @vars[:local_dirs] ||= {}
94
+ %w(artifacts latest).each do |dir|
95
+ @vars[:local_dirs][dir] = "#{ENV['WORKSPACE']}/#{dir}"
96
+ unless File.directory?(dir)
97
+ Dir.mkdir(dir)
98
+ end
99
+ end
76
100
  end
77
101
 
78
102
  @vars[:return_code]
@@ -83,54 +107,100 @@ module CiCd
83
107
  if @vars.has_key?(:build_dir) and @vars.has_key?(:build_pkg)
84
108
  begin
85
109
  do_build = false
86
- if File.exists?(@vars[:build_chk])
87
- @vars[:build_sha] = IO.readlines(@vars[:build_chk])
88
- unless @vars[:build_sha].is_a?(Array)
89
- @logger.error "Unable to parse build checksum from #{@vars[:build_chk]}"
90
- return -97
110
+ loadCheckSumFile()
111
+ if 0 == @vars[:return_code]
112
+ do_build = true if @vars[:build_sha].empty?
113
+ do_build = true unless File.exists?(@vars[:build_pkg]) and (Digest::SHA256.file(@vars[:build_pkg]).hexdigest() == @vars[:build_sha])
114
+ if do_build
115
+ @vars[:return_code] = cleanupBuild()
116
+ if 0 == @vars[:return_code]
117
+ @vars[:build_dte] = DateTime.now.strftime('%F %T%:z')
118
+ createMetaData()
119
+ if 0 == @vars[:return_code]
120
+ @vars[:return_code] = packageBuild()
121
+ if 0 == @vars[:return_code]
122
+ @vars[:check_sha] = @vars[:build_sha]
123
+ @vars[:build_sha] = if File.exists?(@vars[:build_pkg])
124
+ Digest::SHA256.file(@vars[:build_pkg]).hexdigest()
125
+ else
126
+ '0'
127
+ end
128
+ unless IO.write(@vars[:build_chk], @vars[:build_sha]) > 0
129
+ @logger.error "Unable to store checksum in '#{@vars[:build_chk]}'"
130
+ @vars[:return_code] = Errors::STORING_BUILD_CHECKSUM
131
+ end
132
+ end
133
+ end
134
+ end
91
135
  end
92
- @vars[:build_sha] = @vars[:build_sha][0].chomp()
93
- else
94
- @vars[:build_sha] = ''
95
- do_build = true
96
- end
97
- unless File.exists?(@vars[:build_pkg])
98
- do_build = true
99
136
  end
137
+
138
+ # Report status regardless of return code.
139
+ reportStatus()
140
+
100
141
  if do_build
101
- @vars[:return_code] = cleanupBuild()
102
- return @vars[:return_code] unless @vars[:return_code] == 0
103
- @vars[:build_dte] = DateTime.now.strftime("%F %T%:z")
104
- createMetaData()
105
- @vars[:return_code] = packageBuild()
106
- if 0 == @vars[:return_code]
107
- @vars[:check_sha] = @vars[:build_sha]
108
- @vars[:build_sha] = Digest::SHA256.file(@vars[:build_pkg]).hexdigest()
109
- IO.write(@vars[:build_chk], @vars[:build_sha])
110
- end
111
- reportStatus()
112
142
  reportResult()
113
143
  else
114
- reportStatus()
115
-
116
- # No need to build again :)
144
+ # Was no need to build :) or a failure :(
117
145
  @logger.info "NO_CHANGE: #{ENV['JOB_NAME']} #{ENV['BUILD_NUMBER']} #{@vars[:build_nam]} #{@vars[:build_pkg]} #{@vars[:build_chk]} [#{@vars[:build_sha]}]"
118
- @vars[:return_code] = 0
146
+ # @vars[:return_code] = 0
119
147
  return 1
120
148
  end
121
149
  rescue => e
122
- @logger.error "#{e.class.name} #{e.message}"
123
- @vars[:return_code] = -99
150
+ @logger.error "makeBuild failure: #{e.class.name} #{e.message}"
151
+ @vars[:return_code] = Errors::MAKEBUILD_EXCEPTION
124
152
  end
125
153
  else
126
- @logger.error ":build_dir or :build_pkg is unknown"
127
- @vars[:return_code] = 2
154
+ @logger.error ':build_dir or :build_pkg is unknown'
155
+ @vars[:return_code] = Errors::MAKEBUILD_PREPARATION
128
156
  end
129
157
  @vars[:return_code]
130
158
  end
131
159
 
160
+ # ---------------------------------------------------------------------------------------------------------------
161
+ def loadCheckSumFile
162
+ if File.exists?(@vars[:build_chk])
163
+ @vars[:build_sha] = IO.readlines(@vars[:build_chk])
164
+ unless @vars[:build_sha].is_a?(Array)
165
+ @logger.error "Unable to parse build checksum from #{@vars[:build_chk]}"
166
+ @vars[:return_code] = Errors::PARSING_BUILD_CHECKSUM
167
+ end
168
+ @vars[:build_sha] = @vars[:build_sha][0].chomp()
169
+ else
170
+ @vars[:build_sha] = ''
171
+ end
172
+ @vars[:return_code]
173
+ end
174
+
175
+ # ---------------------------------------------------------------------------------------------------------------
176
+ def calcLocalETag(etag, local, size = nil)
177
+ if size == nil
178
+ stat = File.stat(local)
179
+ size = stat.size
180
+ end
181
+ match = etag.match(%r'-(\d+)$')
182
+ check = if match
183
+ require 's3etag'
184
+ parts = match[1].to_i
185
+ chunk = size.to_f / parts.to_f
186
+ mbs = (chunk.to_f / 1024 /1024 + 0.5).to_i
187
+ part_size = mbs * 1024 * 1024
188
+ chkit = S3Etag.calc(file: local, threshold: part_size, min_part_size: part_size, max_parts: parts)
189
+ while chkit != etag and (size / part_size) <= parts
190
+ # Go one larger if a modulus remains and we have the right number of parts
191
+ mbs += 1
192
+ part_size = mbs * 1024 * 1024
193
+ chkit = S3Etag.calc(file: local, threshold: part_size, min_part_size: part_size, max_parts: parts)
194
+ end
195
+ chkit
196
+ else
197
+ Digest::MD5.file(local).hexdigest
198
+ end
199
+ end
200
+
132
201
  # ---------------------------------------------------------------------------------------------------------------
133
202
  def packageBuild()
203
+ @logger.step __method__.to_s
134
204
  excludes=%w(*.iml *.txt *.sh *.md .gitignore .editorconfig .jshintrc *.deprecated adminer doc)
135
205
  excludes = excludes.map{ |e| "--exclude=#{@vars[:build_nam]}/#{e}" }.join(' ')
136
206
  cmd = %(cd #{ENV['WORKSPACE']}; tar zcvf #{@vars[:build_pkg]} #{excludes} #{@vars[:build_nam]} 1>#{@vars[:build_pkg]}.manifest)
@@ -144,6 +214,7 @@ module CiCd
144
214
 
145
215
  # ---------------------------------------------------------------------------------------------------------------
146
216
  def createMetaData()
217
+ @logger.step __method__.to_s
147
218
  @vars[:build_mdd].merge!({
148
219
  :Generation => @options[:gen],
149
220
  :Project => @vars[:project_name],
@@ -154,7 +225,11 @@ module CiCd
154
225
 
155
226
  })
156
227
  json = JSON.pretty_generate( @vars[:build_mdd], { indent: "\t", space: ' '})
157
- IO.write(@vars[:build_mdf], json)
228
+ unless IO.write(@vars[:build_mdf], json) > 0
229
+ @logger.error "Unable to store metadata in '#{@vars[:build_mdf]}'"
230
+ @vars[:return_code] = Errors::STORING_BUILD_METADATA
231
+ end
232
+ @vars[:return_code]
158
233
  end
159
234
 
160
235
  end