packaging 0.99.72 → 0.99.77
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/README.md +1 -1
- data/lib/packaging/archive.rb +6 -6
- data/lib/packaging/config.rb +31 -1
- data/lib/packaging/config/params.rb +11 -0
- data/lib/packaging/config/validations.rb +13 -0
- data/lib/packaging/deb/repo.rb +5 -5
- data/lib/packaging/paths.rb +20 -5
- data/lib/packaging/platforms.rb +15 -36
- data/lib/packaging/repo.rb +9 -3
- data/lib/packaging/rpm/repo.rb +4 -4
- data/lib/packaging/sign/dmg.rb +3 -3
- data/lib/packaging/sign/ips.rb +8 -8
- data/lib/packaging/sign/msi.rb +9 -6
- data/lib/packaging/util/net.rb +54 -32
- data/lib/packaging/util/ship.rb +4 -4
- data/spec/lib/packaging/artifactory_spec.rb +11 -11
- data/spec/lib/packaging/config_spec.rb +13 -15
- data/spec/lib/packaging/deb/repo_spec.rb +3 -3
- data/spec/lib/packaging/paths_spec.rb +33 -25
- data/spec/lib/packaging/platforms_spec.rb +14 -14
- data/spec/lib/packaging/repo_spec.rb +1 -1
- data/spec/lib/packaging/retrieve_spec.rb +4 -3
- data/spec/lib/packaging/rpm/repo_spec.rb +3 -3
- data/spec/lib/packaging/sign_spec.rb +0 -2
- data/spec/lib/packaging/util/git_tag_spec.rb +1 -1
- data/spec/lib/packaging/util/net_spec.rb +22 -9
- data/spec/lib/packaging/util/ship_spec.rb +2 -2
- data/tasks/archive.rake +3 -4
- data/tasks/config.rake +5 -0
- data/tasks/education.rake +5 -5
- data/tasks/fetch.rake +17 -14
- data/tasks/gem.rake +0 -10
- data/tasks/nightly_repos.rake +9 -9
- data/tasks/pe_ship.rake +11 -19
- data/tasks/ship.rake +35 -45
- data/tasks/sign.rake +3 -3
- metadata +14 -13
data/lib/packaging/sign/ips.rb
CHANGED
|
@@ -15,14 +15,14 @@ module Pkg::Sign::Ips
|
|
|
15
15
|
repo_dir = "#{work_dir}/repo"
|
|
16
16
|
signed_dir = "#{work_dir}/pkgs"
|
|
17
17
|
|
|
18
|
-
Pkg::Util::Net.
|
|
18
|
+
Pkg::Util::Net.remote_execute(ssh_host_string, "mkdir -p #{repo_dir} #{unsigned_dir} #{signed_dir}")
|
|
19
19
|
Pkg::Util::Net.rsync_to(p5p, rsync_host_string, unsigned_dir)
|
|
20
20
|
|
|
21
21
|
# Before we can get started with signing packages we need to create a repo
|
|
22
|
-
Pkg::Util::Net.
|
|
23
|
-
Pkg::Util::Net.
|
|
22
|
+
Pkg::Util::Net.remote_execute(ssh_host_string, "sudo -E /usr/bin/pkgrepo create #{repo_dir}")
|
|
23
|
+
Pkg::Util::Net.remote_execute(ssh_host_string, "sudo -E /usr/bin/pkgrepo set -s #{repo_dir} publisher/prefix=puppetlabs.com")
|
|
24
24
|
# And import all the packages into the repo.
|
|
25
|
-
Pkg::Util::Net.
|
|
25
|
+
Pkg::Util::Net.remote_execute(ssh_host_string, "sudo -E /usr/bin/pkgrecv -s #{unsigned_dir}/#{File.basename(p5p)} -d #{repo_dir} '*'")
|
|
26
26
|
# We are going to hard code the values for signing cert locations for now.
|
|
27
27
|
# This autmation will require an update to actually become reusable, but
|
|
28
28
|
# for now these values will stay this way so solaris signing will stop
|
|
@@ -37,21 +37,21 @@ module Pkg::Sign::Ips
|
|
|
37
37
|
-k /root/signing/signing_key_2020.pem \
|
|
38
38
|
-s 'file://#{work_dir}/repo' '*'"
|
|
39
39
|
puts "About to sign #{p5p} with #{sign_cmd} in #{work_dir}"
|
|
40
|
-
Pkg::Util::Net.
|
|
40
|
+
Pkg::Util::Net.remote_execute(ssh_host_string, sign_cmd.squeeze(' '))
|
|
41
41
|
# pkgrecv with -a will pull packages out of the repo, so we need to do that too to actually get the packages we signed
|
|
42
|
-
Pkg::Util::Net.
|
|
42
|
+
Pkg::Util::Net.remote_execute(ssh_host_string, "sudo -E /usr/bin/pkgrecv -d #{signed_dir}/#{File.basename(p5p)} -a -s #{repo_dir} '*'")
|
|
43
43
|
begin
|
|
44
44
|
# lets make sure we actually signed something?
|
|
45
45
|
# **NOTE** if we're repeatedly trying to sign the same version this
|
|
46
46
|
# might explode because I don't know how to reset the IPS cache.
|
|
47
47
|
# Everything is amazing.
|
|
48
|
-
Pkg::Util::Net.
|
|
48
|
+
Pkg::Util::Net.remote_execute(ssh_host_string, "sudo -E /usr/bin/pkg contents -m -g #{signed_dir}/#{File.basename(p5p)} '*' | grep '^signature '")
|
|
49
49
|
rescue RuntimeError
|
|
50
50
|
raise "Looks like #{File.basename(p5p)} was not signed correctly, quitting!"
|
|
51
51
|
end
|
|
52
52
|
# and pull the packages back.
|
|
53
53
|
Pkg::Util::Net.rsync_from("#{signed_dir}/#{File.basename(p5p)}", rsync_host_string, File.dirname(p5p))
|
|
54
|
-
Pkg::Util::Net.
|
|
54
|
+
Pkg::Util::Net.remote_execute(ssh_host_string, "if [ -e '#{work_dir}' ] ; then sudo rm -r '#{work_dir}' ; fi")
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
end
|
data/lib/packaging/sign/msi.rb
CHANGED
|
@@ -8,7 +8,7 @@ module Pkg::Sign::Msi
|
|
|
8
8
|
rsync_host_string = "-e 'ssh #{use_identity}' Administrator@#{Pkg::Config.msi_signing_server}"
|
|
9
9
|
|
|
10
10
|
work_dir = "Windows/Temp/#{Pkg::Util.rand_string}"
|
|
11
|
-
Pkg::Util::Net.
|
|
11
|
+
Pkg::Util::Net.remote_execute(ssh_host_string, "mkdir -p C:/#{work_dir}")
|
|
12
12
|
msis = Dir.glob("#{target_dir}/windows*/**/*.msi")
|
|
13
13
|
Pkg::Util::Net.rsync_to(msis.join(" "), rsync_host_string, "/cygdrive/c/#{work_dir}",
|
|
14
14
|
extra_flags: ["--ignore-existing --relative"])
|
|
@@ -71,9 +71,8 @@ for msipath in #{msis.join(" ")}; do
|
|
|
71
71
|
echo "$msi is already signed, skipping . . ." ;
|
|
72
72
|
else
|
|
73
73
|
tries=5
|
|
74
|
-
sha1Servers=(http://timestamp.
|
|
75
|
-
http://timestamp.
|
|
76
|
-
http://www.startssl.com/timestamp)
|
|
74
|
+
sha1Servers=(http://timestamp.digicert.com/sha1/timestamp
|
|
75
|
+
http://timestamp.comodoca.com/authenticode)
|
|
77
76
|
for timeserver in "${sha1Servers[@]}"; do
|
|
78
77
|
for ((try=1; try<=$tries; try++)) do
|
|
79
78
|
ret=$(/cygdrive/c/tools/osslsigncode-fork/osslsigncode.exe sign \
|
|
@@ -112,10 +111,14 @@ for msipath in #{msis.join(" ")}; do
|
|
|
112
111
|
done
|
|
113
112
|
CMD
|
|
114
113
|
|
|
115
|
-
Pkg::Util::Net.
|
|
114
|
+
Pkg::Util::Net.remote_execute(
|
|
115
|
+
ssh_host_string,
|
|
116
|
+
sign_command,
|
|
117
|
+
{ fail_fast: false }
|
|
118
|
+
)
|
|
116
119
|
msis.each do | msi |
|
|
117
120
|
Pkg::Util::Net.rsync_from("/cygdrive/c/#{work_dir}/#{msi}", rsync_host_string, File.dirname(msi))
|
|
118
121
|
end
|
|
119
|
-
Pkg::Util::Net.
|
|
122
|
+
Pkg::Util::Net.remote_execute(ssh_host_string, "if [ -d '/cygdrive/c/#{work_dir}' ]; then rm -rf '/cygdrive/c/#{work_dir}'; fi")
|
|
120
123
|
end
|
|
121
124
|
end
|
data/lib/packaging/util/net.rb
CHANGED
|
@@ -20,13 +20,11 @@ module Pkg::Util::Net
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
# Check that the current host matches the one we think it should
|
|
23
|
-
def check_host(host,
|
|
24
|
-
if hostname == host
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return nil
|
|
29
|
-
end
|
|
23
|
+
def check_host(host, options = { required: true })
|
|
24
|
+
return true if hostname == host
|
|
25
|
+
|
|
26
|
+
fail "Error: #{hostname} does not match #{host}" if options[:required]
|
|
27
|
+
return nil
|
|
30
28
|
end
|
|
31
29
|
|
|
32
30
|
# @param hosts - An array of hosts to try ssh-ing into
|
|
@@ -38,7 +36,7 @@ module Pkg::Util::Net
|
|
|
38
36
|
errs = []
|
|
39
37
|
Array(hosts).flatten.each do |host|
|
|
40
38
|
begin
|
|
41
|
-
|
|
39
|
+
remote_execute(host, 'exit', { extra_options: '-oBatchMode=yes' })
|
|
42
40
|
rescue
|
|
43
41
|
errs << host
|
|
44
42
|
end
|
|
@@ -56,7 +54,8 @@ module Pkg::Util::Net
|
|
|
56
54
|
errs = []
|
|
57
55
|
Array(hosts).flatten.each do |host|
|
|
58
56
|
begin
|
|
59
|
-
|
|
57
|
+
remote_execute(host, "gpg --list-secret-keys #{gpg} > /dev/null 2&>1",
|
|
58
|
+
{ extra_options: '-oBatchMode=yes' })
|
|
60
59
|
rescue
|
|
61
60
|
errs << host
|
|
62
61
|
end
|
|
@@ -64,40 +63,62 @@ module Pkg::Util::Net
|
|
|
64
63
|
return errs
|
|
65
64
|
end
|
|
66
65
|
|
|
67
|
-
def
|
|
66
|
+
def remote_execute(target_host, command, user_options = {})
|
|
67
|
+
option_defaults = {
|
|
68
|
+
capture_output: false,
|
|
69
|
+
extra_options: '',
|
|
70
|
+
fail_fast: true,
|
|
71
|
+
trace: false
|
|
72
|
+
}
|
|
73
|
+
options = option_defaults.merge(user_options)
|
|
68
74
|
|
|
69
75
|
ssh = Pkg::Util::Tool.check_tool('ssh')
|
|
70
76
|
|
|
71
77
|
# we pass some pretty complicated commands in via ssh. We need this to fail
|
|
72
78
|
# if any part of the remote ssh command fails.
|
|
73
79
|
shell_flags = ''
|
|
74
|
-
shell_flags += 'set -e;' if fail_fast
|
|
75
|
-
shell_flags += 'set -x;' if trace
|
|
80
|
+
shell_flags += 'set -e;' if options[:fail_fast]
|
|
81
|
+
shell_flags += 'set -x;' if options[:trace]
|
|
76
82
|
shell_commands = "#{shell_flags}#{command}"
|
|
77
83
|
|
|
78
|
-
|
|
84
|
+
remote_command = "#{ssh} #{options[:extra_options]} -t #{target_host} " +
|
|
85
|
+
"'#{shell_commands.gsub("'", "'\\\\''")}'"
|
|
79
86
|
|
|
80
87
|
# This is NOT a good way to support this functionality.
|
|
81
|
-
# It needs to be refactored into a set of methods that
|
|
82
|
-
# other methods can use to safely and deterministically
|
|
83
|
-
# support dry-run operations.
|
|
84
|
-
# But I need to ship packages RIGHT NOW.
|
|
85
|
-
# - Ryan McKern, 13/01/2016
|
|
86
88
|
if ENV['DRYRUN']
|
|
87
89
|
puts "[DRY-RUN] Executing '#{command}' on #{target}"
|
|
88
90
|
puts "[DRY-RUN] #{cmd}"
|
|
89
|
-
return
|
|
91
|
+
return ''
|
|
90
92
|
end
|
|
91
93
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
# We're forced to make different calls depending on the capture_output option
|
|
95
|
+
# because something about our #capture3 method screws up gpg. This should
|
|
96
|
+
# be untangled.
|
|
97
|
+
if options[:capture_output]
|
|
98
|
+
stdout, stderr, exitstatus = Pkg::Util::Execution.capture3(remote_command)
|
|
99
|
+
Pkg::Util::Execution.success?(exitstatus) or
|
|
100
|
+
raise "Remote ssh command (\"#{remote_command}\") failed."
|
|
96
101
|
return stdout, stderr
|
|
97
|
-
else
|
|
98
|
-
Kernel.system(cmd)
|
|
99
|
-
Pkg::Util::Execution.success? or raise "Remote ssh command failed."
|
|
100
102
|
end
|
|
103
|
+
|
|
104
|
+
# Pkg::Util::Execution.capture3 reports its command but Kernel.system does not
|
|
105
|
+
# Let's print it out for some amount of consistency.
|
|
106
|
+
puts "Remote Execute: '#{remote_command}'"
|
|
107
|
+
Kernel.system(remote_command)
|
|
108
|
+
Pkg::Util::Execution.success? or
|
|
109
|
+
raise "Remote ssh command (\"#{remote_command}\") failed."
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
###
|
|
113
|
+
### Deprecated method implemented as a shim to the new `remote_execute` method
|
|
114
|
+
###
|
|
115
|
+
def remote_ssh_cmd(target, command, capture_output = false, extra_options = '', fail_fast = true, trace = false) # rubocop:disable Style/ParameterLists
|
|
116
|
+
puts "Warn: \"remote_ssh_cmd\" call in packaging is deprecated. Use \"remote_execute\" instead."
|
|
117
|
+
remote_execute(target, command, {
|
|
118
|
+
capture_output: capture_output,
|
|
119
|
+
extra_options: extra_options,
|
|
120
|
+
fail_fast: fail_fast,
|
|
121
|
+
trace: trace })
|
|
101
122
|
end
|
|
102
123
|
|
|
103
124
|
# Construct a valid rsync command
|
|
@@ -272,17 +293,17 @@ module Pkg::Util::Net
|
|
|
272
293
|
|
|
273
294
|
def remote_set_ownership(host, owner, group, files)
|
|
274
295
|
remote_cmd = "for file in #{files.join(" ")}; do if [[ -d $file ]] || ! `lsattr $file | grep -q '\\-i\\-'`; then sudo chown #{owner}:#{group} $file; else echo \"$file is immutable\"; fi; done"
|
|
275
|
-
Pkg::Util::Net.
|
|
296
|
+
Pkg::Util::Net.remote_execute(host, remote_cmd)
|
|
276
297
|
end
|
|
277
298
|
|
|
278
299
|
def remote_set_permissions(host, permissions, files)
|
|
279
300
|
remote_cmd = "for file in #{files.join(" ")}; do if [[ -d $file ]] || ! `lsattr $file | grep -q '\\-i\\-'`; then sudo chmod #{permissions} $file; else echo \"$file is immutable\"; fi; done"
|
|
280
|
-
Pkg::Util::Net.
|
|
301
|
+
Pkg::Util::Net.remote_execute(host, remote_cmd)
|
|
281
302
|
end
|
|
282
303
|
|
|
283
304
|
# Remotely set the immutable bit on a list of files
|
|
284
305
|
def remote_set_immutable(host, files)
|
|
285
|
-
Pkg::Util::Net.
|
|
306
|
+
Pkg::Util::Net.remote_execute(host, "sudo chattr +i #{files.join(" ")}")
|
|
286
307
|
end
|
|
287
308
|
|
|
288
309
|
# Create a symlink indicating the latest version of a package
|
|
@@ -328,7 +349,8 @@ module Pkg::Util::Net
|
|
|
328
349
|
ln -sf "$link_target" #{full_package_name}-latest.#{platform_ext}
|
|
329
350
|
CMD
|
|
330
351
|
|
|
331
|
-
_, err = Pkg::Util::Net.
|
|
352
|
+
_, err = Pkg::Util::Net.remote_execute(
|
|
353
|
+
Pkg::Config.staging_server, cmd, { capture_output: true })
|
|
332
354
|
$stderr.puts err
|
|
333
355
|
end
|
|
334
356
|
|
|
@@ -365,14 +387,14 @@ module Pkg::Util::Net
|
|
|
365
387
|
#{tar} -zxvf /tmp/#{tarball_name}.tar.gz -C /tmp/ ;
|
|
366
388
|
git clone --recursive /tmp/#{tarball_name} #{git_bundle_directory} ;
|
|
367
389
|
DOC
|
|
368
|
-
Pkg::Util::Net.
|
|
390
|
+
Pkg::Util::Net.remote_execute(host, command)
|
|
369
391
|
return git_bundle_directory
|
|
370
392
|
end
|
|
371
393
|
|
|
372
394
|
def remote_bundle_install_command
|
|
373
395
|
export_packaging_location = ''
|
|
374
396
|
export_packaging_location = "export PACKAGING_LOCATION='#{ENV['PACKAGING_LOCATION']}';" if ENV['PACKAGING_LOCATION'] && !ENV['PACKAGING_LOCATION'].empty?
|
|
375
|
-
command = "source /usr/local/rvm/scripts/rvm; rvm use ruby-2.
|
|
397
|
+
command = "source /usr/local/rvm/scripts/rvm; rvm use ruby-2.5.1; #{export_packaging_location} bundle install --path .bundle/gems ;"
|
|
376
398
|
end
|
|
377
399
|
|
|
378
400
|
# Given a BuildInstance object and a host, send its params to the host. Return
|
data/lib/packaging/util/ship.rb
CHANGED
|
@@ -86,7 +86,7 @@ module Pkg::Util::Ship
|
|
|
86
86
|
sub_string = 'pkg'
|
|
87
87
|
remote_pkg = pkg.sub(sub_string, remote_path)
|
|
88
88
|
remote_basepath = File.dirname(remote_pkg)
|
|
89
|
-
Pkg::Util::Net.
|
|
89
|
+
Pkg::Util::Net.remote_execute(staging_server, "mkdir -p #{remote_basepath}")
|
|
90
90
|
Pkg::Util::Net.rsync_to(
|
|
91
91
|
File.join(tmpdir, pkg),
|
|
92
92
|
staging_server,
|
|
@@ -202,7 +202,7 @@ module Pkg::Util::Ship
|
|
|
202
202
|
def create_rolling_repo_link(platform_tag, staging_server, repo_path, nonfinal = false)
|
|
203
203
|
command = rolling_repo_link_command(platform_tag, repo_path, nonfinal)
|
|
204
204
|
|
|
205
|
-
Pkg::Util::Net.
|
|
205
|
+
Pkg::Util::Net.remote_execute(staging_server, command) unless command.nil?
|
|
206
206
|
rescue => e
|
|
207
207
|
fail "Failed to create rolling repo link for '#{platform_tag}'.\n#{e}\n#{e.backtrace}"
|
|
208
208
|
end
|
|
@@ -265,13 +265,13 @@ module Pkg::Util::Ship
|
|
|
265
265
|
fi
|
|
266
266
|
ln -sf #{remote_path} #{link_path}
|
|
267
267
|
CMD
|
|
268
|
-
Pkg::Util::Net.
|
|
268
|
+
Pkg::Util::Net.remote_execute(Pkg::Config.staging_server, link_command)
|
|
269
269
|
end
|
|
270
270
|
end
|
|
271
271
|
|
|
272
272
|
def test_ship(vm, ship_task)
|
|
273
273
|
command = 'getent group release || groupadd release'
|
|
274
|
-
Pkg::Util::Net.
|
|
274
|
+
Pkg::Util::Net.remote_execute(vm, command)
|
|
275
275
|
hosts_to_override = %w(
|
|
276
276
|
APT_HOST
|
|
277
277
|
DMG_HOST
|
|
@@ -36,16 +36,16 @@ describe 'artifactory.rb' do
|
|
|
36
36
|
:repo_config => '',
|
|
37
37
|
:additional_artifacts => ["./windowsfips/puppet-agent-extras-5.3.1.34-x64.msi"],
|
|
38
38
|
},
|
|
39
|
-
'eos-4-i386' => {
|
|
40
|
-
:artifact => "./eos/4/PC1/i386/puppet-agent-5.3.1.34.gf65f9ef-1.eos4.i386.swix",
|
|
41
|
-
:repo_config => '',
|
|
42
|
-
:additional_artifacts => ["./eos/4/PC1/i386/puppet-agent-extras-5.3.1.34.gf65f9ef-1.eos4.i386.swix"],
|
|
43
|
-
},
|
|
44
39
|
'osx-10.15-x86_64' => {
|
|
45
40
|
:artifact => "./apple/10.15/PC1/x86_64/puppet-agent-5.3.1.34.gf65f9ef-1.osx10.15.dmg",
|
|
46
41
|
:repo_config => '',
|
|
47
42
|
:additional_artifacts => ["./apple/10.15/PC1/x86_64/puppet-agent-extras-5.3.1.34.gf65f9ef-1.osx10.15.dmg"],
|
|
48
43
|
},
|
|
44
|
+
'osx-11-x86_64' => {
|
|
45
|
+
:artifact => "./apple/11/PC1/x86_64/puppet-agent-5.3.1.34.gf65f9ef-1.osx11.dmg",
|
|
46
|
+
:repo_config => '',
|
|
47
|
+
:additional_artifacts => ["./apple/11/PC1/x86_64/puppet-agent-extras-5.3.1.34.gf65f9ef-1.osx11.dmg"],
|
|
48
|
+
},
|
|
49
49
|
'solaris-10-sparc' => {
|
|
50
50
|
:artifact => "./solaris/10/PC1/puppet-agent-5.3.1.34.gf65f9ef-1.sparc.pkg.gz",
|
|
51
51
|
:repo_config => '',
|
|
@@ -89,18 +89,18 @@ describe 'artifactory.rb' do
|
|
|
89
89
|
:package_name => 'path/to/a/windowsfips/package/puppet-agent-5.3.1.34-x64.msi',
|
|
90
90
|
:all_package_names => ['puppet-agent-5.3.1.34-x64.msi','puppet-agent-extras-5.3.1.34-x64.msi']
|
|
91
91
|
},
|
|
92
|
-
'eos-4-i386' => {
|
|
93
|
-
:toplevel_repo => 'generic',
|
|
94
|
-
:repo_subdirectories => "#{default_repo_name}/#{project}/#{project_version}/eos-4-i386",
|
|
95
|
-
:package_name => 'path/to/an/eos/4/package/puppet-agent-5.3.1.34.gf65f9ef-1.eos4.i386.swix',
|
|
96
|
-
:all_package_names => ['puppet-agent-5.3.1.34.gf65f9ef-1.eos4.i386.swix', 'puppet-agent-extras-5.3.1.34.gf65f9ef-1.eos4.i386.swix']
|
|
97
|
-
},
|
|
98
92
|
'osx-10.15-x86_64' => {
|
|
99
93
|
:toplevel_repo => 'generic',
|
|
100
94
|
:repo_subdirectories => "#{default_repo_name}/#{project}/#{project_version}/osx-10.15-x86_64",
|
|
101
95
|
:package_name => 'path/to/an/osx/10.15/package/puppet-agent-5.3.1.34.gf65f9ef-1.osx10.15.dmg',
|
|
102
96
|
:all_package_names => ['puppet-agent-5.3.1.34.gf65f9ef-1.osx10.15.dmg', 'puppet-agent-extras-5.3.1.34.gf65f9ef-1.osx10.15.dmg']
|
|
103
97
|
},
|
|
98
|
+
'osx-11-x86_64' => {
|
|
99
|
+
:toplevel_repo => 'generic',
|
|
100
|
+
:repo_subdirectories => "#{default_repo_name}/#{project}/#{project_version}/osx-11-x86_64",
|
|
101
|
+
:package_name => 'path/to/an/osx/11/package/puppet-agent-5.3.1.34.gf65f9ef-1.osx11.dmg',
|
|
102
|
+
:all_package_names => ['puppet-agent-5.3.1.34.gf65f9ef-1.osx11.dmg', 'puppet-agent-extras-5.3.1.34.gf65f9ef-1.osx11.dmg']
|
|
103
|
+
},
|
|
104
104
|
'solaris-10-sparc' => {
|
|
105
105
|
:toplevel_repo => 'generic',
|
|
106
106
|
:repo_subdirectories => "#{default_repo_name}/#{project}/#{project_version}/solaris-10-sparc",
|
|
@@ -202,9 +202,8 @@ describe "Pkg::Config" do
|
|
|
202
202
|
|
|
203
203
|
describe "#platform_data" do
|
|
204
204
|
platform_tags = [
|
|
205
|
-
'eos-4-i386',
|
|
206
205
|
'osx-10.15-x86_64',
|
|
207
|
-
'
|
|
206
|
+
'osx-11-x86_64',
|
|
208
207
|
'ubuntu-16.04-i386',
|
|
209
208
|
'el-6-x86_64',
|
|
210
209
|
'el-7-ppc64le',
|
|
@@ -212,16 +211,15 @@ describe "Pkg::Config" do
|
|
|
212
211
|
]
|
|
213
212
|
|
|
214
213
|
artifacts = \
|
|
215
|
-
"./artifacts/eos/4/PC1/i386/puppet-agent-5.3.2-1.eos4.i386.swix\n" \
|
|
216
214
|
"./artifacts/apple/10.15/PC1/x86_64/puppet-agent-5.3.2.658.gc79ef9a-1.osx10.15.dmg\n" \
|
|
217
|
-
"./artifacts/
|
|
215
|
+
"./artifacts/apple/11/PC1/x86_64/puppet-agent-5.3.2.658.gc79ef9a-1.osx11.dmg\n" \
|
|
218
216
|
"./artifacts/deb/xenial/PC1/puppet-agent_5.3.2-1xenial_i386.deb\n" \
|
|
219
217
|
"./artifacts/el/6/PC1/x86_64/puppet-agent-5.3.2.658.gc79ef9a-1.el6.x86_64.rpm\n" \
|
|
220
218
|
"./artifacts/el/7/PC1/ppc64le/puppet-agent-5.3.2-1.el7.ppc64le.rpm\n" \
|
|
221
219
|
"./artifacts/sles/12/PC1/x86_64/puppet-agent-5.3.2-1.sles12.x86_64.rpm"
|
|
222
220
|
|
|
223
221
|
aix_artifacts = \
|
|
224
|
-
"./artifacts/aix/
|
|
222
|
+
"./artifacts/aix/7.1/PC1/ppc/puppet-agent-5.3.2-1.aix7.1.ppc.rpm"
|
|
225
223
|
|
|
226
224
|
fedora_artifacts = \
|
|
227
225
|
"./artifacts/fedora/31/PC1/x86_64/puppet-agent-5.3.2-1.fc31.x86_64.rpm"
|
|
@@ -259,7 +257,7 @@ describe "Pkg::Config" do
|
|
|
259
257
|
end
|
|
260
258
|
|
|
261
259
|
it "should return a hash mapping platform tags to paths" do
|
|
262
|
-
allow(Pkg::Util::Net).to receive(:
|
|
260
|
+
allow(Pkg::Util::Net).to receive(:remote_execute).and_return(artifacts, nil)
|
|
263
261
|
expect(Pkg::Config.platform_data.keys).to eql(platform_tags)
|
|
264
262
|
end
|
|
265
263
|
|
|
@@ -279,21 +277,21 @@ describe "Pkg::Config" do
|
|
|
279
277
|
end
|
|
280
278
|
|
|
281
279
|
it "should not use 'f' in fedora platform tags" do
|
|
282
|
-
allow(Pkg::Util::Net).to receive(:
|
|
280
|
+
allow(Pkg::Util::Net).to receive(:remote_execute).and_return(fedora_artifacts, nil)
|
|
283
281
|
data = Pkg::Config.platform_data
|
|
284
282
|
expect(data).to include('fedora-31-x86_64')
|
|
285
283
|
expect(data).not_to include('fedora-f31-x86_64')
|
|
286
284
|
end
|
|
287
285
|
|
|
288
286
|
it "should collect packages whose extname differ from package_format" do
|
|
289
|
-
allow(Pkg::Util::Net).to receive(:
|
|
287
|
+
allow(Pkg::Util::Net).to receive(:remote_execute).and_return(solaris_artifacts, nil)
|
|
290
288
|
data = Pkg::Config.platform_data
|
|
291
289
|
expect(data).to include('solaris-10-i386' => {:artifact => './solaris/10/PC1/puppet-agent-5.3.2-1.i386.pkg.gz', :repo_config => nil})
|
|
292
290
|
expect(data).to include('solaris-11-sparc' => {:artifact => './solaris/11/PC1/puppet-agent@5.3.2,5.11-1.sparc.p5p', :repo_config => nil})
|
|
293
291
|
end
|
|
294
292
|
|
|
295
293
|
it "should collect versioned msis" do
|
|
296
|
-
allow(Pkg::Util::Net).to receive(:
|
|
294
|
+
allow(Pkg::Util::Net).to receive(:remote_execute).and_return(windows_artifacts, nil)
|
|
297
295
|
data = Pkg::Config.platform_data
|
|
298
296
|
expect(data['windows-2012-x86']).to include(:artifact => './windows/puppet-agent-5.3.2-x86.msi')
|
|
299
297
|
expect(data['windows-2012-x64']).to include(:artifact => './windows/puppet-agent-5.3.2-x64.msi')
|
|
@@ -301,13 +299,13 @@ describe "Pkg::Config" do
|
|
|
301
299
|
end
|
|
302
300
|
|
|
303
301
|
it "should not collect debug packages" do
|
|
304
|
-
allow(Pkg::Util::Net).to receive(:
|
|
302
|
+
allow(Pkg::Util::Net).to receive(:remote_execute).and_return(stretch_artifacts, nil)
|
|
305
303
|
data = Pkg::Config.platform_data
|
|
306
304
|
expect(data['debian-9-amd64']).to include(:artifact => './deb/stretch/PC1/puppet-agent_5.3.2.658.gc79ef9a-1stretch_amd64.deb')
|
|
307
305
|
end
|
|
308
306
|
|
|
309
307
|
it "should collect packages that don't match the project name" do
|
|
310
|
-
allow(Pkg::Util::Net).to receive(:
|
|
308
|
+
allow(Pkg::Util::Net).to receive(:remote_execute).and_return(artifacts_not_matching_project, nil)
|
|
311
309
|
data = Pkg::Config.platform_data
|
|
312
310
|
expect(data['ubuntu-16.04-amd64']).to include(:artifact => './deb/xenial/pe-postgresql-contrib_2019.1.9.6.12-1xenial_amd64.deb')
|
|
313
311
|
expect(data['ubuntu-16.04-amd64'][:additional_artifacts].size).to eq(3)
|
|
@@ -317,15 +315,15 @@ describe "Pkg::Config" do
|
|
|
317
315
|
end
|
|
318
316
|
|
|
319
317
|
it "should use 'ppc' instead of 'power' in aix paths" do
|
|
320
|
-
allow(Pkg::Util::Net).to receive(:
|
|
318
|
+
allow(Pkg::Util::Net).to receive(:remote_execute).and_return(aix_artifacts, nil)
|
|
321
319
|
data = Pkg::Config.platform_data
|
|
322
|
-
expect(data['aix-
|
|
320
|
+
expect(data['aix-7.1-power']).to include(:artifact => './aix/7.1/PC1/ppc/puppet-agent-5.3.2-1.aix7.1.ppc.rpm')
|
|
323
321
|
end
|
|
324
322
|
|
|
325
323
|
it "should not record an aix repo config" do
|
|
326
|
-
allow(Pkg::Util::Net).to receive(:
|
|
324
|
+
allow(Pkg::Util::Net).to receive(:remote_execute).and_return(aix_artifacts, nil)
|
|
327
325
|
data = Pkg::Config.platform_data
|
|
328
|
-
expect(data['aix-
|
|
326
|
+
expect(data['aix-7.1-power'][:repo_config]).to be_nil
|
|
329
327
|
end
|
|
330
328
|
end
|
|
331
329
|
|
|
@@ -92,10 +92,10 @@ describe "Pkg::Deb::Repo" do
|
|
|
92
92
|
Pkg::Repo.should_receive(:directories_that_contain_packages).and_return(pkg_directories)
|
|
93
93
|
Pkg::Repo.should_receive(:populate_repo_directory)
|
|
94
94
|
Pkg::Deb::Repo.should_receive(:repo_creation_command).and_return(command)
|
|
95
|
-
Pkg::Util::Net.should_receive(:
|
|
95
|
+
Pkg::Util::Net.should_receive(:remote_execute).with(Pkg::Config.distribution_server, command)
|
|
96
96
|
Pkg::Deb::Repo.should_receive(:generate_repo_configs)
|
|
97
97
|
Pkg::Deb::Repo.should_receive(:ship_repo_configs)
|
|
98
|
-
Pkg::Util::Net.should_receive(:
|
|
98
|
+
Pkg::Util::Net.should_receive(:remote_execute).with(Pkg::Config.distribution_server, "rm -f #{artifact_directory}/repos/.lock" )
|
|
99
99
|
Pkg::Deb::Repo.create_repos
|
|
100
100
|
end
|
|
101
101
|
end
|
|
@@ -115,7 +115,7 @@ describe "Pkg::Deb::Repo" do
|
|
|
115
115
|
repo_dir = "#{Pkg::Config.jenkins_repo_path}/#{Pkg::Config.project}/#{Pkg::Config.ref}/repo_configs/deb"
|
|
116
116
|
Pkg::Util::File.should_receive(:empty_dir?).with("pkg/repo_configs/deb").and_return(false)
|
|
117
117
|
Pkg::Util::RakeUtils.should_receive(:invoke_task).with("pl:fetch")
|
|
118
|
-
Pkg::Util::Net.should_receive(:
|
|
118
|
+
Pkg::Util::Net.should_receive(:remote_execute).with(Pkg::Config.distribution_server, "mkdir -p #{repo_dir}")
|
|
119
119
|
Pkg::Util::Execution.should_receive(:retry_on_fail).with(:times => 3)
|
|
120
120
|
Pkg::Deb::Repo.ship_repo_configs
|
|
121
121
|
end
|
|
@@ -3,10 +3,11 @@ require 'spec_helper'
|
|
|
3
3
|
describe 'Pkg::Paths' do
|
|
4
4
|
describe '#arch_from_artifact_path' do
|
|
5
5
|
arch_transformations = {
|
|
6
|
-
['artifacts/aix/6.1/puppet6/ppc/puppet-agent-6.9.0-1.aix6.1.ppc.rpm', 'aix', '6.1'] => 'power',
|
|
7
6
|
['pkg/el-8-x86_64/puppet-agent-6.9.0-1.el8.x86_64.rpm', 'el', '8'] => 'x86_64',
|
|
7
|
+
['pkg/el/8/puppet6/aarch64/puppet-agent-6.5.0.3094.g16b6fa6f-1.el8.aarch64.rpm', 'el', '8'] => 'aarch64',
|
|
8
8
|
['artifacts/fedora/32/puppet6/x86_64/puppet-agent-6.9.0-1.fc30.x86_64.rpm', 'fedora', '32'] => 'x86_64',
|
|
9
9
|
['pkg/ubuntu-16.04-amd64/puppet-agent_4.99.0-1xenial_amd64.deb', 'ubuntu', '16.04'] => 'amd64',
|
|
10
|
+
['artifacts/deb/focal/puppet6/puppet-agent_6.5.0.3094.g16b6fa6f-1focal_arm64.deb', 'ubuntu', '20.04'] => 'aarch64',
|
|
10
11
|
|
|
11
12
|
['artifacts/ubuntu-16.04-i386/puppetserver_5.0.1-0.1SNAPSHOT.2017.07.27T2346puppetlabs1.debian.tar.gz', 'ubuntu', '16.04'] => 'source',
|
|
12
13
|
['artifacts/deb/jessie/PC1/puppetserver_5.0.1.master.orig.tar.gz', 'debian', '8'] => 'source',
|
|
@@ -22,7 +23,6 @@ describe 'Pkg::Paths' do
|
|
|
22
23
|
|
|
23
24
|
describe '#tag_from_artifact_path' do
|
|
24
25
|
path_tranformations = {
|
|
25
|
-
'artifacts/aix/6.1/puppet6/ppc/puppet-agent-6.9.0-1.aix6.1.ppc.rpm' => 'aix-6.1-power',
|
|
26
26
|
'pkg/el-7-x86_64/puppet-agent-5.5.22-1.el8.x86_64.rpm' => 'el-7-x86_64',
|
|
27
27
|
'pkg/ubuntu-20.04-amd64/puppet-agent_5.5.22-1xenial_amd64.deb' => 'ubuntu-20.04-amd64',
|
|
28
28
|
'pkg/windows/puppet-agent-5.5.22-x86.msi' => 'windows-2012-x86',
|
|
@@ -33,6 +33,7 @@ describe 'Pkg::Paths' do
|
|
|
33
33
|
'pkg/pe/deb/bionic/pe-puppetserver_2019.8.2.32-1bionic_all.deb' => 'ubuntu-18.04-amd64',
|
|
34
34
|
'artifacts/deb/focal/puppet6/puppetdb_6.13.0-1focal_all.deb' => 'ubuntu-20.04-amd64',
|
|
35
35
|
'pkg/apple/10.15/puppet6/x86_64/puppet-agent-6.19.0-1.osx10.15.dmg' => 'osx-10.15-x86_64',
|
|
36
|
+
'pkg/apple/11/puppet6/x86_64/puppet-agent-6.19.0-1.osx11.dmg' => 'osx-11-x86_64',
|
|
36
37
|
'pkg/windows/puppet-agent-1.9.0-x86.msi' => 'windows-2012-x86',
|
|
37
38
|
'pkg/pe/rpm/el-6-i386/pe-puppetserver-2017.3.0.3-1.el6.src.rpm' => 'el-6-SRPMS',
|
|
38
39
|
'pkg/pe/deb/xenial/pe-puppetserver_2017.3.0.3-1puppet1.orig.tar.gz' => 'ubuntu-16.04-source',
|
|
@@ -64,8 +65,8 @@ describe 'Pkg::Paths' do
|
|
|
64
65
|
end
|
|
65
66
|
|
|
66
67
|
it 'should return repo_name for final version' do
|
|
67
|
-
allow(Pkg::Config).to receive(:repo_name).and_return('puppet7')
|
|
68
|
-
expect(Pkg::Paths.repo_name).to eq('puppet7')
|
|
68
|
+
allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
|
|
69
|
+
expect(Pkg::Paths.repo_name).to eq('FUTURE-puppet7')
|
|
69
70
|
end
|
|
70
71
|
|
|
71
72
|
it 'should be empty string if repo_name is not set for final version' do
|
|
@@ -123,6 +124,11 @@ describe 'Pkg::Paths' do
|
|
|
123
124
|
.to eq('artifacts/mac/puppet6/10.15/x86_64')
|
|
124
125
|
end
|
|
125
126
|
|
|
127
|
+
it 'should be correct for osx11' do
|
|
128
|
+
expect(Pkg::Paths.artifacts_path('osx-11-x86_64'))
|
|
129
|
+
.to eq('artifacts/mac/puppet6/11/x86_64')
|
|
130
|
+
end
|
|
131
|
+
|
|
126
132
|
it 'should be correct for windows' do
|
|
127
133
|
expect(Pkg::Paths.artifacts_path('windows-2012-x64'))
|
|
128
134
|
.to eq('artifacts/windows/puppet6')
|
|
@@ -131,16 +137,16 @@ describe 'Pkg::Paths' do
|
|
|
131
137
|
|
|
132
138
|
context 'after puppet 7 apt changes' do
|
|
133
139
|
before :each do
|
|
134
|
-
allow(Pkg::Config).to receive(:repo_name).and_return('puppet7')
|
|
140
|
+
allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
|
|
135
141
|
end
|
|
136
142
|
|
|
137
143
|
it 'should be correct for bionic' do
|
|
138
144
|
expect(Pkg::Paths.artifacts_path('ubuntu-18.04-amd64'))
|
|
139
|
-
.to eq('artifacts/puppet7/bionic')
|
|
145
|
+
.to eq('artifacts/FUTURE-puppet7/bionic')
|
|
140
146
|
end
|
|
141
147
|
it 'should be correct for focal' do
|
|
142
148
|
expect(Pkg::Paths.artifacts_path('ubuntu-20.04-amd64'))
|
|
143
|
-
.to eq('artifacts/puppet7/focal')
|
|
149
|
+
.to eq('artifacts/FUTURE-puppet7/focal')
|
|
144
150
|
end
|
|
145
151
|
end
|
|
146
152
|
end
|
|
@@ -201,13 +207,13 @@ describe 'Pkg::Paths' do
|
|
|
201
207
|
end
|
|
202
208
|
|
|
203
209
|
it 'should return nonfinal_repo_name for nonfinal version' do
|
|
204
|
-
allow(Pkg::Config).to receive(:repo_name).and_return('puppet7')
|
|
205
|
-
allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('puppet7-nightly')
|
|
206
|
-
expect(Pkg::Paths.apt_repo_name(true)).to eq('puppet7-nightly')
|
|
210
|
+
allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
|
|
211
|
+
allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('FUTURE-puppet7-nightly')
|
|
212
|
+
expect(Pkg::Paths.apt_repo_name(true)).to eq('FUTURE-puppet7-nightly')
|
|
207
213
|
end
|
|
208
214
|
|
|
209
215
|
it 'should fail if nonfinal_repo_name is not set for non-final version' do
|
|
210
|
-
allow(Pkg::Config).to receive(:repo_name).and_return('puppet7')
|
|
216
|
+
allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
|
|
211
217
|
allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nil)
|
|
212
218
|
expect { Pkg::Paths.apt_repo_name(true) }.to raise_error
|
|
213
219
|
end
|
|
@@ -222,8 +228,8 @@ describe 'Pkg::Paths' do
|
|
|
222
228
|
|
|
223
229
|
it 'should return `Pkg::Config.yum_repo_name` if `Pkg::Config.repo_name` is not set' do
|
|
224
230
|
allow(Pkg::Config).to receive(:repo_name).and_return(nil)
|
|
225
|
-
allow(Pkg::Config).to receive(:yum_repo_name).and_return('puppet7')
|
|
226
|
-
expect(Pkg::Paths.yum_repo_name).to eq('puppet7')
|
|
231
|
+
allow(Pkg::Config).to receive(:yum_repo_name).and_return('FUTURE-puppet7')
|
|
232
|
+
expect(Pkg::Paths.yum_repo_name).to eq('FUTURE-puppet7')
|
|
227
233
|
end
|
|
228
234
|
|
|
229
235
|
it 'should return \'products\' if nothing is set' do
|
|
@@ -233,13 +239,13 @@ describe 'Pkg::Paths' do
|
|
|
233
239
|
end
|
|
234
240
|
|
|
235
241
|
it 'should return nonfinal_repo_name for nonfinal version' do
|
|
236
|
-
allow(Pkg::Config).to receive(:repo_name).and_return('puppet7')
|
|
237
|
-
allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('puppet7-nightly')
|
|
238
|
-
expect(Pkg::Paths.yum_repo_name(true)).to eq('puppet7-nightly')
|
|
242
|
+
allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
|
|
243
|
+
allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('FUTURE-puppet7-nightly')
|
|
244
|
+
expect(Pkg::Paths.yum_repo_name(true)).to eq('FUTURE-puppet7-nightly')
|
|
239
245
|
end
|
|
240
246
|
|
|
241
247
|
it 'should fail if nonfinal_repo_name is not set for non-final version' do
|
|
242
|
-
allow(Pkg::Config).to receive(:repo_name).and_return('puppet7')
|
|
248
|
+
allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
|
|
243
249
|
allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nil)
|
|
244
250
|
expect { Pkg::Paths.yum_repo_name(true) }.to raise_error
|
|
245
251
|
end
|
|
@@ -319,15 +325,15 @@ describe 'Pkg::Paths' do
|
|
|
319
325
|
context 'for puppet 7 and after' do
|
|
320
326
|
it 'returns the approprate apt repo path' do
|
|
321
327
|
allow(Pkg::Paths).to receive(:remote_repo_base).and_return('/opt/repository/apt')
|
|
322
|
-
expect(Pkg::Paths.apt_package_base_path('ubuntu-18.04-amd64', 'puppet7', 'puppet-agent'))
|
|
323
|
-
.to eq('/opt/repository/apt/puppet7/pool/bionic/p/puppet-agent')
|
|
324
|
-
expect(Pkg::Paths.apt_package_base_path('ubuntu-20.04-amd64', 'puppet7', 'puppet-agent'))
|
|
325
|
-
.to eq('/opt/repository/apt/puppet7/pool/focal/p/puppet-agent')
|
|
328
|
+
expect(Pkg::Paths.apt_package_base_path('ubuntu-18.04-amd64', 'FUTURE-puppet7', 'puppet-agent'))
|
|
329
|
+
.to eq('/opt/repository/apt/FUTURE-puppet7/pool/bionic/p/puppet-agent')
|
|
330
|
+
expect(Pkg::Paths.apt_package_base_path('ubuntu-20.04-amd64', 'FUTURE-puppet7', 'puppet-agent'))
|
|
331
|
+
.to eq('/opt/repository/apt/FUTURE-puppet7/pool/focal/p/puppet-agent')
|
|
326
332
|
end
|
|
327
333
|
it 'returns the appropriate nonfinal repo path' do
|
|
328
334
|
allow(Pkg::Paths).to receive(:remote_repo_base).and_return('/opt/repository-nightlies/apt')
|
|
329
|
-
expect(Pkg::Paths.apt_package_base_path('debian-10-amd64', 'puppet7-nightly', 'pdk', true))
|
|
330
|
-
.to eq('/opt/repository-nightlies/apt/puppet7-nightly/pool/buster/p/pdk')
|
|
335
|
+
expect(Pkg::Paths.apt_package_base_path('debian-10-amd64', 'FUTURE-puppet7-nightly', 'pdk', true))
|
|
336
|
+
.to eq('/opt/repository-nightlies/apt/FUTURE-puppet7-nightly/pool/buster/p/pdk')
|
|
331
337
|
end
|
|
332
338
|
end
|
|
333
339
|
end
|
|
@@ -366,13 +372,14 @@ describe 'Pkg::Paths' do
|
|
|
366
372
|
end
|
|
367
373
|
it 'returns nil for package formats that do not have release packages' do
|
|
368
374
|
expect(Pkg::Paths.release_package_link_path('osx-10.15-x86_64')).to eq(nil)
|
|
375
|
+
expect(Pkg::Paths.release_package_link_path('osx-11-x86_64')).to eq(nil)
|
|
369
376
|
expect(Pkg::Paths.release_package_link_path('windows-2012-x86')).to eq(nil)
|
|
370
377
|
end
|
|
371
378
|
end
|
|
372
379
|
|
|
373
380
|
context 'for puppet 7' do
|
|
374
|
-
repo_name = 'puppet7'
|
|
375
|
-
nonfinal_repo_name = 'puppet7-nightly'
|
|
381
|
+
repo_name = 'FUTURE-puppet7'
|
|
382
|
+
nonfinal_repo_name = 'FUTURE-puppet7-nightly'
|
|
376
383
|
yum_repo_path = '/opt/repository/yum'
|
|
377
384
|
apt_repo_path = '/opt/repository/apt'
|
|
378
385
|
nonfinal_yum_repo_path = '/opt/repository-nightlies/yum'
|
|
@@ -403,6 +410,7 @@ describe 'Pkg::Paths' do
|
|
|
403
410
|
end
|
|
404
411
|
it 'returns nil for package formats that do not have release packages' do
|
|
405
412
|
expect(Pkg::Paths.release_package_link_path('osx-10.15-x86_64')).to eq(nil)
|
|
413
|
+
expect(Pkg::Paths.release_package_link_path('osx-11-x86_64')).to eq(nil)
|
|
406
414
|
expect(Pkg::Paths.release_package_link_path('windows-2012-x86')).to eq(nil)
|
|
407
415
|
end
|
|
408
416
|
end
|