packaging 0.99.61 → 0.99.62
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/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
|