packaging 0.88.77 → 0.99.0
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 +5 -5
- data/README.md +128 -74
- data/lib/packaging/artifactory.rb +60 -433
- data/lib/packaging/config/params.rb +7 -28
- data/lib/packaging/config.rb +50 -150
- data/lib/packaging/deb/repo.rb +19 -20
- data/lib/packaging/gem.rb +83 -41
- data/lib/packaging/ips.rb +57 -0
- data/lib/packaging/msi.rb +89 -0
- data/lib/packaging/nuget.rb +1 -1
- data/lib/packaging/osx.rb +36 -0
- data/lib/packaging/paths.rb +87 -225
- data/lib/packaging/platforms.rb +416 -443
- data/lib/packaging/repo.rb +22 -122
- data/lib/packaging/retrieve.rb +7 -36
- data/lib/packaging/rpm/repo.rb +8 -5
- data/lib/packaging/tar.rb +0 -9
- data/lib/packaging/util/date.rb +0 -5
- data/lib/packaging/util/execution.rb +2 -2
- data/lib/packaging/util/git.rb +1 -1
- data/lib/packaging/util/gpg.rb +1 -5
- data/lib/packaging/util/net.rb +37 -79
- data/lib/packaging/util/rake_utils.rb +0 -1
- data/lib/packaging/util/ship.rb +13 -142
- data/lib/packaging/util/tool.rb +1 -1
- data/lib/packaging/util/version.rb +0 -8
- data/lib/packaging/util.rb +2 -2
- data/lib/packaging.rb +3 -3
- data/spec/fixtures/config/params.yaml +2 -0
- data/spec/lib/packaging/artifactory_spec.rb +16 -66
- data/spec/lib/packaging/config_spec.rb +29 -49
- data/spec/lib/packaging/deb/repo_spec.rb +7 -16
- data/spec/lib/packaging/paths_spec.rb +56 -321
- data/spec/lib/packaging/platforms_spec.rb +21 -46
- data/spec/lib/packaging/repo_spec.rb +40 -78
- data/spec/lib/packaging/retrieve_spec.rb +8 -47
- data/spec/lib/packaging/rpm/repo_spec.rb +4 -4
- data/spec/lib/packaging/tar_spec.rb +40 -34
- data/spec/lib/packaging/util/git_tag_spec.rb +1 -1
- data/spec/lib/packaging/util/gpg_spec.rb +1 -1
- data/spec/lib/packaging/util/net_spec.rb +15 -35
- data/spec/lib/packaging/util/ship_spec.rb +63 -145
- data/spec/spec_helper.rb +14 -0
- data/tasks/00_utils.rake +6 -4
- data/tasks/apple.rake +0 -2
- data/tasks/config.rake +0 -5
- data/tasks/education.rake +5 -5
- data/tasks/fetch.rake +14 -17
- data/tasks/gem.rake +121 -134
- data/tasks/jenkins.rake +7 -51
- data/tasks/nightly_repos.rake +69 -20
- data/tasks/pe_ship.rake +11 -16
- data/tasks/retrieve.rake +6 -13
- data/tasks/ship.rake +256 -196
- data/tasks/sign.rake +135 -63
- data/tasks/tar.rake +6 -0
- data/templates/packaging.xml.erb +7 -9
- data/templates/repo.xml.erb +3 -6
- metadata +27 -80
- data/lib/packaging/archive.rb +0 -126
- data/lib/packaging/artifactory/extensions.rb +0 -94
- data/lib/packaging/config/validations.rb +0 -13
- data/lib/packaging/metrics.rb +0 -15
- data/lib/packaging/sign/deb.rb +0 -9
- data/lib/packaging/sign/dmg.rb +0 -41
- data/lib/packaging/sign/ips.rb +0 -57
- data/lib/packaging/sign/msi.rb +0 -124
- data/lib/packaging/sign/rpm.rb +0 -115
- data/lib/packaging/sign.rb +0 -8
- data/spec/lib/packaging/gem_spec.rb +0 -86
- data/spec/lib/packaging/sign_spec.rb +0 -133
- data/tasks/archive.rake +0 -69
@@ -1,86 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Pkg::Gem' do
|
4
|
-
describe '#shipped_to_rubygems?' do
|
5
|
-
let(:gem_data) {
|
6
|
-
[
|
7
|
-
{"authors"=>"Puppet Labs",
|
8
|
-
"built_at"=>"2018-12-17T00:00:00.000Z",
|
9
|
-
"created_at"=>"2018-12-18T17:31:50.852Z",
|
10
|
-
"description"=>"Puppet, an automated configuration management tool",
|
11
|
-
"downloads_count"=>32750,
|
12
|
-
"metadata"=>{},
|
13
|
-
"number"=>"6.1.0",
|
14
|
-
"summary"=>"Puppet, an automated configuration management tool",
|
15
|
-
"platform"=>"ruby",
|
16
|
-
"rubygems_version"=>"> 1.3.1",
|
17
|
-
"ruby_version"=>">= 2.3.0",
|
18
|
-
"prerelease"=>false,
|
19
|
-
"licenses"=>[],
|
20
|
-
"requirements"=>[],
|
21
|
-
"sha"=>"71ecec1f554cd7a7f23abf1523e4f0f15fb8ddbc973201234d0cc2a889566373"},
|
22
|
-
{"authors"=>"Puppet Labs",
|
23
|
-
"built_at"=>"2019-01-14T00:00:00.000Z",
|
24
|
-
"created_at"=>"2019-01-15T15:25:25.183Z",
|
25
|
-
"description"=>"Puppet, an automated configuration management tool",
|
26
|
-
"downloads_count"=>540,
|
27
|
-
"metadata"=>{},
|
28
|
-
"number"=>"6.0.5",
|
29
|
-
"summary"=>"Puppet, an automated configuration management tool",
|
30
|
-
"platform"=>"ruby",
|
31
|
-
"rubygems_version"=>"> 1.3.1",
|
32
|
-
"ruby_version"=>">= 2.3.0",
|
33
|
-
"prerelease"=>false,
|
34
|
-
"licenses"=>[],
|
35
|
-
"requirements"=>[],
|
36
|
-
"sha"=>"76811bcf4c5ab75470dd6ae5eea552347767748bd80136cac74261336b208916"},
|
37
|
-
{"authors"=>"Puppet Labs",
|
38
|
-
"built_at"=>"2018-10-31T00:00:00.000Z",
|
39
|
-
"created_at"=>"2018-11-01T17:07:19.274Z",
|
40
|
-
"description"=>"Puppet, an automated configuration management tool",
|
41
|
-
"downloads_count"=>71808,
|
42
|
-
"metadata"=>{},
|
43
|
-
"number"=>"6.0.4",
|
44
|
-
"summary"=>"Puppet, an automated configuration management tool",
|
45
|
-
"platform"=>"ruby",
|
46
|
-
"rubygems_version"=>"> 1.3.1",
|
47
|
-
"ruby_version"=>">= 2.3.0",
|
48
|
-
"prerelease"=>false,
|
49
|
-
"licenses"=>[],
|
50
|
-
"requirements"=>[],
|
51
|
-
"sha"=>"203e8b529d37260115ab7e804e607dde5e543144331b40c3c4a77c2d33445026"},
|
52
|
-
{"authors"=>"Puppet Labs",
|
53
|
-
"built_at"=>"2018-10-31T00:00:00.000Z",
|
54
|
-
"created_at"=>"2018-11-01T17:07:10.268Z",
|
55
|
-
"description"=>"Puppet, an automated configuration management tool",
|
56
|
-
"downloads_count"=>1179,
|
57
|
-
"metadata"=>{},
|
58
|
-
"number"=>"6.0.4",
|
59
|
-
"summary"=>"Puppet, an automated configuration management tool",
|
60
|
-
"platform"=>"x86-mingw32",
|
61
|
-
"rubygems_version"=>"> 1.3.1",
|
62
|
-
"ruby_version"=>">= 2.3.0",
|
63
|
-
"prerelease"=>false,
|
64
|
-
"licenses"=>[],
|
65
|
-
"requirements"=>[],
|
66
|
-
"sha"=>"e57ef7d537aaf66343615d7413d1ff759cc2b6ae95cc90514dd8f3caf0f08cb1"}
|
67
|
-
]
|
68
|
-
}
|
69
|
-
it 'returns true if gem version has already been shipped' do
|
70
|
-
allow(JSON).to receive(:parse).and_return(gem_data)
|
71
|
-
expect(Pkg::Gem.shipped_to_rubygems?('puppet', '6.0.5', 'ruby')).to be true
|
72
|
-
end
|
73
|
-
it 'returns false if the platform doesn\'t match' do
|
74
|
-
allow(JSON).to receive(:parse).and_return(gem_data)
|
75
|
-
expect(Pkg::Gem.shipped_to_rubygems?('puppet', '6.0.5', 'x64-mingw32')).to be false
|
76
|
-
end
|
77
|
-
it 'returns false if gem version has not already been shipped' do
|
78
|
-
allow(JSON).to receive(:parse).and_return(gem_data)
|
79
|
-
expect(Pkg::Gem.shipped_to_rubygems?('puppet', '6.0.9', 'ruby')).to be false
|
80
|
-
end
|
81
|
-
it 'returns false if gem is not found at all on rubygems' do
|
82
|
-
expect { Pkg::Gem.shipped_to_rubygems?('totally-not-a-real-gem', '9.9.9', 'ruby') }.to_not raise_error
|
83
|
-
expect(Pkg::Gem.shipped_to_rubygems?('totally-not-a-real-gem', '9.9.9', 'ruby')).to be false
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
@@ -1,133 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'packaging/sign'
|
3
|
-
|
4
|
-
describe 'Pkg::Sign' do
|
5
|
-
describe 'Pkg::Sign::Rpm' do
|
6
|
-
|
7
|
-
before :each do
|
8
|
-
allow(Pkg::Config).to receive(:gpg_key).and_return('7F438280EF8D349F')
|
9
|
-
end
|
10
|
-
|
11
|
-
describe '#has_sig?' do
|
12
|
-
let(:rpm) { 'foo.rpm' }
|
13
|
-
let(:el7_signed_response) { <<-DOC
|
14
|
-
Header V4 RSA/SHA256 Signature, key ID ef8d349f: NOKEY
|
15
|
-
Header SHA1 digest: OK (3cb7e9861e8bc09783a1b6c8d88243a3c16daa81)
|
16
|
-
V4 RSA/SHA256 Signature, key ID ef8d349f: NOKEY
|
17
|
-
MD5 digest: OK (d5f06ba2a9053de532326d0659ec0d11)
|
18
|
-
DOC
|
19
|
-
}
|
20
|
-
let(:el5_signed_response) { <<-DOC
|
21
|
-
Header V3 RSA/SHA1 signature: NOKEY, key ID ef8d349f
|
22
|
-
Header SHA1 digest: OK (12ea7bd578097a3aecc5deb8ada6aca6147d68e3)
|
23
|
-
V3 RSA/SHA1 signature: NOKEY, key ID ef8d349f
|
24
|
-
MD5 digest: OK (27353c6153068a3c9902fcb4ad5b8b92)
|
25
|
-
DOC
|
26
|
-
}
|
27
|
-
let(:sles12_signed_response) { <<-DOC
|
28
|
-
Header V4 RSA/SHA256 Signature, key ID ef8d349f: NOKEY
|
29
|
-
Header SHA1 digest: OK (e713487cf21ebeb933aefd5ec9211a34603233d2)
|
30
|
-
V4 RSA/SHA256 Signature, key ID ef8d349f: NOKEY
|
31
|
-
MD5 digest: OK (3093a09ac39bc17751f913e19ca74432)
|
32
|
-
DOC
|
33
|
-
}
|
34
|
-
let(:unsigned_response) { <<-DOC
|
35
|
-
Header SHA1 digest: OK (f9404cc95f200568c2dbb1fd24e1119e3e4a40a9)
|
36
|
-
MD5 digest: OK (816095f3cee145091c3fa07a0915ce85)
|
37
|
-
DOC
|
38
|
-
}
|
39
|
-
it 'returns true if rpm has been signed (el7)' do
|
40
|
-
allow(Pkg::Sign::Rpm).to receive(:`).and_return(el7_signed_response)
|
41
|
-
expect(Pkg::Sign::Rpm.has_sig?(rpm)).to be true
|
42
|
-
end
|
43
|
-
it 'returns true if rpm has been signed (el5)' do
|
44
|
-
allow(Pkg::Sign::Rpm).to receive(:`).and_return(el5_signed_response)
|
45
|
-
expect(Pkg::Sign::Rpm.has_sig?(rpm)).to be true
|
46
|
-
end
|
47
|
-
it 'returns true if rpm has been signed (sles12)' do
|
48
|
-
allow(Pkg::Sign::Rpm).to receive(:`).and_return(sles12_signed_response)
|
49
|
-
expect(Pkg::Sign::Rpm.has_sig?(rpm)).to be true
|
50
|
-
end
|
51
|
-
it 'returns false if rpm has not been signed' do
|
52
|
-
allow(Pkg::Sign::Rpm).to receive(:`).and_return(unsigned_response)
|
53
|
-
expect(Pkg::Sign::Rpm.has_sig?(rpm)).to be false
|
54
|
-
end
|
55
|
-
it 'fails with unexpected output' do
|
56
|
-
allow(Pkg::Sign::Rpm).to receive(:`).and_return('something that is definitely not a normal response')
|
57
|
-
expect { Pkg::Sign::Rpm.has_sig?(rpm) }.to raise_error(RuntimeError, /Something went wrong checking the signature/)
|
58
|
-
end
|
59
|
-
it 'fails if gpg_key is not set' do
|
60
|
-
allow(Pkg::Config).to receive(:gpg_key).and_return(nil)
|
61
|
-
expect { Pkg::Sign::Rpm.has_sig?(rpm) }.to raise_error(RuntimeError, /You need to set `gpg_key` in your build defaults./)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe '#sign_all' do
|
66
|
-
let(:rpm_directory) { 'foo' }
|
67
|
-
let(:rpms_not_to_sign) { [
|
68
|
-
"#{rpm_directory}/aix/7.1/PC1/ppc/puppet-agent-5.5.3-1.aix7.1.ppc.rpm",
|
69
|
-
] }
|
70
|
-
let(:v3_rpms) { [
|
71
|
-
"#{rpm_directory}/el/5/PC1/i386/puppet-agent-5.5.3-1.el5.i386.rpm",
|
72
|
-
"#{rpm_directory}/sles/11/PC1/x86_64/puppet-agent-5.5.3-1.sles11.x86_64.rpm",
|
73
|
-
] }
|
74
|
-
let(:v4_rpms) { [
|
75
|
-
"#{rpm_directory}/el/7/PC1/aarch64/puppet-agent-5.5.3-1.el7.aarch64.rpm",
|
76
|
-
] }
|
77
|
-
let(:rpms) { rpms_not_to_sign + v3_rpms + v4_rpms }
|
78
|
-
let(:already_signed_rpms) { [
|
79
|
-
"#{rpm_directory}/el/6/PC1/x86_64/puppet-agent-5.5.3-1.el6.x86_64.rpm",
|
80
|
-
] }
|
81
|
-
let(:noarch_rpms) { [
|
82
|
-
"#{rpm_directory}/el/6/puppet5/i386/puppetserver-5.3.3-1.el6.noarch.rpm",
|
83
|
-
"#{rpm_directory}/el/6/puppet5/x86_64/puppetserver-5.3.3-1.el6.noarch.rpm",
|
84
|
-
"#{rpm_directory}/el/7/puppet5/i386/puppetserver-5.3.3-1.el7.noarch.rpm",
|
85
|
-
"#{rpm_directory}/el/7/puppet5/x86_64/puppetserver-5.3.3-1.el7.noarch.rpm",
|
86
|
-
"#{rpm_directory}/sles/12/puppet5/i386/puppetserver-5.3.3-1.sles12.noarch.rpm",
|
87
|
-
"#{rpm_directory}/sles/12/puppet5/x86_64/puppetserver-5.3.3-1.sles12.noarch.rpm"
|
88
|
-
] }
|
89
|
-
|
90
|
-
it 'signs both v3 and v4 rpms' do
|
91
|
-
allow(Dir).to receive(:[]).with("#{rpm_directory}/**/*.rpm").and_return(rpms)
|
92
|
-
rpms.each do |rpm|
|
93
|
-
allow(Pkg::Sign::Rpm).to receive(:has_sig?).and_return(false)
|
94
|
-
end
|
95
|
-
expect(Pkg::Sign::Rpm).to receive(:legacy_sign).with(v3_rpms.join(' '))
|
96
|
-
expect(Pkg::Sign::Rpm).to receive(:sign).with(v4_rpms.join(' '))
|
97
|
-
Pkg::Sign::Rpm.sign_all(rpm_directory)
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'does not sign AIX rpms' do
|
101
|
-
allow(Dir).to receive(:[]).with("#{rpm_directory}/**/*.rpm").and_return(rpms_not_to_sign)
|
102
|
-
allow(Pkg::Sign::Rpm).to receive(:has_sig?)
|
103
|
-
expect(Pkg::Sign::Rpm).to_not receive(:legacy_sign)
|
104
|
-
expect(Pkg::Sign::Rpm).to_not receive(:sign)
|
105
|
-
Pkg::Sign::Rpm.sign_all(rpm_directory)
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'does not sign already-signed rpms' do
|
109
|
-
allow(Dir).to receive(:[]).with("#{rpm_directory}/**/*.rpm").and_return(already_signed_rpms)
|
110
|
-
already_signed_rpms.each do |rpm|
|
111
|
-
allow(Pkg::Sign::Rpm).to receive(:has_sig?).and_return(true)
|
112
|
-
end
|
113
|
-
expect(Pkg::Sign::Rpm).to_not receive(:legacy_sign)
|
114
|
-
expect(Pkg::Sign::Rpm).to_not receive(:sign)
|
115
|
-
Pkg::Sign::Rpm.sign_all(rpm_directory)
|
116
|
-
end
|
117
|
-
|
118
|
-
it 'deletes and relinks rpms with the same basename' do
|
119
|
-
allow(Dir).to receive(:[]).with("#{rpm_directory}/**/*.rpm").and_return(noarch_rpms)
|
120
|
-
allow(Pkg::Sign::Rpm).to receive(:sign)
|
121
|
-
allow(Pkg::Sign::Rpm).to receive(:has_sig?)
|
122
|
-
expect(FileUtils).to receive(:rm).exactly(noarch_rpms.count/2).times
|
123
|
-
expect(FileUtils).to receive(:ln).exactly(noarch_rpms.count/2).times
|
124
|
-
Pkg::Sign::Rpm.sign_all(rpm_directory)
|
125
|
-
end
|
126
|
-
|
127
|
-
it 'does not fail if there are no rpms to sign' do
|
128
|
-
allow(Dir).to receive(:[]).with("#{rpm_directory}/**/*.rpm").and_return([])
|
129
|
-
expect(Pkg::Sign::Rpm.sign_all(rpm_directory)).to_not raise_error
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
data/tasks/archive.rake
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
namespace :pl do
|
2
|
-
namespace :remote do
|
3
|
-
|
4
|
-
desc "Move packages from repo paths to archive staging paths"
|
5
|
-
task :stage_archives, [:yum_directories, :apt_directories, :downloads_directories] => 'pl:fetch' do |_t, args|
|
6
|
-
yum_directories = args.yum_directories ? args.yum_directories.split(' ') : []
|
7
|
-
apt_directories = args.apt_directories ? args.apt_directories.split(' ') : []
|
8
|
-
downloads_directories = args.downloads_directories ? args.downloads_directories.split(' ') : []
|
9
|
-
|
10
|
-
yum_directories.each do |directory|
|
11
|
-
Pkg::Archive.stage_yum_archives(directory)
|
12
|
-
end
|
13
|
-
apt_directories.each do |directory|
|
14
|
-
Pkg::Archive.stage_apt_archives(directory)
|
15
|
-
end
|
16
|
-
downloads_directories.each do |directory|
|
17
|
-
Pkg::Archive.stage_downloads_archives(directory)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
desc "Create archive yum repo"
|
22
|
-
task :update_archive_yum_repo => 'pl:fetch' do
|
23
|
-
Pkg::Repo.update_repo(Pkg::Config.staging_server, Pkg::Config.yum_repo_command, { :repo_name => '', :repo_path => Pkg::Config.yum_archive_path, :repo_host => Pkg::Config.staging_server })
|
24
|
-
end
|
25
|
-
|
26
|
-
desc "Create archive apt repo"
|
27
|
-
task :update_archive_apt_repo => 'pl:fetch' do
|
28
|
-
Pkg::Repo.update_repo(Pkg::Config.staging_server, Pkg::Config.apt_archive_repo_command)
|
29
|
-
end
|
30
|
-
|
31
|
-
desc "Sync archived packages to s3"
|
32
|
-
task :deploy_staged_archives_to_s3 => 'pl:fetch' do
|
33
|
-
Pkg::Util::RakeUtils.invoke_task('pl:remote:deploy_staged_apt_archives_to_s3')
|
34
|
-
Pkg::Util::RakeUtils.invoke_task('pl:remote:deploy_staged_yum_archives_to_s3')
|
35
|
-
Pkg::Util::RakeUtils.invoke_task('pl:remote:deploy_staged_downloads_archives_to_s3')
|
36
|
-
end
|
37
|
-
|
38
|
-
desc "Sync staged apt archive repos to s3"
|
39
|
-
task :deploy_staged_apt_archives_to_s3 => 'pl:fetch' do
|
40
|
-
command = 'sudo /usr/local/bin/s3_repo_sync.sh release-archives.puppet.com/apt'
|
41
|
-
Pkg::Util::Execution.retry_on_fail(:times => 3) do
|
42
|
-
Pkg::Util::Net.remote_execute(Pkg::Config.staging_server, command)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
desc "Sync staged yum archive repos to s3"
|
47
|
-
task :deploy_staged_yum_archives_to_s3 => 'pl:fetch' do
|
48
|
-
command = 'sudo /usr/local/bin/s3_repo_sync.sh release-archives.puppet.com/yum'
|
49
|
-
Pkg::Util::Execution.retry_on_fail(:times => 3) do
|
50
|
-
Pkg::Util::Net.remote_execute(Pkg::Config.staging_server, command)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
desc "Sync staged downloads archives to s3"
|
55
|
-
task :deploy_staged_downloads_archives_to_s3 => 'pl:fetch' do
|
56
|
-
command = 'sudo /usr/local/bin/s3_repo_sync.sh release-archives.puppet.com/downloads'
|
57
|
-
Pkg::Util::Execution.retry_on_fail(:times => 3) do
|
58
|
-
Pkg::Util::Net.remote_execute(Pkg::Config.staging_server, command)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
desc "Delete packages in archive staging directory"
|
63
|
-
task :archive_cleanup => 'pl:fetch' do
|
64
|
-
Pkg::Archive.remove_empty_directories
|
65
|
-
Pkg::Archive.remove_dead_symlinks
|
66
|
-
Pkg::Archive.delete_staged_archives
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|