packaging 0.99.61 → 0.99.62
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/packaging/artifactory.rb +13 -81
- data/lib/packaging/artifactory/extensions.rb +94 -0
- data/lib/packaging/paths.rb +69 -76
- data/lib/packaging/platforms.rb +4 -115
- data/spec/lib/packaging/artifactory_spec.rb +8 -11
- data/spec/lib/packaging/config_spec.rb +7 -9
- data/spec/lib/packaging/paths_spec.rb +8 -36
- data/spec/lib/packaging/platforms_spec.rb +12 -12
- data/spec/lib/packaging/retrieve_spec.rb +1 -1
- data/spec/lib/packaging/sign_spec.rb +0 -1
- data/spec/lib/packaging/util/ship_spec.rb +2 -6
- metadata +19 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51f93e35b2b4e64053f41aef02546deaa59b2ef0f5ee2c84839f1caf5f5a678c
|
4
|
+
data.tar.gz: f5d99ceffa53426ff02533f901cc80080fb4202b0c53ccc34094e2c5cd2a6049
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1dbac744ef49d74eeb5c7cbf0e5afa2b4cf8d23d1984ca79a5af78a78165044ebc9008e3ad747bb7205156b7dae22e0b366a7cb50fcf50393133ef4316759d1
|
7
|
+
data.tar.gz: d8338b79efa5280c0a72d33b6a1b4de28b0ee25d265e2ea33f786786c33c3ce97aa4238d8bdc90ed726f2acef4231e918ba451207616d3261aa4e865df5a1a4c
|
@@ -2,67 +2,7 @@ require 'artifactory'
|
|
2
2
|
require 'uri'
|
3
3
|
require 'open-uri'
|
4
4
|
require 'digest'
|
5
|
-
|
6
|
-
#
|
7
|
-
# [eric.griswold] This is unfortunate. The 'pattern_search' class method really does belong in
|
8
|
-
# the Artifactory gem. However, because of some of Chef's social policies,
|
9
|
-
# I am unwilling to contribute this code there. If that changes, I'll submit a PR. Until
|
10
|
-
# then, it'll live here.
|
11
|
-
#
|
12
|
-
module Artifactory
|
13
|
-
class Resource::Artifact
|
14
|
-
#
|
15
|
-
# Search for an artifact in a repo using an Ant-like pattern.
|
16
|
-
# Unlike many Artifactory searches, this one is restricted to a single
|
17
|
-
# repository.
|
18
|
-
#
|
19
|
-
# @example Search in a repository named 'foo_local' for an artifact in a directory containing
|
20
|
-
# the word "recent", named "artifact[0-9].txt"
|
21
|
-
# Artifact.pattern_search(pattern: '*recent*/artifact[0-9].txt',
|
22
|
-
# repo: 'foo_local')
|
23
|
-
#
|
24
|
-
# @param [Hash] options
|
25
|
-
# A hash of options, as follows:
|
26
|
-
#
|
27
|
-
# @option options [Artifactory::Client] :client
|
28
|
-
# the client object to make the request with
|
29
|
-
# @option options [String] :pattern
|
30
|
-
# the Ant-like pattern to use for finding artifacts within the repos. Note that the
|
31
|
-
# Ant pattern '**' is barred in this case by JFrog.
|
32
|
-
# @option options [String] :repo
|
33
|
-
# the repo to search
|
34
|
-
#
|
35
|
-
# @return [Array<Resource::Artifact>]
|
36
|
-
# a list of artifacts that match the query
|
37
|
-
#
|
38
|
-
def self.pattern_search(options = {})
|
39
|
-
client = extract_client!(options)
|
40
|
-
params = Util.slice(options, :pattern, :repo)
|
41
|
-
pattern_search_parameter = { :pattern => "#{params[:repo]}:#{params[:pattern]}" }
|
42
|
-
response = client.get('/api/search/pattern', pattern_search_parameter)
|
43
|
-
return [] if response['files'].nil? || response['files'].empty?
|
44
|
-
|
45
|
-
# A typical response:
|
46
|
-
# {
|
47
|
-
# "repoUri"=>"https:<artifactory endpoint>/<repo>",
|
48
|
-
# "sourcePattern"=>"<repo>:<provided search pattern>",
|
49
|
-
# "files"=>[<filename that matched pattern>, ...]
|
50
|
-
# }
|
51
|
-
#
|
52
|
-
# Inserting '/api/storage' before the repo makes the 'from_url' call work correctly.
|
53
|
-
#
|
54
|
-
repo_uri = response['repoUri']
|
55
|
-
unless repo_uri.include?('/api/storage/')
|
56
|
-
# rubocop:disable Style/PercentLiteralDelimiters
|
57
|
-
repo_uri.sub!(%r(/#{params[:repo]}$), "/api/storage/#{params[:repo]}")
|
58
|
-
end
|
59
|
-
response['files'].map do |file_path|
|
60
|
-
from_url("#{repo_uri}/#{file_path}", client: client)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
5
|
+
require 'packaging/artifactory/extensions'
|
66
6
|
|
67
7
|
module Pkg
|
68
8
|
|
@@ -111,7 +51,6 @@ module Pkg
|
|
111
51
|
def location_for(platform_tag)
|
112
52
|
toplevel_repo = DEFAULT_REPO_TYPE
|
113
53
|
repo_subdirectories = File.join(@repo_base, @project, @project_version)
|
114
|
-
alternate_subdirectories = repo_subdirectories
|
115
54
|
|
116
55
|
unless platform_tag == DEFAULT_REPO_TYPE
|
117
56
|
format = Pkg::Platforms.package_format_for_tag(platform_tag)
|
@@ -122,20 +61,16 @@ module Pkg
|
|
122
61
|
when 'rpm'
|
123
62
|
toplevel_repo = 'rpm'
|
124
63
|
repo_subdirectories = File.join(repo_subdirectories, "#{platform}-#{version}-#{architecture}")
|
125
|
-
alternate_subdirectories = repo_subdirectories
|
126
64
|
when 'deb'
|
127
65
|
toplevel_repo = 'debian__local'
|
128
66
|
repo_subdirectories = File.join(repo_subdirectories, "#{platform}-#{version}")
|
129
|
-
alternate_subdirectories = File.join('pool', repo_subdirectories)
|
130
67
|
when 'swix', 'dmg', 'svr4', 'ips'
|
131
68
|
repo_subdirectories = File.join(repo_subdirectories, "#{platform}-#{version}-#{architecture}")
|
132
|
-
alternate_subdirectories = repo_subdirectories
|
133
69
|
when 'msi'
|
134
70
|
repo_subdirectories = File.join(repo_subdirectories, "#{platform}-#{architecture}")
|
135
|
-
alternate_subdirectories = repo_subdirectories
|
136
71
|
end
|
137
72
|
|
138
|
-
[toplevel_repo, repo_subdirectories
|
73
|
+
[toplevel_repo, repo_subdirectories]
|
139
74
|
end
|
140
75
|
|
141
76
|
# @param platform_tag [String] The platform tag specific to the information
|
@@ -150,8 +85,8 @@ module Pkg
|
|
150
85
|
end
|
151
86
|
end
|
152
87
|
|
153
|
-
repo_name, repo_subdirectories
|
154
|
-
full_artifactory_path = File.join(repo_name,
|
88
|
+
repo_name, repo_subdirectories = location_for(platform_tag)
|
89
|
+
full_artifactory_path = File.join(repo_name, repo_subdirectories)
|
155
90
|
|
156
91
|
{
|
157
92
|
platform: platform,
|
@@ -161,7 +96,6 @@ module Pkg
|
|
161
96
|
package_format: package_format,
|
162
97
|
repo_name: repo_name,
|
163
98
|
repo_subdirectories: repo_subdirectories,
|
164
|
-
alternate_subdirectories: alternate_subdirectories,
|
165
99
|
full_artifactory_path: full_artifactory_path
|
166
100
|
}
|
167
101
|
end
|
@@ -286,7 +220,7 @@ module Pkg
|
|
286
220
|
headers = { "X-Checksum-Md5" => artifact_md5 }
|
287
221
|
artifact.upload(
|
288
222
|
data[:repo_name],
|
289
|
-
File.join(data[:
|
223
|
+
File.join(data[:repo_subdirectories], File.basename(package)),
|
290
224
|
deploy_properties(platform_tag, File.basename(package)),
|
291
225
|
headers
|
292
226
|
)
|
@@ -420,21 +354,20 @@ module Pkg
|
|
420
354
|
manifest.each do |dist, packages|
|
421
355
|
puts "Grabbing the #{dist} packages from artifactory"
|
422
356
|
packages.each do |name, info|
|
423
|
-
|
357
|
+
filename = info['filename']
|
358
|
+
artifacts = Artifactory::Resource::Artifact.checksum_search(md5: "#{info["md5"]}", repos: ["rpm_enterprise__local", "debian_enterprise__local"], name: filename)
|
424
359
|
artifact_to_download = artifacts.select { |artifact| artifact.download_uri.include? remote_path }.first
|
425
360
|
# If we found matching artifacts, but not in the correct path, copy the artifact to the correct path
|
426
361
|
# This should help us keep repos up to date with the packages we are expecting to be there
|
427
362
|
# while helping us avoid 'what the hell, could not find package' errors
|
428
363
|
if artifact_to_download.nil? && !artifacts.empty?
|
429
364
|
artifact_to_copy = artifacts.first
|
430
|
-
filename = info['filename'] || File.basename(artifact_to_copy.download_uri)
|
431
365
|
copy_artifact(artifact_to_copy, artifact_to_copy.repo, "#{remote_path}/#{dist}/#{filename}")
|
432
|
-
artifacts = Artifactory::Resource::Artifact.checksum_search(md5: "#{info["md5"]}", repos: ["rpm_enterprise__local", "debian_enterprise__local"])
|
366
|
+
artifacts = Artifactory::Resource::Artifact.checksum_search(md5: "#{info["md5"]}", repos: ["rpm_enterprise__local", "debian_enterprise__local"], name: filename)
|
433
367
|
artifact_to_download = artifacts.select { |artifact| artifact.download_uri.include? remote_path }.first
|
434
368
|
end
|
435
369
|
|
436
370
|
if artifact_to_download.nil?
|
437
|
-
filename = info["filename"] || name
|
438
371
|
message = "Error: what the hell, could not find package #{filename} with md5sum #{info["md5"]}"
|
439
372
|
unless remote_path.empty?
|
440
373
|
message += " in #{remote_path}"
|
@@ -442,7 +375,6 @@ module Pkg
|
|
442
375
|
raise message
|
443
376
|
else
|
444
377
|
full_staging_path = "#{staging_directory}/#{dist}"
|
445
|
-
filename = info['filename'] || File.basename(artifact_to_download.download_uri)
|
446
378
|
puts "downloading #{artifact_to_download.download_uri} to #{File.join(full_staging_path, filename)}"
|
447
379
|
artifact_to_download.download(full_staging_path, filename: filename)
|
448
380
|
end
|
@@ -646,12 +578,11 @@ module Pkg
|
|
646
578
|
manifest.each do |dist, packages|
|
647
579
|
puts "Copying #{dist} packages..."
|
648
580
|
packages.each do |name, info|
|
649
|
-
|
581
|
+
filename = info["filename"]
|
582
|
+
artifact = Artifactory::Resource::Artifact.checksum_search(md5: "#{info["md5"]}", repos: ["rpm_enterprise__local", "debian_enterprise__local"], name: filename).first
|
650
583
|
if artifact.nil?
|
651
|
-
filename = info["filename"] || name
|
652
584
|
raise "Error: what the hell, could not find package #{filename} with md5sum #{info["md5"]}"
|
653
585
|
end
|
654
|
-
filename = info["filename"] || File.basename(artifact.download_uri)
|
655
586
|
copy_artifact(artifact, artifact.repo, "#{target_path}/#{dist}/#{filename}")
|
656
587
|
end
|
657
588
|
end
|
@@ -681,7 +612,8 @@ module Pkg
|
|
681
612
|
manifest.each do |dist, packages|
|
682
613
|
packages.each do |package_name, info|
|
683
614
|
next unless package_name == package
|
684
|
-
|
615
|
+
filename = info["filename"]
|
616
|
+
artifacts = Artifactory::Resource::Artifact.checksum_search(md5: "#{info["md5"]}", repos: repos, name: filename)
|
685
617
|
artifacts.each do |artifact|
|
686
618
|
next unless artifact.download_uri.include? remote_path
|
687
619
|
puts "Removing reverted package #{artifact.download_uri}"
|
@@ -701,7 +633,7 @@ module Pkg
|
|
701
633
|
Dir.foreach("#{tarball_path}/") do |pe_tarball|
|
702
634
|
next if pe_tarball == '.' || pe_tarball == ".."
|
703
635
|
md5 = Digest::MD5.file("#{tarball_path}/#{pe_tarball}").hexdigest
|
704
|
-
artifacts_to_delete = Artifactory::Resource::Artifact.checksum_search(md5: md5, repos: pe_repo)
|
636
|
+
artifacts_to_delete = Artifactory::Resource::Artifact.checksum_search(md5: md5, repos: pe_repo, name: pe_tarball)
|
705
637
|
next if artifacts_to_delete.nil?
|
706
638
|
begin
|
707
639
|
artifacts_to_delete.each do |artifact|
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'artifactory'
|
2
|
+
|
3
|
+
module ArtifactoryExtensions
|
4
|
+
module ClassMethods
|
5
|
+
#
|
6
|
+
# Search for an artifact in a repo using an Ant-like pattern.
|
7
|
+
# Unlike many Artifactory searches, this one is restricted to a single
|
8
|
+
# repository.
|
9
|
+
#
|
10
|
+
# @example Search in a repository named 'foo_local' for an artifact in a directory containing
|
11
|
+
# the word "recent", named "artifact[0-9].txt"
|
12
|
+
# Artifact.pattern_search(pattern: '*recent*/artifact[0-9].txt',
|
13
|
+
# repo: 'foo_local')
|
14
|
+
#
|
15
|
+
# @param [Hash] options
|
16
|
+
# A hash of options, as follows:
|
17
|
+
#
|
18
|
+
# @option options [Artifactory::Client] :client
|
19
|
+
# the client object to make the request with
|
20
|
+
# @option options [String] :pattern
|
21
|
+
# the Ant-like pattern to use for finding artifacts within the repos. Note that the
|
22
|
+
# Ant pattern '**' is barred in this case by JFrog.
|
23
|
+
# @option options [String] :repo
|
24
|
+
# the repo to search
|
25
|
+
#
|
26
|
+
# @return [Array<Resource::Artifact>]
|
27
|
+
# a list of artifacts that match the query
|
28
|
+
#
|
29
|
+
def pattern_search(options = {})
|
30
|
+
client = extract_client!(options)
|
31
|
+
params = Util.slice(options, :pattern, :repo)
|
32
|
+
pattern_search_parameter = { :pattern => "#{params[:repo]}:#{params[:pattern]}" }
|
33
|
+
response = client.get('/api/search/pattern', pattern_search_parameter)
|
34
|
+
return [] if response['files'].nil? || response['files'].empty?
|
35
|
+
|
36
|
+
# A typical response:
|
37
|
+
# {
|
38
|
+
# "repoUri"=>"https:<artifactory endpoint>/<repo>",
|
39
|
+
# "sourcePattern"=>"<repo>:<provided search pattern>",
|
40
|
+
# "files"=>[<filename that matched pattern>, ...]
|
41
|
+
# }
|
42
|
+
#
|
43
|
+
# Inserting '/api/storage' before the repo makes the 'from_url' call work correctly.
|
44
|
+
#
|
45
|
+
repo_uri = response['repoUri']
|
46
|
+
unless repo_uri.include?('/api/storage/')
|
47
|
+
# rubocop:disable Style/PercentLiteralDelimiters
|
48
|
+
repo_uri.sub!(%r(/#{params[:repo]}$), "/api/storage/#{params[:repo]}")
|
49
|
+
end
|
50
|
+
response['files'].map do |file_path|
|
51
|
+
from_url("#{repo_uri}/#{file_path}", client: client)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# This adds the `exact_match` option to artifactory search, and defaults it
|
56
|
+
# to true. With `exact_match` set to `true` the artifact will only be
|
57
|
+
# returned if the name in the download uri matches the name we're trying to
|
58
|
+
# download
|
59
|
+
def search(options = {})
|
60
|
+
exact_match = options[:exact_match].nil? ? true : options[:exact_match]
|
61
|
+
artifacts = super
|
62
|
+
|
63
|
+
if exact_match
|
64
|
+
artifacts.select! { |artifact| File.basename(artifact.download_uri) == options[:name] }
|
65
|
+
end
|
66
|
+
artifacts
|
67
|
+
end
|
68
|
+
|
69
|
+
# This adds the `name` option to artifactory checksum search. It defaults to
|
70
|
+
# unset. If set, the artifact is only returned if the download uri matches
|
71
|
+
# the passed name
|
72
|
+
def checksum_search(options = {})
|
73
|
+
artifacts = super
|
74
|
+
if options[:name]
|
75
|
+
artifacts.select! { |artifact| File.basename(artifact.download_uri) == options[:name] }
|
76
|
+
end
|
77
|
+
artifacts
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
# needed to prepend class methods, see https://stackoverflow.com/questions/18683750/how-to-prepend-classmethods
|
82
|
+
def self.prepended(base)
|
83
|
+
class << base
|
84
|
+
prepend ClassMethods
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
module Artifactory
|
90
|
+
class Resource::Artifact
|
91
|
+
# use prepend instead of monkeypatching so we can call `super`
|
92
|
+
prepend ArtifactoryExtensions
|
93
|
+
end
|
94
|
+
end
|
data/lib/packaging/paths.rb
CHANGED
@@ -70,15 +70,6 @@ module Pkg::Paths
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
# Method to determine if files should be shipped to legacy or current path
|
74
|
-
# structures. Any repo name matching /^puppet/ is a current repo, everything
|
75
|
-
# else is should be shipped to legacy paths.
|
76
|
-
#
|
77
|
-
# @param repo_name The repo name to check
|
78
|
-
def is_legacy_repo?(repo_name)
|
79
|
-
repo_name !~ /^puppet/
|
80
|
-
end
|
81
|
-
|
82
73
|
# Method to determine the yum repo name. Maintains compatibility with legacy
|
83
74
|
# projects, where `Pkg::Config.yum_repo_name` is set instead of
|
84
75
|
# `Pkg::Config.repo_name`. Defaults to 'products' if nothing is set.
|
@@ -110,65 +101,83 @@ module Pkg::Paths
|
|
110
101
|
return Pkg::Config.repo_link_target
|
111
102
|
end
|
112
103
|
|
113
|
-
#
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
# --MAS 2017-08-16
|
121
|
-
def artifacts_base_path_and_link_path(platform_tag, path_prefix = 'artifacts', nonfinal = false)
|
122
|
-
platform, version, architecture = Pkg::Platforms.parse_platform_tag(platform_tag)
|
123
|
-
package_format = Pkg::Platforms.package_format_for_tag(platform_tag)
|
104
|
+
# Construct a platform-dependent symlink target path.
|
105
|
+
def construct_base_path(path_data)
|
106
|
+
package_format = path_data[:package_format]
|
107
|
+
prefix = path_data[:prefix]
|
108
|
+
is_nonfinal = path_data[:is_nonfinal]
|
109
|
+
platform_name = path_data[:platform_name]
|
110
|
+
platform_tag = path_data[:platform_tag]
|
124
111
|
|
125
112
|
case package_format
|
113
|
+
when 'deb'
|
114
|
+
debian_code_name = Pkg::Platforms.get_attribute(platform_tag, :codename)
|
115
|
+
return File.join(prefix, debian_code_name, apt_repo_name(is_nonfinal))
|
116
|
+
when 'dmg'
|
117
|
+
return File.join(prefix, 'mac', repo_name(is_nonfinal))
|
118
|
+
when 'msi'
|
119
|
+
return File.join(prefix, platform_name, repo_name(is_nonfinal))
|
126
120
|
when 'rpm'
|
127
|
-
|
128
|
-
[File.join(path_prefix, platform, version, yum_repo_name(nonfinal)), nil]
|
129
|
-
else
|
130
|
-
[File.join(path_prefix, yum_repo_name(nonfinal)), link_name(nonfinal).nil? ? nil : File.join(path_prefix, link_name(nonfinal))]
|
131
|
-
end
|
121
|
+
return File.join(prefix, yum_repo_name(is_nonfinal))
|
132
122
|
when 'swix'
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
123
|
+
return File.join(prefix, platform_name, repo_name(is_nonfinal))
|
124
|
+
when 'svr4', 'ips'
|
125
|
+
return File.join(prefix, 'solaris', repo_name(is_nonfinal))
|
126
|
+
else
|
127
|
+
raise "Error: Unknown package format '#{package_format}'"
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
# Construct a platform-dependent link path
|
132
|
+
def construct_link_path(path_data)
|
133
|
+
package_format = path_data[:package_format]
|
134
|
+
prefix = path_data[:prefix]
|
135
|
+
platform_name = path_data[:platform_name]
|
136
|
+
platform_tag = path_data[:platform_tag]
|
137
|
+
link = path_data[:link]
|
138
|
+
|
139
|
+
return nil if link.nil?
|
140
|
+
|
141
|
+
case package_format
|
142
|
+
when 'rpm'
|
143
|
+
return File.join(prefix, link)
|
144
|
+
when 'swix'
|
145
|
+
return File.join(prefix, platform_name, link)
|
138
146
|
when 'deb'
|
139
|
-
|
140
|
-
|
147
|
+
debian_code_name = Pkg::Platforms.get_attribute(platform_tag, :codename)
|
148
|
+
return File.join(prefix, debian_code_name, link)
|
141
149
|
when 'svr4', 'ips'
|
142
|
-
|
143
|
-
[File.join(path_prefix, 'solaris', repo_name(nonfinal), version), nil]
|
144
|
-
else
|
145
|
-
[File.join(path_prefix, 'solaris', repo_name(nonfinal)), link_name(nonfinal).nil? ? nil : File.join(path_prefix, 'solaris', link_name(nonfinal))]
|
146
|
-
end
|
150
|
+
return File.join(prefix, 'solaris', link)
|
147
151
|
when 'dmg'
|
148
|
-
|
149
|
-
[File.join(path_prefix, 'mac', version, repo_name(nonfinal)), nil]
|
150
|
-
else
|
151
|
-
[File.join(path_prefix, 'mac', repo_name(nonfinal)), link_name(nonfinal).nil? ? nil : File.join(path_prefix, 'mac', link_name(nonfinal))]
|
152
|
-
end
|
152
|
+
return File.join(prefix, 'mac', link)
|
153
153
|
when 'msi'
|
154
|
-
|
155
|
-
[File.join(path_prefix, 'windows'), nil]
|
156
|
-
else
|
157
|
-
[File.join(path_prefix, platform, repo_name(nonfinal)), link_name(nonfinal).nil? ? nil : File.join(path_prefix, platform, link_name(nonfinal))]
|
158
|
-
end
|
154
|
+
return File.join(prefix, platform, link)
|
159
155
|
else
|
160
|
-
raise "
|
156
|
+
raise "Error: Unknown package format '#{package_format}'"
|
161
157
|
end
|
162
158
|
end
|
163
159
|
|
164
|
-
#
|
165
|
-
#
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
160
|
+
# Given platform information, create symlink target (base_path) and link path in the
|
161
|
+
# form of a 2-element array
|
162
|
+
def artifacts_base_path_and_link_path(platform_tag, prefix = 'artifacts', is_nonfinal = false)
|
163
|
+
platform_name, _ = Pkg::Platforms.parse_platform_tag(platform_tag)
|
164
|
+
package_format = Pkg::Platforms.package_format_for_tag(platform_tag)
|
165
|
+
|
166
|
+
path_data = {
|
167
|
+
is_nonfinal: is_nonfinal,
|
168
|
+
link: link_name(is_nonfinal),
|
169
|
+
package_format: package_format,
|
170
|
+
platform_name: platform_name,
|
171
|
+
platform_tag: platform_tag,
|
172
|
+
prefix: prefix
|
173
|
+
}
|
174
|
+
|
175
|
+
return [
|
176
|
+
construct_base_path(path_data),
|
177
|
+
construct_link_path(path_data)
|
178
|
+
]
|
179
|
+
end
|
180
|
+
|
172
181
|
def artifacts_path(platform_tag, path_prefix = 'artifacts', nonfinal = false)
|
173
182
|
base_path, _ = artifacts_base_path_and_link_path(platform_tag, path_prefix, nonfinal)
|
174
183
|
platform, version, architecture = Pkg::Platforms.parse_platform_tag(platform_tag)
|
@@ -176,31 +185,15 @@ module Pkg::Paths
|
|
176
185
|
|
177
186
|
case package_format
|
178
187
|
when 'rpm'
|
179
|
-
|
180
|
-
File.join(base_path, architecture)
|
181
|
-
else
|
182
|
-
File.join(base_path, platform, version, architecture)
|
183
|
-
end
|
188
|
+
File.join(base_path, platform, version, architecture)
|
184
189
|
when 'swix'
|
185
|
-
|
186
|
-
File.join(base_path, architecture)
|
187
|
-
else
|
188
|
-
File.join(base_path, version, architecture)
|
189
|
-
end
|
190
|
+
File.join(base_path, version, architecture)
|
190
191
|
when 'deb'
|
191
192
|
base_path
|
192
193
|
when 'svr4', 'ips'
|
193
|
-
|
194
|
-
base_path
|
195
|
-
else
|
196
|
-
File.join(base_path, version)
|
197
|
-
end
|
194
|
+
File.join(base_path, version)
|
198
195
|
when 'dmg'
|
199
|
-
|
200
|
-
File.join(base_path, architecture)
|
201
|
-
else
|
202
|
-
File.join(base_path, version, architecture)
|
203
|
-
end
|
196
|
+
File.join(base_path, version, architecture)
|
204
197
|
when 'msi'
|
205
198
|
base_path
|
206
199
|
else
|
data/lib/packaging/platforms.rb
CHANGED
@@ -47,26 +47,7 @@ module Pkg
|
|
47
47
|
},
|
48
48
|
},
|
49
49
|
|
50
|
-
'cumulus' => {
|
51
|
-
'2.2' => {
|
52
|
-
codename: 'cumulus',
|
53
|
-
architectures: ['amd64'],
|
54
|
-
source_architecture: 'source',
|
55
|
-
package_format: 'deb',
|
56
|
-
source_package_formats: DEBIAN_SOURCE_FORMATS,
|
57
|
-
repo: true,
|
58
|
-
},
|
59
|
-
},
|
60
|
-
|
61
50
|
'debian' => {
|
62
|
-
'7' => {
|
63
|
-
codename: 'wheezy',
|
64
|
-
architectures: ['amd64', 'i386'],
|
65
|
-
source_architecture: 'source',
|
66
|
-
package_format: 'deb',
|
67
|
-
source_package_formats: DEBIAN_SOURCE_FORMATS,
|
68
|
-
repo: true,
|
69
|
-
},
|
70
51
|
'8' => {
|
71
52
|
codename: 'jessie',
|
72
53
|
architectures: ['amd64', 'i386', 'powerpc'],
|
@@ -103,7 +84,7 @@ module Pkg
|
|
103
84
|
repo: true,
|
104
85
|
},
|
105
86
|
'6' => {
|
106
|
-
architectures: ['x86_64', 'i386'
|
87
|
+
architectures: ['x86_64', 'i386'],
|
107
88
|
source_architecture: 'SRPMS',
|
108
89
|
package_format: 'rpm',
|
109
90
|
source_package_formats: ['src.rpm'],
|
@@ -111,7 +92,7 @@ module Pkg
|
|
111
92
|
repo: true,
|
112
93
|
},
|
113
94
|
'7' => {
|
114
|
-
architectures: ['x86_64', '
|
95
|
+
architectures: ['x86_64', 'ppc64le', 'aarch64'],
|
115
96
|
source_architecture: 'SRPMS',
|
116
97
|
package_format: 'rpm',
|
117
98
|
source_package_formats: ['src.rpm'],
|
@@ -137,78 +118,6 @@ module Pkg
|
|
137
118
|
},
|
138
119
|
|
139
120
|
'fedora' => {
|
140
|
-
'f25' => {
|
141
|
-
architectures: ['x86_64', 'i386'],
|
142
|
-
source_architecture: 'SRPMS',
|
143
|
-
package_format: 'rpm',
|
144
|
-
source_package_formats: ['src.rpm'],
|
145
|
-
signature_format: 'v4',
|
146
|
-
repo: true,
|
147
|
-
},
|
148
|
-
'f26' => {
|
149
|
-
architectures: ['x86_64'],
|
150
|
-
source_architecture: 'SRPMS',
|
151
|
-
package_format: 'rpm',
|
152
|
-
source_package_formats: ['src.rpm'],
|
153
|
-
signature_format: 'v4',
|
154
|
-
repo: true,
|
155
|
-
},
|
156
|
-
'f27' => {
|
157
|
-
architectures: ['x86_64'],
|
158
|
-
source_architecture: 'SRPMS',
|
159
|
-
package_format: 'rpm',
|
160
|
-
source_package_formats: ['src.rpm'],
|
161
|
-
signature_format: 'v4',
|
162
|
-
repo: true,
|
163
|
-
},
|
164
|
-
'f28' => {
|
165
|
-
architectures: ['x86_64'],
|
166
|
-
source_architecture: 'SRPMS',
|
167
|
-
package_format: 'rpm',
|
168
|
-
source_package_formats: ['src.rpm'],
|
169
|
-
signature_format: 'v4',
|
170
|
-
repo: true,
|
171
|
-
},
|
172
|
-
'25' => {
|
173
|
-
architectures: ['x86_64', 'i386'],
|
174
|
-
source_architecture: 'SRPMS',
|
175
|
-
package_format: 'rpm',
|
176
|
-
source_package_formats: ['src.rpm'],
|
177
|
-
signature_format: 'v4',
|
178
|
-
repo: true,
|
179
|
-
},
|
180
|
-
'26' => {
|
181
|
-
architectures: ['x86_64'],
|
182
|
-
source_architecture: 'SRPMS',
|
183
|
-
package_format: 'rpm',
|
184
|
-
source_package_formats: ['src.rpm'],
|
185
|
-
signature_format: 'v4',
|
186
|
-
repo: true,
|
187
|
-
},
|
188
|
-
'27' => {
|
189
|
-
architectures: ['x86_64'],
|
190
|
-
source_architecture: 'SRPMS',
|
191
|
-
package_format: 'rpm',
|
192
|
-
source_package_formats: ['src.rpm'],
|
193
|
-
signature_format: 'v4',
|
194
|
-
repo: true,
|
195
|
-
},
|
196
|
-
'28' => {
|
197
|
-
architectures: ['x86_64'],
|
198
|
-
source_architecture: 'SRPMS',
|
199
|
-
package_format: 'rpm',
|
200
|
-
source_package_formats: ['src.rpm'],
|
201
|
-
signature_format: 'v4',
|
202
|
-
repo: true,
|
203
|
-
},
|
204
|
-
'29' => {
|
205
|
-
architectures: ['x86_64'],
|
206
|
-
source_architecture: 'SRPMS',
|
207
|
-
package_format: 'rpm',
|
208
|
-
source_package_formats: ['src.rpm'],
|
209
|
-
signature_format: 'v4',
|
210
|
-
repo: true,
|
211
|
-
},
|
212
121
|
'30' => {
|
213
122
|
architectures: ['x86_64'],
|
214
123
|
source_architecture: 'SRPMS',
|
@@ -228,26 +137,6 @@ module Pkg
|
|
228
137
|
},
|
229
138
|
|
230
139
|
'osx' => {
|
231
|
-
'10.10' => {
|
232
|
-
architectures: ['x86_64'],
|
233
|
-
package_format: 'dmg',
|
234
|
-
repo: false,
|
235
|
-
},
|
236
|
-
'10.11' => {
|
237
|
-
architectures: ['x86_64'],
|
238
|
-
package_format: 'dmg',
|
239
|
-
repo: false,
|
240
|
-
},
|
241
|
-
'10.12' => {
|
242
|
-
architectures: ['x86_64'],
|
243
|
-
package_format: 'dmg',
|
244
|
-
repo: false,
|
245
|
-
},
|
246
|
-
'10.13' => {
|
247
|
-
architectures: ['x86_64'],
|
248
|
-
package_format: 'dmg',
|
249
|
-
repo: false,
|
250
|
-
},
|
251
140
|
'10.14' => {
|
252
141
|
architectures: ['x86_64'],
|
253
142
|
package_format: 'dmg',
|
@@ -273,7 +162,7 @@ module Pkg
|
|
273
162
|
|
274
163
|
'sles' => {
|
275
164
|
'11' => {
|
276
|
-
architectures: ['x86_64', 'i386'
|
165
|
+
architectures: ['x86_64', 'i386'],
|
277
166
|
source_architecture: 'SRPMS',
|
278
167
|
package_format: 'rpm',
|
279
168
|
source_package_formats: ['src.rpm'],
|
@@ -281,7 +170,7 @@ module Pkg
|
|
281
170
|
repo: true,
|
282
171
|
},
|
283
172
|
'12' => {
|
284
|
-
architectures: ['x86_64', '
|
173
|
+
architectures: ['x86_64', 'ppc64le'],
|
285
174
|
source_architecture: 'SRPMS',
|
286
175
|
package_format: 'rpm',
|
287
176
|
source_package_formats: ['src.rpm'],
|
@@ -41,10 +41,10 @@ describe 'artifactory.rb' do
|
|
41
41
|
:repo_config => '',
|
42
42
|
:additional_artifacts => ["./eos/4/PC1/i386/puppet-agent-extras-5.3.1.34.gf65f9ef-1.eos4.i386.swix"],
|
43
43
|
},
|
44
|
-
'osx-10.
|
45
|
-
:artifact => "./apple/10.
|
44
|
+
'osx-10.15-x86_64' => {
|
45
|
+
:artifact => "./apple/10.15/PC1/x86_64/puppet-agent-5.3.1.34.gf65f9ef-1.osx10.15.dmg",
|
46
46
|
:repo_config => '',
|
47
|
-
:additional_artifacts => ["./apple/10.
|
47
|
+
:additional_artifacts => ["./apple/10.15/PC1/x86_64/puppet-agent-extras-5.3.1.34.gf65f9ef-1.osx10.15.dmg"],
|
48
48
|
},
|
49
49
|
'solaris-10-sparc' => {
|
50
50
|
:artifact => "./solaris/10/PC1/puppet-agent-5.3.1.34.gf65f9ef-1.sparc.pkg.gz",
|
@@ -77,7 +77,7 @@ describe 'artifactory.rb' do
|
|
77
77
|
:package_name => 'path/to/a/buster/package/puppetdb_5.3.1.34.gf65f9ef-1buster_all.deb',
|
78
78
|
:all_package_names => ['puppetdb_5.3.1.34.gf65f9ef-1buster_all.deb', 'puppetdb-termini_5.3.1.34.gf65f9ef-1buster_all.deb']
|
79
79
|
},
|
80
|
-
'windows-2012-x86' => {
|
80
|
+
'windows-2012-x86' => {
|
81
81
|
:toplevel_repo => 'generic',
|
82
82
|
:repo_subdirectories => "#{default_repo_name}/#{project}/#{project_version}/windows-x86",
|
83
83
|
:package_name => 'path/to/a/windows/package/puppet-agent-5.3.1.34-x86.msi',
|
@@ -95,11 +95,11 @@ describe 'artifactory.rb' do
|
|
95
95
|
:package_name => 'path/to/an/eos/4/package/puppet-agent-5.3.1.34.gf65f9ef-1.eos4.i386.swix',
|
96
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
97
|
},
|
98
|
-
'osx-10.
|
98
|
+
'osx-10.15-x86_64' => {
|
99
99
|
:toplevel_repo => 'generic',
|
100
|
-
:repo_subdirectories => "#{default_repo_name}/#{project}/#{project_version}/osx-10.
|
101
|
-
:package_name => 'path/to/an/osx/10.
|
102
|
-
:all_package_names => ['puppet-agent-5.3.1.34.gf65f9ef-1.osx10.
|
100
|
+
:repo_subdirectories => "#{default_repo_name}/#{project}/#{project_version}/osx-10.15-x86_64",
|
101
|
+
:package_name => 'path/to/an/osx/10.15/package/puppet-agent-5.3.1.34.gf65f9ef-1.osx10.15.dmg',
|
102
|
+
: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
103
|
},
|
104
104
|
'solaris-10-sparc' => {
|
105
105
|
:toplevel_repo => 'generic',
|
@@ -125,7 +125,6 @@ describe 'artifactory.rb' do
|
|
125
125
|
expect(artifact.location_for(platform_tag)).to match_array([
|
126
126
|
platform_tag_data[:toplevel_repo],
|
127
127
|
platform_tag_data[:repo_subdirectories],
|
128
|
-
File.join('pool', platform_tag_data[:repo_subdirectories])
|
129
128
|
])
|
130
129
|
end
|
131
130
|
else
|
@@ -133,7 +132,6 @@ describe 'artifactory.rb' do
|
|
133
132
|
expect(artifact.location_for(platform_tag)).to match_array([
|
134
133
|
platform_tag_data[:toplevel_repo],
|
135
134
|
platform_tag_data[:repo_subdirectories],
|
136
|
-
platform_tag_data[:repo_subdirectories]
|
137
135
|
])
|
138
136
|
end
|
139
137
|
end
|
@@ -142,7 +140,6 @@ describe 'artifactory.rb' do
|
|
142
140
|
expect(artifact.location_for('generic')).to match_array([
|
143
141
|
'generic',
|
144
142
|
File.join(default_repo_name, project, project_version),
|
145
|
-
File.join(default_repo_name, project, project_version)
|
146
143
|
])
|
147
144
|
end
|
148
145
|
end
|
@@ -203,22 +203,20 @@ describe "Pkg::Config" do
|
|
203
203
|
describe "#platform_data" do
|
204
204
|
platform_tags = [
|
205
205
|
'eos-4-i386',
|
206
|
-
'osx-10.
|
206
|
+
'osx-10.15-x86_64',
|
207
207
|
'cisco-wrlinux-7-x86_64',
|
208
208
|
'ubuntu-16.04-i386',
|
209
|
-
'
|
210
|
-
'el-6-s390x',
|
209
|
+
'el-6-x86_64',
|
211
210
|
'el-7-ppc64le',
|
212
211
|
'sles-12-x86_64',
|
213
212
|
]
|
214
213
|
|
215
214
|
artifacts = \
|
216
215
|
"./artifacts/eos/4/PC1/i386/puppet-agent-5.3.2-1.eos4.i386.swix\n" \
|
217
|
-
"./artifacts/apple/10.
|
216
|
+
"./artifacts/apple/10.15/PC1/x86_64/puppet-agent-5.3.2.658.gc79ef9a-1.osx10.15.dmg\n" \
|
218
217
|
"./artifacts/cisco-wrlinux/7/PC1/x86_64/puppet-agent-5.3.2-1.cisco_wrlinux7.x86_64.rpm\n" \
|
219
218
|
"./artifacts/deb/xenial/PC1/puppet-agent_5.3.2-1xenial_i386.deb\n" \
|
220
|
-
"./artifacts/
|
221
|
-
"./artifacts/el/6/PC1/s390x/puppet-agent-5.3.2.658.gc79ef9a-1.el6.s390x.rpm\n" \
|
219
|
+
"./artifacts/el/6/PC1/x86_64/puppet-agent-5.3.2.658.gc79ef9a-1.el6.x86_64.rpm\n" \
|
222
220
|
"./artifacts/el/7/PC1/ppc64le/puppet-agent-5.3.2-1.el7.ppc64le.rpm\n" \
|
223
221
|
"./artifacts/sles/12/PC1/x86_64/puppet-agent-5.3.2-1.sles12.x86_64.rpm"
|
224
222
|
|
@@ -226,7 +224,7 @@ describe "Pkg::Config" do
|
|
226
224
|
"./artifacts/aix/6.1/PC1/ppc/puppet-agent-5.3.2-1.aix6.1.ppc.rpm"
|
227
225
|
|
228
226
|
fedora_artifacts = \
|
229
|
-
"./artifacts/fedora/
|
227
|
+
"./artifacts/fedora/31/PC1/x86_64/puppet-agent-5.3.2-1.fc31.x86_64.rpm"
|
230
228
|
|
231
229
|
windows_artifacts = \
|
232
230
|
"./artifacts/windows/puppet-agent-x64.msi\n" \
|
@@ -283,8 +281,8 @@ describe "Pkg::Config" do
|
|
283
281
|
it "should not use 'f' in fedora platform tags" do
|
284
282
|
allow(Pkg::Util::Net).to receive(:remote_ssh_cmd).and_return(fedora_artifacts, nil)
|
285
283
|
data = Pkg::Config.platform_data
|
286
|
-
expect(data).to include('fedora-
|
287
|
-
expect(data).not_to include('fedora-
|
284
|
+
expect(data).to include('fedora-31-x86_64')
|
285
|
+
expect(data).not_to include('fedora-f31-x86_64')
|
288
286
|
end
|
289
287
|
|
290
288
|
it "should collect packages whose extname differ from package_format" do
|
@@ -25,17 +25,15 @@ describe 'Pkg::Paths' do
|
|
25
25
|
'pkg/ubuntu-16.04-amd64/puppet-agent_4.99.0-1xenial_amd64.deb' => 'ubuntu-16.04-amd64',
|
26
26
|
'pkg/windows-x64/puppet-agent-4.99.0-x64.msi' => 'windows-2012-x64',
|
27
27
|
'artifacts/el/6/products/x86_64/pe-r10k-2.5.4.3-1.el6.x86_64.rpm' => 'el-6-x86_64',
|
28
|
-
'pkg/deb/trusty/pe-r10k_2.5.4.3-1trusty_amd64.deb' => 'ubuntu-14.04-amd64',
|
29
28
|
'pkg/pe/rpm/el-6-i386/pe-puppetserver-2017.3.0.3-1.el6.noarch.rpm' => 'el-6-i386',
|
30
29
|
'pkg/deb/trusty/pe-r10k_2.5.4.3-1trusty_amd64.deb' => 'ubuntu-14.04-amd64',
|
31
30
|
'pkg/pe/deb/xenial/pe-puppetserver_2017.3.0.3-1puppet1_all.deb' => 'ubuntu-16.04-amd64',
|
32
31
|
'pkg/pe/deb/xenial/super-trusty-package_1.0.0-1puppet1_all.deb' => 'ubuntu-16.04-amd64',
|
33
|
-
'artifacts/deb/
|
32
|
+
'artifacts/deb/stretch/PC1/puppetdb_4.3.1-1puppetlabs1_all.deb' => 'debian-9-amd64',
|
34
33
|
'pkg/el/7/PC1/x86_64/puppetdb-4.3.1-1.el7.noarch.rpm' => 'el-7-x86_64',
|
35
|
-
'pkg/apple/10.
|
36
|
-
'artifacts/mac/10.
|
34
|
+
'pkg/apple/10.14/PC1/x86_64/puppet-agent-1.9.0-1.osx10.14.dmg' => 'osx-10.14-x86_64',
|
35
|
+
'artifacts/mac/10.15/PC1/x86_64/puppet-agent-1.9.0-1.osx10.15.dmg' => 'osx-10.15-x86_64',
|
37
36
|
'artifacts/eos/4/PC1/i386/puppet-agent-1.9.0-1.eos4.i386.swix' => 'eos-4-i386',
|
38
|
-
'pkg/deb/cumulus/puppet5/puppet-agent_1.4.1.2904.g8023dd1-1cumulus_amd64.deb' => 'cumulus-2.2-amd64',
|
39
37
|
'pkg/windows/puppet-agent-1.9.0-x86.msi' => 'windows-2012-x86',
|
40
38
|
'artifacts/ubuntu-16.04-i386/puppetserver_5.0.1-0.1SNAPSHOT.2017.07.27T2346puppetlabs1.debian.tar.gz' => 'ubuntu-16.04-source',
|
41
39
|
'http://saturn.puppetlabs.net/deb_repos/1234abcd/repos/apt/xenial' => 'ubuntu-16.04-amd64',
|
@@ -97,8 +95,8 @@ describe 'Pkg::Paths' do
|
|
97
95
|
expect(Pkg::Paths.artifacts_path('el-7-x86_64')).to eq('artifacts/puppet5/el/7/x86_64')
|
98
96
|
end
|
99
97
|
|
100
|
-
it 'should be correct for
|
101
|
-
expect(Pkg::Paths.artifacts_path('ubuntu-
|
98
|
+
it 'should be correct for bionic' do
|
99
|
+
expect(Pkg::Paths.artifacts_path('ubuntu-18.04-amd64')).to eq('artifacts/bionic/puppet5')
|
102
100
|
end
|
103
101
|
|
104
102
|
it 'should be correct for solaris 11' do
|
@@ -106,7 +104,7 @@ describe 'Pkg::Paths' do
|
|
106
104
|
end
|
107
105
|
|
108
106
|
it 'should be correct for osx' do
|
109
|
-
expect(Pkg::Paths.artifacts_path('osx-10.
|
107
|
+
expect(Pkg::Paths.artifacts_path('osx-10.15-x86_64')).to eq('artifacts/mac/puppet5/10.15/x86_64')
|
110
108
|
end
|
111
109
|
|
112
110
|
it 'should be correct for windows' do
|
@@ -211,32 +209,6 @@ describe 'Pkg::Paths' do
|
|
211
209
|
end
|
212
210
|
end
|
213
211
|
|
214
|
-
describe '#is_legacy_repo?' do
|
215
|
-
it 'returns true for empty strings' do
|
216
|
-
expect(Pkg::Paths.is_legacy_repo?('')).to be_true
|
217
|
-
end
|
218
|
-
|
219
|
-
it 'returns true for PC1' do
|
220
|
-
expect(Pkg::Paths.is_legacy_repo?('PC1')).to be_true
|
221
|
-
end
|
222
|
-
|
223
|
-
it 'returns true for foopuppetbar' do
|
224
|
-
expect(Pkg::Paths.is_legacy_repo?('foopuppetbar')).to be_true
|
225
|
-
end
|
226
|
-
|
227
|
-
it 'returns false for puppet5' do
|
228
|
-
expect(Pkg::Paths.is_legacy_repo?('puppet5')).to be_false
|
229
|
-
end
|
230
|
-
|
231
|
-
it 'returns false for puppet8-nightly' do
|
232
|
-
expect(Pkg::Paths.is_legacy_repo?('puppet8-nightly')).to be_false
|
233
|
-
end
|
234
|
-
|
235
|
-
it 'returns false for puppet' do
|
236
|
-
expect(Pkg::Paths.is_legacy_repo?('puppet')).to be_false
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
212
|
describe '#remote_repo_base' do
|
241
213
|
before :each do
|
242
214
|
allow(Pkg::Config).to receive(:yum_repo_path).and_return('foo')
|
@@ -251,7 +223,7 @@ describe 'Pkg::Paths' do
|
|
251
223
|
expect(Pkg::Paths.remote_repo_base('ubuntu-18.04-amd64')).to eq('bar')
|
252
224
|
end
|
253
225
|
it 'returns nonfinal_yum_repo_path for nonfinal rpms' do
|
254
|
-
expect(Pkg::Paths.remote_repo_base('fedora-
|
226
|
+
expect(Pkg::Paths.remote_repo_base('fedora-31-x86_64', true)).to eq('foo-nightly')
|
255
227
|
end
|
256
228
|
it 'returns nonfinal_apt_repo_path for nonfinal debs' do
|
257
229
|
expect(Pkg::Paths.remote_repo_base('debian-9-amd64', true)).to eq('bar-nightly')
|
@@ -305,7 +277,7 @@ describe 'Pkg::Paths' do
|
|
305
277
|
expect(Pkg::Paths.release_package_link_path('debian-9-i386', true)).to eq("#{nonfinal_apt_repo_path}/#{nonfinal_repo_name}-release-stretch.deb")
|
306
278
|
end
|
307
279
|
it 'returns nil for package formats that do not have release packages' do
|
308
|
-
expect(Pkg::Paths.release_package_link_path('osx-10.
|
280
|
+
expect(Pkg::Paths.release_package_link_path('osx-10.15-x86_64')).to eq(nil)
|
309
281
|
expect(Pkg::Paths.release_package_link_path('windows-2012-x86')).to eq(nil)
|
310
282
|
end
|
311
283
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe 'Pkg::Platforms' do
|
4
4
|
describe '#by_package_format' do
|
5
5
|
it 'should return an array of platforms that use a given format' do
|
6
|
-
deb_platforms = ['
|
6
|
+
deb_platforms = ['debian', 'ubuntu']
|
7
7
|
rpm_platforms = ['aix', 'cisco-wrlinux', 'el', 'fedora', 'redhatfips', 'sles']
|
8
8
|
expect(Pkg::Platforms.by_package_format('deb')).to match_array(deb_platforms)
|
9
9
|
expect(Pkg::Platforms.by_package_format('rpm')).to match_array(rpm_platforms)
|
@@ -19,7 +19,7 @@ describe 'Pkg::Platforms' do
|
|
19
19
|
|
20
20
|
describe '#supported_platforms' do
|
21
21
|
it 'should return all supported platforms' do
|
22
|
-
platforms = ['aix', 'cisco-wrlinux', '
|
22
|
+
platforms = ['aix', 'cisco-wrlinux', 'debian', 'el', 'eos', 'fedora', 'osx', 'redhatfips', 'sles', 'solaris', 'ubuntu', 'windows', 'windowsfips']
|
23
23
|
expect(Pkg::Platforms.supported_platforms).to match_array(platforms)
|
24
24
|
end
|
25
25
|
end
|
@@ -36,7 +36,7 @@ describe 'Pkg::Platforms' do
|
|
36
36
|
|
37
37
|
describe '#codenames' do
|
38
38
|
it 'should return all codenames for a given platform' do
|
39
|
-
codenames = ['focal', 'bionic', 'buster', 'cosmic', '
|
39
|
+
codenames = ['focal', 'bionic', 'buster', 'cosmic', 'jessie', 'stretch', 'trusty', 'xenial']
|
40
40
|
expect(Pkg::Platforms.codenames).to match_array(codenames)
|
41
41
|
end
|
42
42
|
end
|
@@ -59,27 +59,27 @@ describe 'Pkg::Platforms' do
|
|
59
59
|
|
60
60
|
describe '#arches_for_codename' do
|
61
61
|
it 'should return an array of arches corresponding to a given codename' do
|
62
|
-
expect(Pkg::Platforms.arches_for_codename('
|
62
|
+
expect(Pkg::Platforms.arches_for_codename('xenial')).to match_array(['amd64', 'i386', 'ppc64el'])
|
63
63
|
end
|
64
64
|
|
65
65
|
it 'should be able to include source archietectures' do
|
66
|
-
expect(Pkg::Platforms.arches_for_codename('
|
66
|
+
expect(Pkg::Platforms.arches_for_codename('xenial', true)).to match_array(["amd64", "i386", "ppc64el", "source"])
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
70
|
describe '#codename_to_tags' do
|
71
71
|
it 'should return an array of platform tags corresponding to a given codename' do
|
72
|
-
expect(Pkg::Platforms.codename_to_tags('
|
72
|
+
expect(Pkg::Platforms.codename_to_tags('xenial')).to match_array(['ubuntu-16.04-i386', 'ubuntu-16.04-amd64', "ubuntu-16.04-ppc64el"])
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
76
|
describe '#arches_for_platform_version' do
|
77
77
|
it 'should return an array of arches for a given platform and version' do
|
78
|
-
expect(Pkg::Platforms.arches_for_platform_version('sles', '
|
78
|
+
expect(Pkg::Platforms.arches_for_platform_version('sles', '12')).to match_array(['x86_64', 'ppc64le'])
|
79
79
|
end
|
80
80
|
|
81
81
|
it 'should be able to include source architectures' do
|
82
|
-
expect(Pkg::Platforms.arches_for_platform_version('sles', '
|
82
|
+
expect(Pkg::Platforms.arches_for_platform_version('sles', '12', true)).to match_array(["SRPMS", "ppc64le", "x86_64"])
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
@@ -98,12 +98,12 @@ describe 'Pkg::Platforms' do
|
|
98
98
|
|
99
99
|
describe '#platform_lookup' do
|
100
100
|
it 'should return a hash of platform info' do
|
101
|
-
expect(Pkg::Platforms.platform_lookup('osx-10.
|
101
|
+
expect(Pkg::Platforms.platform_lookup('osx-10.15-x86_64')).to be_instance_of(Hash)
|
102
102
|
end
|
103
103
|
|
104
104
|
it 'should include at least arch and package format keys' do
|
105
|
-
expect(Pkg::Platforms.platform_lookup('osx-10.
|
106
|
-
expect(Pkg::Platforms.platform_lookup('osx-10.
|
105
|
+
expect(Pkg::Platforms.platform_lookup('osx-10.15-x86_64').keys).to include(:architectures)
|
106
|
+
expect(Pkg::Platforms.platform_lookup('osx-10.15-x86_64').keys).to include(:package_format)
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
@@ -137,7 +137,7 @@ describe 'Pkg::Platforms' do
|
|
137
137
|
'windows-2012' => ['windows', '2012', ''],
|
138
138
|
'redhatfips-7-x86_64' => ['redhatfips', '7', 'x86_64'],
|
139
139
|
'el-7-SRPMS' => ['el', '7', 'SRPMS'],
|
140
|
-
'ubuntu-
|
140
|
+
'ubuntu-16.04-source' => ['ubuntu', '16.04', 'source'],
|
141
141
|
}
|
142
142
|
|
143
143
|
fail_cases = [
|
@@ -12,7 +12,7 @@ describe 'Pkg::Retrieve' do
|
|
12
12
|
'aix-6.1-power' => {:artifact => './aix/6.1/PC1/ppc/puppet-agent-5.3.2.155.gb25e649-1.aix6.1.ppc.rpm'},
|
13
13
|
'el-7-x86_64' => {:artifact => './el/7/PC1/x86_64/puppet-agent-5.3.2.155.gb25e649-1.el7.x86_64.rpm'},
|
14
14
|
'osx-10.11-x86_64' => {:artifact => './apple/10.11/PC1/x86_64/puppet-agent-5.3.2.155.gb25e649-1.osx10.11.dmg'},
|
15
|
-
'sles-11-
|
15
|
+
'sles-11-i386' => {:artifact => './sles/11/PC1/i386/puppet-agent-5.3.2.155.gb25e649-1.sles11.i386.rpm'},
|
16
16
|
'solaris-10-sparc' => {:artifact => './solaris/10/PC1/puppet-agent-5.3.2.155.gb25e649-1.sparc.pkg.gz'},
|
17
17
|
'ubuntu-16.04-amd64' => {:artifact => './deb/xenial/PC1/puppet-agent_5.3.2.155.gb25e649-1xenial_amd64.deb'},
|
18
18
|
'windows-2012-x64' => {:artifact => './windows/puppet-agent-x64.msi'},
|
@@ -74,7 +74,6 @@ DOC
|
|
74
74
|
] }
|
75
75
|
let(:v4_rpms) { [
|
76
76
|
"#{rpm_directory}/el/7/PC1/aarch64/puppet-agent-5.5.3-1.el7.aarch64.rpm",
|
77
|
-
"#{rpm_directory}/sles/12/PC1/s390x/puppet-agent-5.5.3-1.sles12.s390x.rpm",
|
78
77
|
] }
|
79
78
|
let(:rpms) { rpms_not_to_sign + v3_rpms + v4_rpms }
|
80
79
|
let(:already_signed_rpms) { [
|
@@ -43,25 +43,21 @@ describe '#Pkg::Util::Ship' do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
local_pkgs = [
|
46
|
-
'pkg/deb/
|
47
|
-
'pkg/deb/wheezy/puppet5/puppet-agent_1.4.1.2904.g8023dd1-1wheezy_i386.deb',
|
46
|
+
'pkg/deb/stretch/puppet5/puppet-agent_1.4.1.2904.g8023dd1-1stretch_i386.deb',
|
48
47
|
'pkg/el/5/puppet5/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.el5.x86_64.rpm',
|
49
48
|
'pkg/sles/11/puppet5/i386/puppet-agent-1.4.1.2904.g8023dd1-1.sles11.i386.rpm',
|
50
49
|
'pkg/sles/12/puppet5/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.sles12.x86_64.rpm',
|
51
50
|
'pkg/mac/10.15/puppet5/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.osx10.15.dmg',
|
52
|
-
'pkg/mac/10.10/puppet5/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.osx10.10.dmg',
|
53
51
|
'pkg/eos/4/puppet5/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix',
|
54
52
|
'pkg/eos/4/puppet5/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix.asc',
|
55
53
|
'pkg/windows/puppet5/puppet-agent-1.4.1.2904.g8023dd1-x86.msi',
|
56
54
|
]
|
57
55
|
new_pkgs = [
|
58
|
-
'pkg/
|
59
|
-
'pkg/wheezy/puppet5/puppet-agent_1.4.1.2904.g8023dd1-1wheezy_i386.deb',
|
56
|
+
'pkg/stretch/puppet5/puppet-agent_1.4.1.2904.g8023dd1-1stretch_i386.deb',
|
60
57
|
'pkg/puppet5/el/5/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.el5.x86_64.rpm',
|
61
58
|
'pkg/puppet5/sles/11/i386/puppet-agent-1.4.1.2904.g8023dd1-1.sles11.i386.rpm',
|
62
59
|
'pkg/puppet5/sles/12/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.sles12.x86_64.rpm',
|
63
60
|
'pkg/mac/puppet5/10.15/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.osx10.15.dmg',
|
64
|
-
'pkg/mac/puppet5/10.10/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.osx10.10.dmg',
|
65
61
|
'pkg/eos/puppet5/4/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix',
|
66
62
|
'pkg/eos/puppet5/4/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix.asc',
|
67
63
|
'pkg/windows/puppet5/puppet-agent-1.4.1.2904.g8023dd1-x86.msi',
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packaging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.99.
|
4
|
+
version: 0.99.62
|
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: rspec
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- lib/packaging.rb
|
108
108
|
- lib/packaging/archive.rb
|
109
109
|
- lib/packaging/artifactory.rb
|
110
|
+
- lib/packaging/artifactory/extensions.rb
|
110
111
|
- lib/packaging/config.rb
|
111
112
|
- lib/packaging/config/params.rb
|
112
113
|
- lib/packaging/deb.rb
|
@@ -245,27 +246,27 @@ specification_version: 4
|
|
245
246
|
summary: Puppet Labs' packaging automation
|
246
247
|
test_files:
|
247
248
|
- spec/lib/packaging_spec.rb
|
249
|
+
- spec/lib/packaging/sign_spec.rb
|
250
|
+
- spec/lib/packaging/artifactory_spec.rb
|
251
|
+
- spec/lib/packaging/deb_spec.rb
|
252
|
+
- spec/lib/packaging/platforms_spec.rb
|
253
|
+
- spec/lib/packaging/gem_spec.rb
|
248
254
|
- spec/lib/packaging/config_spec.rb
|
249
255
|
- spec/lib/packaging/retrieve_spec.rb
|
250
|
-
- spec/lib/packaging/
|
251
|
-
- spec/lib/packaging/
|
252
|
-
- spec/lib/packaging/
|
253
|
-
- spec/lib/packaging/deb_spec.rb
|
254
|
-
- spec/lib/packaging/sign_spec.rb
|
255
|
-
- spec/lib/packaging/deb/repo_spec.rb
|
256
|
+
- spec/lib/packaging/util/rake_utils_spec.rb
|
257
|
+
- spec/lib/packaging/util/misc_spec.rb
|
258
|
+
- spec/lib/packaging/util/jenkins_spec.rb
|
256
259
|
- spec/lib/packaging/util/net_spec.rb
|
257
|
-
- spec/lib/packaging/util/ship_spec.rb
|
258
|
-
- spec/lib/packaging/util/gpg_spec.rb
|
259
260
|
- spec/lib/packaging/util/file_spec.rb
|
260
|
-
- spec/lib/packaging/util/os_spec.rb
|
261
|
-
- spec/lib/packaging/util/git_spec.rb
|
262
261
|
- spec/lib/packaging/util/git_tag_spec.rb
|
263
|
-
- spec/lib/packaging/util/rake_utils_spec.rb
|
264
|
-
- spec/lib/packaging/util/jenkins_spec.rb
|
265
262
|
- spec/lib/packaging/util/execution_spec.rb
|
263
|
+
- spec/lib/packaging/util/gpg_spec.rb
|
264
|
+
- spec/lib/packaging/util/git_spec.rb
|
265
|
+
- spec/lib/packaging/util/ship_spec.rb
|
266
266
|
- spec/lib/packaging/util/version_spec.rb
|
267
|
-
- spec/lib/packaging/util/
|
268
|
-
- spec/lib/packaging/
|
269
|
-
- spec/lib/packaging/
|
267
|
+
- spec/lib/packaging/util/os_spec.rb
|
268
|
+
- spec/lib/packaging/repo_spec.rb
|
269
|
+
- spec/lib/packaging/deb/repo_spec.rb
|
270
|
+
- spec/lib/packaging/tar_spec.rb
|
270
271
|
- spec/lib/packaging/paths_spec.rb
|
271
|
-
- spec/lib/packaging/
|
272
|
+
- spec/lib/packaging/rpm/repo_spec.rb
|