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.
Files changed (72) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +128 -74
  3. data/lib/packaging/artifactory.rb +60 -433
  4. data/lib/packaging/config/params.rb +7 -28
  5. data/lib/packaging/config.rb +50 -150
  6. data/lib/packaging/deb/repo.rb +19 -20
  7. data/lib/packaging/gem.rb +83 -41
  8. data/lib/packaging/ips.rb +57 -0
  9. data/lib/packaging/msi.rb +89 -0
  10. data/lib/packaging/nuget.rb +1 -1
  11. data/lib/packaging/osx.rb +36 -0
  12. data/lib/packaging/paths.rb +87 -225
  13. data/lib/packaging/platforms.rb +416 -443
  14. data/lib/packaging/repo.rb +22 -122
  15. data/lib/packaging/retrieve.rb +7 -36
  16. data/lib/packaging/rpm/repo.rb +8 -5
  17. data/lib/packaging/tar.rb +0 -9
  18. data/lib/packaging/util/date.rb +0 -5
  19. data/lib/packaging/util/execution.rb +2 -2
  20. data/lib/packaging/util/git.rb +1 -1
  21. data/lib/packaging/util/gpg.rb +1 -5
  22. data/lib/packaging/util/net.rb +37 -79
  23. data/lib/packaging/util/rake_utils.rb +0 -1
  24. data/lib/packaging/util/ship.rb +13 -142
  25. data/lib/packaging/util/tool.rb +1 -1
  26. data/lib/packaging/util/version.rb +0 -8
  27. data/lib/packaging/util.rb +2 -2
  28. data/lib/packaging.rb +3 -3
  29. data/spec/fixtures/config/params.yaml +2 -0
  30. data/spec/lib/packaging/artifactory_spec.rb +16 -66
  31. data/spec/lib/packaging/config_spec.rb +29 -49
  32. data/spec/lib/packaging/deb/repo_spec.rb +7 -16
  33. data/spec/lib/packaging/paths_spec.rb +56 -321
  34. data/spec/lib/packaging/platforms_spec.rb +21 -46
  35. data/spec/lib/packaging/repo_spec.rb +40 -78
  36. data/spec/lib/packaging/retrieve_spec.rb +8 -47
  37. data/spec/lib/packaging/rpm/repo_spec.rb +4 -4
  38. data/spec/lib/packaging/tar_spec.rb +40 -34
  39. data/spec/lib/packaging/util/git_tag_spec.rb +1 -1
  40. data/spec/lib/packaging/util/gpg_spec.rb +1 -1
  41. data/spec/lib/packaging/util/net_spec.rb +15 -35
  42. data/spec/lib/packaging/util/ship_spec.rb +63 -145
  43. data/spec/spec_helper.rb +14 -0
  44. data/tasks/00_utils.rake +6 -4
  45. data/tasks/apple.rake +0 -2
  46. data/tasks/config.rake +0 -5
  47. data/tasks/education.rake +5 -5
  48. data/tasks/fetch.rake +14 -17
  49. data/tasks/gem.rake +121 -134
  50. data/tasks/jenkins.rake +7 -51
  51. data/tasks/nightly_repos.rake +69 -20
  52. data/tasks/pe_ship.rake +11 -16
  53. data/tasks/retrieve.rake +6 -13
  54. data/tasks/ship.rake +256 -196
  55. data/tasks/sign.rake +135 -63
  56. data/tasks/tar.rake +6 -0
  57. data/templates/packaging.xml.erb +7 -9
  58. data/templates/repo.xml.erb +3 -6
  59. metadata +27 -80
  60. data/lib/packaging/archive.rb +0 -126
  61. data/lib/packaging/artifactory/extensions.rb +0 -94
  62. data/lib/packaging/config/validations.rb +0 -13
  63. data/lib/packaging/metrics.rb +0 -15
  64. data/lib/packaging/sign/deb.rb +0 -9
  65. data/lib/packaging/sign/dmg.rb +0 -41
  66. data/lib/packaging/sign/ips.rb +0 -57
  67. data/lib/packaging/sign/msi.rb +0 -124
  68. data/lib/packaging/sign/rpm.rb +0 -115
  69. data/lib/packaging/sign.rb +0 -8
  70. data/spec/lib/packaging/gem_spec.rb +0 -86
  71. data/spec/lib/packaging/sign_spec.rb +0 -133
  72. 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