packaging 0.88.77 → 0.99.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|