vanagon 0.15.37 → 0.15.38
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/lib/vanagon/driver.rb +1 -1
- data/lib/vanagon/platform.rb +2 -3
- data/lib/vanagon/platform/deb.rb +1 -1
- data/lib/vanagon/platform/rpm.rb +1 -1
- data/lib/vanagon/platform/windows.rb +29 -2
- data/lib/vanagon/project.rb +23 -4
- data/lib/vanagon/project/dsl.rb +33 -0
- metadata +31 -31
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6ffa8bb7c327a5b46f5403c9fb77cf396c8a9e09fb8d7c7558927bd99830483b
|
|
4
|
+
data.tar.gz: 8bc7b97f25d0fa5405af34ecddc6e6b00d6c57605d85a16fe232c7477a3083a8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f63aa10d3742e370faaaaf2c7dd5d7720f6598e60944a4d4917cc1e19b761a606a44fac5809f801bbae99b23f3f0221c958b70e7afb2a619d6fe32c0110a052c
|
|
7
|
+
data.tar.gz: 4303abc3598c0558b349dee95ad81c1f6354845971323ccbaa73f24d841c4eab7e5df39225ea9f58ae305470ec143f849feb7e0adae296430873263729a536ff
|
data/lib/vanagon/driver.rb
CHANGED
|
@@ -140,7 +140,7 @@ class Vanagon
|
|
|
140
140
|
@project.make_bill_of_materials(workdir)
|
|
141
141
|
# Don't generate packaging artifacts if no_packaging is set
|
|
142
142
|
@project.generate_packaging_artifacts(workdir) unless @project.no_packaging
|
|
143
|
-
@project.save_manifest_json(@platform)
|
|
143
|
+
@project.save_manifest_json(@platform, workdir)
|
|
144
144
|
@engine.ship_workdir(workdir)
|
|
145
145
|
@engine.dispatch("(cd #{@engine.remote_workdir}; #{@platform.make} #{make_target})")
|
|
146
146
|
@engine.retrieve_built_artifact(@project.artifacts_to_fetch, @project.no_packaging)
|
data/lib/vanagon/platform.rb
CHANGED
|
@@ -486,9 +486,9 @@ class Vanagon
|
|
|
486
486
|
def generate_compiled_archive(project)
|
|
487
487
|
name_and_version = "#{project.name}-#{project.version}"
|
|
488
488
|
name_and_version_and_platform = "#{name_and_version}.#{name}"
|
|
489
|
+
name_and_platform = "#{project.name}.#{name}"
|
|
489
490
|
final_archive = "output/#{name_and_version_and_platform}.tar.gz"
|
|
490
491
|
archive_directory = "#{project.name}-archive"
|
|
491
|
-
metadata = project.build_manifest_json(true)
|
|
492
492
|
|
|
493
493
|
# previously, we weren't properly handling the case of custom BOM paths.
|
|
494
494
|
# If we have a custom BOM path, during Makefile execution, the top-level
|
|
@@ -503,7 +503,6 @@ class Vanagon
|
|
|
503
503
|
bill_of_materials_command = "mv .#{project.bill_of_materials.path}/bill-of-materials ../.."
|
|
504
504
|
end
|
|
505
505
|
|
|
506
|
-
metadata.gsub!(/\n/, '\n')
|
|
507
506
|
[
|
|
508
507
|
"mkdir output",
|
|
509
508
|
"mkdir #{archive_directory}",
|
|
@@ -511,7 +510,7 @@ class Vanagon
|
|
|
511
510
|
"rm #{name_and_version}.tar.gz",
|
|
512
511
|
"cd #{archive_directory}/#{name_and_version}; #{bill_of_materials_command}; #{tar} cf ../../#{name_and_version_and_platform}.tar *",
|
|
513
512
|
"gzip -9c #{name_and_version_and_platform}.tar > #{name_and_version_and_platform}.tar.gz",
|
|
514
|
-
"
|
|
513
|
+
"cp build_metadata.#{name_and_platform}.json output/#{name_and_version_and_platform}.json",
|
|
515
514
|
"cp bill-of-materials output/#{name_and_version_and_platform}-bill-of-materials ||:",
|
|
516
515
|
"cp #{name_and_version_and_platform}.tar.gz output",
|
|
517
516
|
"#{shasum} #{final_archive} > #{final_archive}.sha1"
|
data/lib/vanagon/platform/deb.rb
CHANGED
|
@@ -140,7 +140,7 @@ class Vanagon
|
|
|
140
140
|
@tar = "tar"
|
|
141
141
|
@patch = "/usr/bin/patch"
|
|
142
142
|
@num_cores = "/usr/bin/nproc"
|
|
143
|
-
@curl = "curl --silent --show-error --fail"
|
|
143
|
+
@curl = "curl --silent --show-error --fail --location"
|
|
144
144
|
@valid_operators = ['<', '>', '<=', '>=', '=', '<<', '>>']
|
|
145
145
|
super(name)
|
|
146
146
|
end
|
data/lib/vanagon/platform/rpm.rb
CHANGED
|
@@ -103,7 +103,7 @@ class Vanagon
|
|
|
103
103
|
@patch ||= "/usr/bin/patch"
|
|
104
104
|
@num_cores ||= "/bin/grep -c 'processor' /proc/cpuinfo"
|
|
105
105
|
@rpmbuild ||= "/usr/bin/rpmbuild"
|
|
106
|
-
@curl = "curl --silent --show-error --fail"
|
|
106
|
+
@curl = "curl --silent --show-error --fail --location"
|
|
107
107
|
super(name)
|
|
108
108
|
end
|
|
109
109
|
end
|
|
@@ -205,11 +205,36 @@ class Vanagon
|
|
|
205
205
|
# "Misc Dir for versions.txt, License file and Icon file"
|
|
206
206
|
misc_dir = "SourceDir/#{project.settings[:base_dir]}/#{project.settings[:company_id]}/#{project.settings[:product_id]}/misc"
|
|
207
207
|
# Actual array of commands to be written to the Makefile
|
|
208
|
-
[
|
|
208
|
+
make_commands = [
|
|
209
209
|
"mkdir -p output/#{target_dir}",
|
|
210
210
|
"mkdir -p $(tempdir)/{SourceDir,wix/wixobj}",
|
|
211
211
|
"#{@copy} -r wix/* $(tempdir)/wix/",
|
|
212
|
-
"gunzip -c #{project.name}-#{project.version}.tar.gz | '#{@tar}' -C '$(tempdir)/SourceDir' --strip-components 1 -xf -"
|
|
212
|
+
"gunzip -c #{project.name}-#{project.version}.tar.gz | '#{@tar}' -C '$(tempdir)/SourceDir' --strip-components 1 -xf -"
|
|
213
|
+
]
|
|
214
|
+
|
|
215
|
+
unless project.extra_files_to_sign.empty?
|
|
216
|
+
begin
|
|
217
|
+
tempdir = nil
|
|
218
|
+
# Skip signing extra files if logging into the signing_host fails
|
|
219
|
+
# This enables things like CI being able to sign the additional files,
|
|
220
|
+
# but locally triggered builds by developers who don't have access to
|
|
221
|
+
# the signing host just print a message and skip the signing.
|
|
222
|
+
Vanagon::Utilities.retry_with_timeout(3, 5) do
|
|
223
|
+
tempdir = Vanagon::Utilities::remote_ssh_command("#{project.signing_username}@#{project.signing_hostname}", "#{@mktemp} 2>/dev/null", return_command_output: true)
|
|
224
|
+
end
|
|
225
|
+
project.extra_files_to_sign.each do |file|
|
|
226
|
+
file_location = File.join(tempdir, File.basename(file))
|
|
227
|
+
make_commands << [
|
|
228
|
+
"rsync -e '#{Vanagon::Utilities.ssh_command}' -rHlv --no-perms --no-owner --no-group #{File.join('$(tempdir)', 'SourceDir', file)} #{project.signing_username}@#{project.signing_hostname}:#{tempdir}",
|
|
229
|
+
"#{Vanagon::Utilities.ssh_command} #{project.signing_username}@#{project.signing_hostname} #{project.signing_command} #{file_location}",
|
|
230
|
+
"rsync -e '#{Vanagon::Utilities.ssh_command}' -rHlv -O --no-perms --no-owner --no-group #{project.signing_username}@#{project.signing_hostname}:#{file_location} #{File.join('$(tempdir)', 'SourceDir', file)}"
|
|
231
|
+
]
|
|
232
|
+
end
|
|
233
|
+
rescue RuntimeError
|
|
234
|
+
warn "Unable to connect to #{project.signing_username}@#{project.signing_hostname}, skipping signing extra files: #{project.extra_files_to_sign.join(',')}"
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
make_commands << [
|
|
213
238
|
"mkdir -p $(tempdir)/#{misc_dir}",
|
|
214
239
|
# Need to use awk here to convert to DOS format so that notepad can display file correctly.
|
|
215
240
|
"awk 'sub(\"$$\", \"\\r\")' $(tempdir)/SourceDir/bill-of-materials > $(tempdir)/#{misc_dir}/versions.txt",
|
|
@@ -225,6 +250,8 @@ class Vanagon
|
|
|
225
250
|
# -loc is required for the UI localization it points to the actual localization .wxl
|
|
226
251
|
"cd $(tempdir)/wix/wixobj; \"$$WIX/bin/light.exe\" #{light_flags} -b $$(cygpath -aw $(tempdir)) -loc $$(cygpath -aw $(tempdir)/wix/localization/puppet_en-us.wxl) -out $$(cygpath -aw $(workdir)/output/#{target_dir}/#{msi_package_name(project)}) *.wixobj",
|
|
227
252
|
]
|
|
253
|
+
|
|
254
|
+
make_commands.flatten
|
|
228
255
|
end
|
|
229
256
|
|
|
230
257
|
# Method to derive the msi (Windows Installer) package name for the project.
|
data/lib/vanagon/project.rb
CHANGED
|
@@ -108,6 +108,14 @@ class Vanagon
|
|
|
108
108
|
# you just want to perform installation and pull down a file.
|
|
109
109
|
attr_accessor :no_packaging
|
|
110
110
|
|
|
111
|
+
# Extra files to sign
|
|
112
|
+
# Right now just supported on windows, useful for signing powershell scripts
|
|
113
|
+
# that need to be signed between build and MSI creation
|
|
114
|
+
attr_accessor :extra_files_to_sign
|
|
115
|
+
attr_accessor :signing_hostname
|
|
116
|
+
attr_accessor :signing_username
|
|
117
|
+
attr_accessor :signing_command
|
|
118
|
+
|
|
111
119
|
# Loads a given project from the configdir
|
|
112
120
|
#
|
|
113
121
|
# @param name [String] the name of the project
|
|
@@ -156,6 +164,10 @@ class Vanagon
|
|
|
156
164
|
@upstream_metadata = {}
|
|
157
165
|
@no_packaging = false
|
|
158
166
|
@artifacts_to_fetch = []
|
|
167
|
+
@extra_files_to_sign = []
|
|
168
|
+
@signing_hostname = ''
|
|
169
|
+
@signing_username = ''
|
|
170
|
+
@signing_command = ''
|
|
159
171
|
end
|
|
160
172
|
|
|
161
173
|
# Magic getter to retrieve settings in the project
|
|
@@ -714,20 +726,27 @@ class Vanagon
|
|
|
714
726
|
# Writes a json file at `ext/build_metadata.<project>.<platform>.json` containing information
|
|
715
727
|
# about what went into a built artifact
|
|
716
728
|
#
|
|
717
|
-
# @
|
|
718
|
-
|
|
729
|
+
# @param platform [String] platform we're writing metadata for
|
|
730
|
+
# @param additional_directories [String|Array[String]] additional
|
|
731
|
+
# directories to write build_metadata.<project>.<platform>.json to
|
|
732
|
+
def save_manifest_json(platform, additional_directories = nil) # rubocop:disable Metrics/AbcSize
|
|
719
733
|
manifest = build_manifest_json
|
|
720
734
|
metadata = metadata_merge(manifest, @upstream_metadata)
|
|
721
735
|
|
|
722
736
|
ext_directory = 'ext'
|
|
723
737
|
FileUtils.mkdir_p ext_directory
|
|
724
738
|
|
|
739
|
+
directories = [ext_directory, additional_directories].compact
|
|
725
740
|
metadata_file_name = "build_metadata.#{name}.#{platform.name}.json"
|
|
726
|
-
|
|
727
|
-
|
|
741
|
+
directories.each do |directory|
|
|
742
|
+
File.open(File.join(directory, metadata_file_name), 'w') do |f|
|
|
743
|
+
f.write(JSON.pretty_generate(metadata))
|
|
744
|
+
end
|
|
728
745
|
end
|
|
729
746
|
|
|
730
747
|
## VANAGON-132 Backwards compatibility: make a 'build_metadata.json' file
|
|
748
|
+
# No need to propagate this backwards compatibility to the new additional
|
|
749
|
+
# directories
|
|
731
750
|
File.open(File.join(ext_directory, 'build_metadata.json'), 'w') do |f|
|
|
732
751
|
f.write(JSON.pretty_generate(metadata))
|
|
733
752
|
end
|
data/lib/vanagon/project/dsl.rb
CHANGED
|
@@ -363,6 +363,39 @@ class Vanagon
|
|
|
363
363
|
def no_packaging(var)
|
|
364
364
|
@project.no_packaging = var
|
|
365
365
|
end
|
|
366
|
+
|
|
367
|
+
# Set to sign additional files during buildtime. Only implemented for
|
|
368
|
+
# windows. Can be specified more than once
|
|
369
|
+
#
|
|
370
|
+
# @param [String] file to sign
|
|
371
|
+
def extra_file_to_sign(file)
|
|
372
|
+
@project.extra_files_to_sign << file
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
# The hostname to sign additional files on. Only does anything when there
|
|
376
|
+
# are extra files to sign
|
|
377
|
+
#
|
|
378
|
+
# @param [String] hostname of the machine to run the extra file signing on
|
|
379
|
+
def signing_hostname(hostname)
|
|
380
|
+
@project.signing_hostname = hostname
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
# The username to log in to the signing_hostname as. Only does anything
|
|
384
|
+
# when there are extra files to sign
|
|
385
|
+
#
|
|
386
|
+
# @param [String] the username to log in to `signing_hostname` as
|
|
387
|
+
def signing_username(username)
|
|
388
|
+
@project.signing_username = username
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
# The command to run to sign additional files. The command should assume
|
|
392
|
+
# it will have the file path appended to the end of the command, since
|
|
393
|
+
# files end up in a temp directory.
|
|
394
|
+
#
|
|
395
|
+
# @param [String] the command to sign additional files
|
|
396
|
+
def signing_command(command)
|
|
397
|
+
@project.signing_command = command
|
|
398
|
+
end
|
|
366
399
|
end
|
|
367
400
|
end
|
|
368
401
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vanagon
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.15.
|
|
4
|
+
version: 0.15.38
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Puppet Labs
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-06-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: git
|
|
@@ -265,41 +265,41 @@ signing_key:
|
|
|
265
265
|
specification_version: 3
|
|
266
266
|
summary: All of your packages will fit into this van with this one simple trick.
|
|
267
267
|
test_files:
|
|
268
|
-
- spec/lib/
|
|
269
|
-
- spec/lib/vanagon/
|
|
270
|
-
- spec/lib/vanagon/platform_spec.rb
|
|
268
|
+
- spec/lib/git/rev_list_spec.rb
|
|
269
|
+
- spec/lib/vanagon/driver_spec.rb
|
|
271
270
|
- spec/lib/vanagon/project_spec.rb
|
|
272
|
-
- spec/lib/vanagon/
|
|
273
|
-
- spec/lib/vanagon/extensions/set/json_spec.rb
|
|
274
|
-
- spec/lib/vanagon/extensions/string_spec.rb
|
|
275
|
-
- spec/lib/vanagon/extensions/ostruct/json_spec.rb
|
|
276
|
-
- spec/lib/vanagon/engine/ec2_spec.rb
|
|
277
|
-
- spec/lib/vanagon/engine/hardware_spec.rb
|
|
278
|
-
- spec/lib/vanagon/engine/pooler_spec.rb
|
|
279
|
-
- spec/lib/vanagon/engine/always_be_scheduling_spec.rb
|
|
280
|
-
- spec/lib/vanagon/engine/docker_spec.rb
|
|
281
|
-
- spec/lib/vanagon/engine/base_spec.rb
|
|
282
|
-
- spec/lib/vanagon/engine/local_spec.rb
|
|
283
|
-
- spec/lib/vanagon/environment_spec.rb
|
|
271
|
+
- spec/lib/vanagon/utilities/shell_utilities_spec.rb
|
|
284
272
|
- spec/lib/vanagon/utilities_spec.rb
|
|
285
|
-
- spec/lib/vanagon/
|
|
286
|
-
- spec/lib/vanagon/
|
|
273
|
+
- spec/lib/vanagon/platform/solaris_10_spec.rb
|
|
274
|
+
- spec/lib/vanagon/platform/rpm_spec.rb
|
|
275
|
+
- spec/lib/vanagon/platform/solaris_11_spec.rb
|
|
276
|
+
- spec/lib/vanagon/platform/dsl_spec.rb
|
|
277
|
+
- spec/lib/vanagon/platform/deb_spec.rb
|
|
278
|
+
- spec/lib/vanagon/platform/windows_spec.rb
|
|
279
|
+
- spec/lib/vanagon/platform/osx_spec.rb
|
|
280
|
+
- spec/lib/vanagon/platform/rpm/aix_spec.rb
|
|
281
|
+
- spec/lib/vanagon/component/source_spec.rb
|
|
287
282
|
- spec/lib/vanagon/component/dsl_spec.rb
|
|
288
|
-
- spec/lib/vanagon/component/
|
|
289
|
-
- spec/lib/vanagon/component/source/git_spec.rb
|
|
283
|
+
- spec/lib/vanagon/component/rules_spec.rb
|
|
290
284
|
- spec/lib/vanagon/component/source/http_spec.rb
|
|
291
285
|
- spec/lib/vanagon/component/source/local_spec.rb
|
|
292
|
-
- spec/lib/vanagon/component/
|
|
286
|
+
- spec/lib/vanagon/component/source/rewrite_spec.rb
|
|
287
|
+
- spec/lib/vanagon/component/source/git_spec.rb
|
|
288
|
+
- spec/lib/vanagon/engine/docker_spec.rb
|
|
289
|
+
- spec/lib/vanagon/engine/hardware_spec.rb
|
|
290
|
+
- spec/lib/vanagon/engine/ec2_spec.rb
|
|
291
|
+
- spec/lib/vanagon/engine/base_spec.rb
|
|
292
|
+
- spec/lib/vanagon/engine/local_spec.rb
|
|
293
|
+
- spec/lib/vanagon/engine/pooler_spec.rb
|
|
294
|
+
- spec/lib/vanagon/engine/always_be_scheduling_spec.rb
|
|
295
|
+
- spec/lib/vanagon/platform_spec.rb
|
|
293
296
|
- spec/lib/vanagon/project/dsl_spec.rb
|
|
294
297
|
- spec/lib/vanagon/optparse_spec.rb
|
|
298
|
+
- spec/lib/vanagon/component_spec.rb
|
|
299
|
+
- spec/lib/vanagon/extensions/ostruct/json_spec.rb
|
|
300
|
+
- spec/lib/vanagon/extensions/string_spec.rb
|
|
301
|
+
- spec/lib/vanagon/extensions/set/json_spec.rb
|
|
295
302
|
- spec/lib/vanagon/common/user_spec.rb
|
|
296
303
|
- spec/lib/vanagon/common/pathname_spec.rb
|
|
297
|
-
- spec/lib/vanagon/
|
|
298
|
-
- spec/lib/
|
|
299
|
-
- spec/lib/vanagon/platform/solaris_10_spec.rb
|
|
300
|
-
- spec/lib/vanagon/platform/deb_spec.rb
|
|
301
|
-
- spec/lib/vanagon/platform/solaris_11_spec.rb
|
|
302
|
-
- spec/lib/vanagon/platform/rpm/aix_spec.rb
|
|
303
|
-
- spec/lib/vanagon/platform/osx_spec.rb
|
|
304
|
-
- spec/lib/vanagon/platform/rpm_spec.rb
|
|
305
|
-
- spec/lib/git/rev_list_spec.rb
|
|
304
|
+
- spec/lib/vanagon/environment_spec.rb
|
|
305
|
+
- spec/lib/makefile_spec.rb
|