cicd-builder 0.9.23 → 0.9.25

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: 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