packaging 0.99.77 → 0.99.81

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 365629e0e3cba195de934ccd1cee9ecff5c7ed684ac79e4befc883420037b191
4
- data.tar.gz: 2498029caf73135b3ee7c5a2704e310ae6398c4eb7716c3687db487fc827dc0d
3
+ metadata.gz: 5b6b5822d617cc1452e3bb9cdf7fc9c5788fc71cfe3e05557bf5a0efb0e7db07
4
+ data.tar.gz: 19266ebee48e9231a450a0a511e26583aeb161c8d0bf7d45fd1e4cdedd6a1673
5
5
  SHA512:
6
- metadata.gz: 4a73420699b6ce732c52c527468c5b9cef405c0565aab9b33c3e592109ddee4aa965f162b4d3950a7900584994dba2994cc07602d75e36b0a53bf8dbbfcd23ec
7
- data.tar.gz: f871e9711752e70ac48956663402fa3f0cdf2693ae08eff8aa0ac59384a0081e1dd27fdbac01a3a17964de4a135a9ded98d381808cace9d9dd62c6ac37d20a8d
6
+ metadata.gz: 84a29597af4cd4c654f127eac2179be39721af304bf71d3c7e6f0d8a216930ab9bcb782c2575d92fd20a259572ff63684efe869bb2b08019ed80e1bbf1f65585
7
+ data.tar.gz: d7e30e71d5f197c958dc688d9904c7a431dee71ad3669dd6d3b8792e80f5cda5153fea85272b0be19e6701b645862e0be14d2ad452e7bad46235d5764e38d874
@@ -224,8 +224,6 @@ module Pkg
224
224
  deploy_properties(platform_tag, File.basename(package)),
225
225
  headers
226
226
  )
227
- rescue
228
- raise "Attempt to upload '#{package}' to #{File.join(@artifactory_uri, data[:full_artifactory_path])} failed"
229
227
  end
230
228
 
231
229
  # @param pkg [String] The package to download YAML for
@@ -344,40 +342,69 @@ module Pkg
344
342
  end
345
343
  end
346
344
 
347
- # Using the manifest provided by enterprise-dist, grab the appropropriate packages from artifactory based on md5sum
345
+ # Using the manifest provided by enterprise-dist, grab the
346
+ # appropropriate packages from artifactory based on md5sum
347
+
348
348
  # @param staging_directory [String] location to download packages to
349
- # @param manifest [File] JSON file containing information about what packages to download and the corresponding md5sums
349
+ # @param manifest [File] JSON file listing which packages to download and
350
+ # the corresponding md5sums
350
351
  # @param remote_path [String] Optional partial path on the remote host containing packages
351
352
  # Used to specify which subdirectories packages will be downloaded from.
352
353
  def download_packages(staging_directory, manifest, remote_path = '')
353
354
  check_authorization
355
+ download_repositories = %w(rpm_enterprise__local debian_enterprise__local)
354
356
  manifest.each do |dist, packages|
355
- puts "Grabbing the #{dist} packages from artifactory"
356
357
  packages.each do |name, info|
357
- filename = info['filename']
358
- artifacts = Artifactory::Resource::Artifact.checksum_search(md5: "#{info["md5"]}", repos: ["rpm_enterprise__local", "debian_enterprise__local"], name: filename)
359
- artifact_to_download = artifacts.select { |artifact| artifact.download_uri.include? remote_path }.first
360
- # If we found matching artifacts, but not in the correct path, copy the artifact to the correct path
361
- # This should help us keep repos up to date with the packages we are expecting to be there
362
- # while helping us avoid 'what the hell, could not find package' errors
358
+ package_file_name = info['filename']
359
+ puts format(
360
+ "Searching Artifactory [%s]%s for %s (md5: %s)",
361
+ download_repositories.join(', '),
362
+ remote_path.empty? ? '' : "/#{remote_path}",
363
+ package_file_name,
364
+ info['md5']
365
+ )
366
+ artifacts = Artifactory::Resource::Artifact.checksum_search(
367
+ md5: info['md5'],
368
+ repos: download_repositories,
369
+ name: package_file_name
370
+ )
371
+
372
+ artifact_to_download = artifacts.select do |artifact|
373
+ artifact.download_uri.include? remote_path
374
+ end.first
375
+
376
+ # If we found matching artifacts, but not in the correct
377
+ # path, copy the artifact to the correct path This should
378
+ # help us keep repos up to date with the packages we are
379
+ # expecting to be there while helping us avoid 'could not
380
+ # find package' errors
363
381
  if artifact_to_download.nil? && !artifacts.empty?
364
382
  artifact_to_copy = artifacts.first
365
- copy_artifact(artifact_to_copy, artifact_to_copy.repo, "#{remote_path}/#{dist}/#{filename}")
366
- artifacts = Artifactory::Resource::Artifact.checksum_search(md5: "#{info["md5"]}", repos: ["rpm_enterprise__local", "debian_enterprise__local"], name: filename)
367
- artifact_to_download = artifacts.select { |artifact| artifact.download_uri.include? remote_path }.first
383
+ copy_artifact(artifact_to_copy, artifact_to_copy.repo,
384
+ "#{remote_path}/#{dist}/#{package_file_name}")
385
+
386
+ # Now, search again to make sure we find them in the correct path.
387
+ artifacts = Artifactory::Resource::Artifact.checksum_search(
388
+ md5: info['md5'],
389
+ repos: download_repositories,
390
+ name: package_file_name
391
+ )
392
+ artifact_to_download = artifacts.select do |artifact|
393
+ artifact.download_uri.include? remote_path
394
+ end.first
368
395
  end
369
396
 
370
397
  if artifact_to_download.nil?
371
- message = "Error: what the hell, could not find package #{filename} with md5sum #{info["md5"]}"
372
- unless remote_path.empty?
373
- message += " in #{remote_path}"
374
- end
398
+ message = "Error: could not find package #{package_file_name} " \
399
+ "with md5sum #{info['md5']}"
400
+ message += " in #{remote_path}" unless remote_path.empty?
375
401
  raise message
376
- else
377
- full_staging_path = "#{staging_directory}/#{dist}"
378
- puts "downloading #{artifact_to_download.download_uri} to #{File.join(full_staging_path, filename)}"
379
- artifact_to_download.download(full_staging_path, filename: filename)
380
402
  end
403
+
404
+ full_staging_path = "#{staging_directory}/#{dist}"
405
+ puts "Downloading #{artifact_to_download.download_uri} to " \
406
+ "#{File.join(full_staging_path, package_file_name)}"
407
+ artifact_to_download.download(full_staging_path, filename: package_file_name)
381
408
  end
382
409
  end
383
410
  end
@@ -65,6 +65,7 @@ module Pkg::Params
65
65
  :gem_files,
66
66
  :gem_forge_project,
67
67
  :gem_host,
68
+ :gem_license,
68
69
  :gem_name,
69
70
  :gem_path,
70
71
  :gem_platform_dependencies,
@@ -46,6 +46,14 @@ module Pkg
46
46
  source_package_formats: DEBIAN_SOURCE_FORMATS,
47
47
  repo: true,
48
48
  },
49
+ '11' => {
50
+ codename: 'bullseye',
51
+ architectures: ['amd64'],
52
+ source_architecture: 'source',
53
+ package_format: 'deb',
54
+ source_package_formats: DEBIAN_SOURCE_FORMATS,
55
+ repo: true,
56
+ },
49
57
  },
50
58
 
51
59
  'el' => {
@@ -135,7 +143,7 @@ module Pkg
135
143
  repo: false,
136
144
  },
137
145
  '11' => {
138
- architectures: ['x86_64'],
146
+ architectures: ['x86_64', 'arm64'],
139
147
  package_format: 'dmg',
140
148
  repo: false,
141
149
  },
@@ -149,6 +157,14 @@ module Pkg
149
157
  source_package_formats: ['src.rpm'],
150
158
  signature_format: 'v3',
151
159
  repo: true,
160
+ },
161
+ '8' => {
162
+ architectures: ['x86_64'],
163
+ source_architecture: 'SRPMS',
164
+ package_format: 'rpm',
165
+ source_package_formats: ['src.rpm'],
166
+ signature_format: 'v3',
167
+ repo: true,
152
168
  }
153
169
  },
154
170
 
@@ -211,7 +227,7 @@ module Pkg
211
227
  },
212
228
  '18.04' => {
213
229
  codename: 'bionic',
214
- architectures: ['amd64', 'ppc64el'],
230
+ architectures: ['amd64', 'ppc64el', 'aarch64'],
215
231
  source_architecture: 'source',
216
232
  package_format: 'deb',
217
233
  source_package_formats: DEBIAN_SOURCE_FORMATS,
@@ -1,41 +1,79 @@
1
1
  module Pkg::Sign::Dmg
2
2
  module_function
3
3
 
4
- def sign(target_dir = 'pkg')
5
- use_identity = "-i #{Pkg::Config.osx_signing_ssh_key}" unless Pkg::Config.osx_signing_ssh_key.nil?
6
-
7
- if Pkg::Config.osx_signing_server =~ /@/
8
- host_string = "#{Pkg::Config.osx_signing_server}"
9
- else
10
- host_string = "#{ENV['USER']}@#{Pkg::Config.osx_signing_server}"
4
+ def sign(pkg_directory = 'pkg')
5
+ use_identity = ''
6
+ unless Pkg::Config.osx_signing_ssh_key.nil?
7
+ use_identity = "-i #{Pkg::Config.osx_signing_ssh_key}"
11
8
  end
9
+
10
+ host_string = "#{ENV['USER']}@#{Pkg::Config.osx_signing_server}"
11
+ host_string = "#{Pkg::Config.osx_signing_server}" if Pkg::Config.osx_signing_server =~ /@/
12
+
12
13
  ssh_host_string = "#{use_identity} #{host_string}"
13
14
  rsync_host_string = "-e 'ssh #{use_identity}' #{host_string}"
15
+ archs = Dir.glob("#{pkg_directory}/{apple,mac,osx}/**/{x86_64,arm64}").map { |el| el.split('/').last }
16
+
17
+ if archs.empty?
18
+ $stderr.puts "Error: no architectures found in #{pkg_directory}/{apple,mac,osx}"
19
+ exit 1
20
+ end
21
+
22
+ archs.each do |arch|
23
+ remote_working_directory = "/tmp/#{Pkg::Util.rand_string}/#{arch}"
24
+ dmg_mount_point = File.join(remote_working_directory, "mount")
25
+ signed_items_directory = File.join(remote_working_directory, "signed")
26
+
27
+ dmgs = Dir.glob("#{pkg_directory}/{apple,mac,osx}/**/#{arch}/*.dmg")
28
+ if dmgs.empty?
29
+ $stderr.puts "Error: no dmgs found in #{pkg_directory}/{apple,mac,osx} for #{arch} architecture."
30
+ exit 1
31
+ end
32
+
33
+ dmg_basenames = dmgs.map { |d| File.basename(d, '.dmg') }.join(' ')
34
+
35
+ sign_package_command = %W[
36
+ for dmg in #{dmg_basenames}; do
37
+ /usr/bin/hdiutil attach #{remote_working_directory}/$dmg.dmg
38
+ -mountpoint #{dmg_mount_point} -nobrowse -quiet ;
14
39
 
15
- work_dir = "/tmp/#{Pkg::Util.rand_string}"
16
- mount = File.join(work_dir, "mount")
17
- signed = File.join(work_dir, "signed")
18
- Pkg::Util::Net.remote_execute(ssh_host_string, "mkdir -p #{mount} #{signed}")
19
- dmgs = Dir.glob("#{target_dir}/apple/**/*.dmg")
20
- Pkg::Util::Net.rsync_to(dmgs.join(" "), rsync_host_string, work_dir)
21
- Pkg::Util::Net.remote_execute(ssh_host_string, %Q[for dmg in #{dmgs.map { |d| File.basename(d, ".dmg") }.join(" ")}; do
22
- /usr/bin/hdiutil attach #{work_dir}/$dmg.dmg -mountpoint #{mount} -nobrowse -quiet ;
23
- /usr/bin/security -q unlock-keychain -p "#{Pkg::Config.osx_signing_keychain_pw}" "#{Pkg::Config.osx_signing_keychain}" ;
24
- for pkg in $(ls #{mount}/*.pkg | xargs -n 1 basename); do
25
- if /usr/sbin/pkgutil --check-signature #{mount}/$pkg ; then
26
- echo "$pkg is already signed, skipping . . ." ;
27
- cp #{mount}/$pkg #{signed}/$pkg ;
28
- else
29
- /usr/bin/productsign --keychain "#{Pkg::Config.osx_signing_keychain}" --sign "#{Pkg::Config.osx_signing_cert}" #{mount}/$pkg #{signed}/$pkg ;
30
- fi
40
+ /usr/bin/security -q unlock-keychain
41
+ -p "#{Pkg::Config.osx_signing_keychain_pw}" "#{Pkg::Config.osx_signing_keychain}" ;
42
+
43
+ for pkg in #{dmg_mount_point}/*.pkg; do
44
+ pkg_basename=$(basename $pkg) ;
45
+ if /usr/sbin/pkgutil --check-signature $pkg ; then
46
+ echo "Warning: $pkg is already signed, skipping" ;
47
+ cp $pkg #{signed_items_directory}/$pkg_basename ;
48
+ continue ;
49
+ fi ;
50
+
51
+ /usr/bin/productsign --keychain "#{Pkg::Config.osx_signing_keychain}"
52
+ --sign "#{Pkg::Config.osx_signing_cert}"
53
+ $pkg #{signed_items_directory}/$pkg_basename ;
54
+ done ;
55
+
56
+ /usr/bin/hdiutil detach #{dmg_mount_point} -quiet ;
57
+ /bin/rm #{remote_working_directory}/$dmg.dmg ;
58
+ /usr/bin/hdiutil create -volname $dmg
59
+ -srcfolder #{signed_items_directory}/ #{remote_working_directory}/$dmg.dmg ;
60
+ /bin/rm #{signed_items_directory}/* ;
31
61
  done
32
- /usr/bin/hdiutil detach #{mount} -quiet ;
33
- /bin/rm #{work_dir}/$dmg.dmg ;
34
- /usr/bin/hdiutil create -volname $dmg -srcfolder #{signed}/ #{work_dir}/$dmg.dmg ;
35
- /bin/rm #{signed}/* ; done])
36
- dmgs.each do | dmg |
37
- Pkg::Util::Net.rsync_from("#{work_dir}/#{File.basename(dmg)}", rsync_host_string, File.dirname(dmg))
62
+ ].join(' ')
63
+
64
+ Pkg::Util::Net.remote_execute(ssh_host_string,
65
+ "mkdir -p #{dmg_mount_point} #{signed_items_directory}")
66
+
67
+ Pkg::Util::Net.rsync_to(dmgs.join(' '), rsync_host_string, remote_working_directory)
68
+
69
+ Pkg::Util::Net.remote_execute(ssh_host_string, sign_package_command)
70
+
71
+ dmgs.each do |dmg|
72
+ Pkg::Util::Net.rsync_from(
73
+ "#{remote_working_directory}/#{File.basename(dmg)}", rsync_host_string, File.dirname(dmg))
74
+ end
75
+
76
+ Pkg::Util::Net.remote_execute(ssh_host_string, "rm -rf '#{remote_working_directory}'")
38
77
  end
39
- Pkg::Util::Net.remote_execute(ssh_host_string, "if [ -d '#{work_dir}' ]; then rm -rf '#{work_dir}'; fi")
40
78
  end
41
79
  end
@@ -52,6 +52,7 @@ describe "Pkg::Config" do
52
52
  :gem_files,
53
53
  :gem_forge_project,
54
54
  :gem_host,
55
+ :gem_license,
55
56
  :gem_name,
56
57
  :gem_path,
57
58
  :gem_platform_dependencies,
@@ -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', 'jessie', 'stretch', 'trusty', 'xenial']
39
+ codenames = ['focal', 'bionic', 'bullseye', 'buster', 'cosmic', 'jessie', 'stretch', 'trusty', 'xenial']
40
40
  expect(Pkg::Platforms.codenames).to match_array(codenames)
41
41
  end
42
42
  end
data/tasks/gem.rake CHANGED
@@ -39,23 +39,24 @@ end
39
39
 
40
40
  def create_default_gem_spec
41
41
  spec = Gem::Specification.new do |s|
42
- s.name = Pkg::Config.project unless Pkg::Config.project.nil?
43
- s.name = Pkg::Config.gem_name unless Pkg::Config.gem_name.nil?
44
- s.version = Pkg::Config.gemversion unless Pkg::Config.gemversion.nil?
45
- s.author = Pkg::Config.author unless Pkg::Config.author.nil?
46
- s.email = Pkg::Config.email unless Pkg::Config.email.nil?
47
- s.homepage = Pkg::Config.homepage unless Pkg::Config.homepage.nil?
48
- s.summary = Pkg::Config.summary unless Pkg::Config.summary.nil?
49
- s.summary = Pkg::Config.gem_summary unless Pkg::Config.gem_summary.nil?
50
- s.description = Pkg::Config.description unless Pkg::Config.description.nil?
51
- s.description = Pkg::Config.gem_description unless Pkg::Config.gem_description.nil?
52
- s.files = glob_gem_files unless glob_gem_files.nil?
53
- s.executables = Pkg::Config.gem_executables unless Pkg::Config.gem_executables.nil?
54
- s.require_path = Pkg::Config.gem_require_path unless Pkg::Config.gem_require_path.nil?
55
- s.required_ruby_version = Pkg::Config.gem_required_ruby_version unless Pkg::Config.gem_required_ruby_version.nil?
42
+ s.name = Pkg::Config.project unless Pkg::Config.project.nil?
43
+ s.name = Pkg::Config.gem_name unless Pkg::Config.gem_name.nil?
44
+ s.version = Pkg::Config.gemversion unless Pkg::Config.gemversion.nil?
45
+ s.author = Pkg::Config.author unless Pkg::Config.author.nil?
46
+ s.email = Pkg::Config.email unless Pkg::Config.email.nil?
47
+ s.homepage = Pkg::Config.homepage unless Pkg::Config.homepage.nil?
48
+ s.summary = Pkg::Config.summary unless Pkg::Config.summary.nil?
49
+ s.summary = Pkg::Config.gem_summary unless Pkg::Config.gem_summary.nil?
50
+ s.description = Pkg::Config.description unless Pkg::Config.description.nil?
51
+ s.description = Pkg::Config.gem_description unless Pkg::Config.gem_description.nil?
52
+ s.files = glob_gem_files unless glob_gem_files.nil?
53
+ s.executables = Pkg::Config.gem_executables unless Pkg::Config.gem_executables.nil?
54
+ s.require_path = Pkg::Config.gem_require_path unless Pkg::Config.gem_require_path.nil?
55
+ s.required_ruby_version = Pkg::Config.gem_required_ruby_version unless Pkg::Config.gem_required_ruby_version.nil?
56
56
  s.required_rubygems_version = Pkg::Config.gem_required_rubygems_version unless Pkg::Config.gem_required_rubygems_version.nil?
57
- s.test_files = FileList[Pkg::Config.gem_test_files.split(' ')] unless Pkg::Config.gem_test_files.nil?
58
- s.rubyforge_project = Pkg::Config.gem_forge_project unless Pkg::Config.gem_forge_project.nil?
57
+ s.test_files = FileList[Pkg::Config.gem_test_files.split(' ')] unless Pkg::Config.gem_test_files.nil?
58
+ s.license = Pkg::Config.gem_license unless Pkg::Config.gem_license.nil?
59
+ s.rubyforge_project = Pkg::Config.gem_forge_project unless Pkg::Config.gem_forge_project.nil?
59
60
  Pkg::Config.gem_rdoc_options.each do |option|
60
61
  s.rdoc_options << option
61
62
  end unless Pkg::Config.gem_rdoc_options.nil?
@@ -93,7 +93,7 @@ DOC
93
93
  # The repo configs have Pkg::Config.builds_server used in them, but that
94
94
  # is internal, so we need to replace it with our public server. We also
95
95
  # want them only to see repos, and not signed repos, since the host is
96
- # called nightlies.puppetlabs.com. Here we replace those values in each
96
+ # called nightlies.puppet.com. Here we replace those values in each
97
97
  # config with the desired value.
98
98
  Dir.glob("#{local_target}/repo_configs/**/*").select { |t_config| File.file?(t_config) }.each do |config|
99
99
  new_contents = File.read(config).gsub(Pkg::Config.builds_server, target_host).gsub(/#{target_prefix}_repos/, "repos")
data/tasks/ship.rake CHANGED
@@ -172,20 +172,10 @@ namespace :pl do
172
172
  end
173
173
  end
174
174
 
175
- desc "Copy signed deb repos from #{Pkg::Config.apt_signing_server} to AWS S3"
176
- task :deploy_apt_repo_to_s3 => 'pl:fetch' do
177
- puts "Really run S3 sync to deploy Debian repos from #{Pkg::Config.apt_signing_server} to AWS S3? [y,n]"
178
- if Pkg::Util.ask_yes_or_no
179
- Pkg::Util::Execution.retry_on_fail(:times => 3) do
180
- command = 'sudo /usr/local/bin/s3_repo_sync.sh apt.puppetlabs.com'
181
- Pkg::Util::Net.remote_execute(Pkg::Config.apt_signing_server, command)
182
- end
183
- end
184
- end
185
-
186
175
  desc "Copy rpm repos from #{Pkg::Config.yum_staging_server} to #{Pkg::Config.yum_host}"
187
176
  task deploy_yum_repo: 'pl:fetch' do
188
- puts "Really run remote rsync to deploy yum repos from #{Pkg::Config.yum_staging_server} to #{Pkg::Config.yum_host}? [y,n]"
177
+ puts "Really run remote rsync to deploy yum repos from #{Pkg::Config.yum_staging_server} " \
178
+ "to #{Pkg::Config.yum_host}? [y,n]"
189
179
  if Pkg::Util.ask_yes_or_no
190
180
  Pkg::Util::Execution.retry_on_fail(times: 3) do
191
181
  Pkg::Rpm::Repo.deploy_repos(
@@ -198,27 +188,67 @@ namespace :pl do
198
188
  end
199
189
  end
200
190
 
201
- desc "Copy signed RPM repos from #{Pkg::Config.yum_staging_server} to AWS S3"
191
+ ##
192
+ ## S3 / GCP syncing
193
+ S3_REPO_SYNC = 'sudo /usr/local/bin/s3_repo_sync.sh'
194
+ GCP_REPO_SYNC = '/usr/local/bin/gcp_repo_sync'
195
+
196
+ desc "Sync signed apt repos from #{Pkg::Config.apt_signing_server} to AWS S3"
197
+ task :deploy_apt_repo_to_s3 => 'pl:fetch' do
198
+ sync_command = "#{S3_REPO_SYNC} apt.puppetlabs.com"
199
+ puts "Sync apt repos from #{Pkg::Config.apt_signing_server} to AWS S3? [y,n]"
200
+ next unless Pkg::Util.ask_yes_or_no
201
+
202
+ Pkg::Util::Execution.retry_on_fail(times: 3) do
203
+ Pkg::Util::Net.remote_execute(Pkg::Config.apt_signing_server, sync_command)
204
+ end
205
+ end
206
+
207
+ desc "Sync signed yum repos from #{Pkg::Config.yum_staging_server} to AWS S3"
202
208
  task :deploy_yum_repo_to_s3 => 'pl:fetch' do
203
- puts "Really run S3 sync to deploy RPM repos from #{Pkg::Config.yum_staging_server} to AWS S3? [y,n]"
204
- if Pkg::Util.ask_yes_or_no
205
- Pkg::Util::Execution.retry_on_fail(:times => 3) do
206
- command = 'sudo /usr/local/bin/s3_repo_sync.sh yum.puppetlabs.com'
207
- Pkg::Util::Net.remote_execute(Pkg::Config.yum_staging_server, command)
208
- end
209
+ sync_command = "#{S3_REPO_SYNC} yum.puppetlabs.com"
210
+ puts "Sync yum repos from #{Pkg::Config.yum_staging_server} to AWS S3? [y,n]"
211
+ next unless Pkg::Util.ask_yes_or_no
212
+ Pkg::Util::Execution.retry_on_fail(times: 3) do
213
+ Pkg::Util::Net.remote_execute(Pkg::Config.yum_staging_server, sync_command)
209
214
  end
210
215
  end
211
216
 
212
217
  desc "Sync downloads.puppetlabs.com from #{Pkg::Config.staging_server} to AWS S3"
213
218
  task :deploy_downloads_to_s3 => 'pl:fetch' do
214
- puts "Really run S3 sync to sync downloads.puppetlabs.com from #{Pkg::Config.staging_server} to AWS S3? [y,n]"
215
- if Pkg::Util.ask_yes_or_no
216
- Pkg::Util::Execution.retry_on_fail(:times => 3) do
217
- command = 'sudo /usr/local/bin/s3_repo_sync.sh downloads.puppetlabs.com'
218
- Pkg::Util::Net.remote_execute(Pkg::Config.staging_server, command)
219
- end
219
+ sync_command = "#{S3_REPO_SYNC} downloads.puppetlabs.com"
220
+ puts "Sync downloads.puppetlabs.com from #{Pkg::Config.staging_server} to AWS S3? [y,n]"
221
+ next unless Pkg::Util.ask_yes_or_no
222
+ Pkg::Util::Execution.retry_on_fail(times: 3) do
223
+ Pkg::Util::Net.remote_execute(Pkg::Config.staging_server, sync_command)
224
+ end
225
+ end
226
+
227
+ desc "Sync nightlies.puppet.com from #{Pkg::Config.staging_server} to AWS S3"
228
+ task :deploy_nightlies_to_s3 => 'pl:fetch' do
229
+ sync_command = "#{S3_REPO_SYNC} nightlies.puppet.com"
230
+ puts "Syncing nightly builds from #{Pkg::Config.staging_server} to AWS S3"
231
+ Pkg::Util::Execution.retry_on_fail(times: 3) do
232
+ Pkg::Util::Net.remote_execute(Pkg::Config.staging_server, sync_command)
233
+ end
234
+ end
235
+
236
+ desc "Sync signed apt repos from #{Pkg::Config.apt_signing_server} to Google Cloud Platform"
237
+ task :sync_apt_repo_to_gcp => 'pl:fetch' do
238
+ target_site = 'apt.repos.puppetlabs.com'
239
+ sync_command_puppet_6 = "#{GCP_REPO_SYNC} apt.repos.puppet.com puppet6"
240
+ sync_command_puppet_7 = "#{GCP_REPO_SYNC} apt.repos.puppet.com puppet7"
241
+ print "Sync apt repos from #{Pkg::Config.apt_signing_server} to #{target_site}? [y,n] "
242
+ next unless Pkg::Util.ask_yes_or_no
243
+ puts
244
+
245
+ Pkg::Util::Execution.retry_on_fail(times: 3) do
246
+ Pkg::Util::Net.remote_execute(Pkg::Config.apt_signing_server, sync_command_puppet_6)
247
+ Pkg::Util::Net.remote_execute(Pkg::Config.apt_signing_server, sync_command_puppet_7)
220
248
  end
221
249
  end
250
+ # Keep 'deploy' for backward compatibility
251
+ task :deploy_apt_repo_to_gcp => :sync_apt_repo_to_gcp
222
252
 
223
253
  desc "Sync apt, yum, and downloads.pl.com to AWS S3"
224
254
  task :deploy_final_builds_to_s3 => "pl:fetch" do
@@ -227,15 +257,6 @@ namespace :pl do
227
257
  Rake::Task['pl:remote:deploy_downloads_to_s3'].invoke
228
258
  end
229
259
 
230
- desc "Sync nightlies.puppetlabs.com from #{Pkg::Config.staging_server} to AWS S3"
231
- task :deploy_nightlies_to_s3 => 'pl:fetch' do
232
- puts "Deploying nightly builds from #{Pkg::Config.staging_server} to AWS S3..."
233
- Pkg::Util::Execution.retry_on_fail(:times => 3) do
234
- command = 'sudo /usr/local/bin/s3_repo_sync.sh nightlies.puppet.com'
235
- Pkg::Util::Net.remote_execute(Pkg::Config.staging_server, command)
236
- end
237
- end
238
-
239
260
  desc "Sync yum and apt from #{Pkg::Config.staging_server} to rsync servers"
240
261
  task :deploy_to_rsync_server => 'pl:fetch' do
241
262
  # This task must run after the S3 sync has run, or else /opt/repo-s3-stage won't be up-to-date
@@ -553,7 +574,17 @@ namespace :pl do
553
574
  artifactory = Pkg::ManageArtifactory.new(Pkg::Config.project, Pkg::Config.ref)
554
575
 
555
576
  local_dir = args.local_dir || 'pkg'
556
- Dir.glob("#{local_dir}/**/*").reject { |e| File.directory? e }.each do |artifact|
577
+ artifacts = Dir.glob("#{local_dir}/**/*").reject { |e| File.directory? e }
578
+ artifacts.sort! do |a, b|
579
+ if File.extname(a) =~ /(md5|sha\d+)/ && File.extname(b) !~ /(md5|sha\d+)/
580
+ 1
581
+ elsif File.extname(b) =~ /(md5|sha\d+)/ && File.extname(a) !~ /(md5|sha\d+)/
582
+ -1
583
+ else
584
+ a <=> b
585
+ end
586
+ end
587
+ artifacts.each do |artifact|
557
588
  if File.extname(artifact) == ".yaml" || File.extname(artifact) == ".json"
558
589
  artifactory.deploy_package(artifact)
559
590
  elsif artifactory.package_exists_on_artifactory?(artifact)
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.77
4
+ version: 0.99.81
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-01 00:00:00.000000000 Z
11
+ date: 2021-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -260,28 +260,28 @@ signing_key:
260
260
  specification_version: 4
261
261
  summary: Puppet Labs' packaging automation
262
262
  test_files:
263
- - spec/lib/packaging_spec.rb
263
+ - spec/lib/packaging/config_spec.rb
264
264
  - spec/lib/packaging/sign_spec.rb
265
- - spec/lib/packaging/paths_spec.rb
266
- - spec/lib/packaging/artifactory_spec.rb
267
- - spec/lib/packaging/tar_spec.rb
268
- - spec/lib/packaging/deb_spec.rb
269
- - spec/lib/packaging/retrieve_spec.rb
270
- - spec/lib/packaging/deb/repo_spec.rb
271
265
  - spec/lib/packaging/platforms_spec.rb
272
- - spec/lib/packaging/util/execution_spec.rb
273
- - spec/lib/packaging/util/jenkins_spec.rb
274
- - spec/lib/packaging/util/gpg_spec.rb
275
- - spec/lib/packaging/util/git_tag_spec.rb
276
- - spec/lib/packaging/util/misc_spec.rb
277
- - spec/lib/packaging/util/os_spec.rb
278
266
  - spec/lib/packaging/util/rake_utils_spec.rb
267
+ - spec/lib/packaging/util/jenkins_spec.rb
268
+ - spec/lib/packaging/util/execution_spec.rb
279
269
  - spec/lib/packaging/util/net_spec.rb
280
270
  - spec/lib/packaging/util/file_spec.rb
271
+ - spec/lib/packaging/util/misc_spec.rb
272
+ - spec/lib/packaging/util/gpg_spec.rb
281
273
  - spec/lib/packaging/util/version_spec.rb
274
+ - spec/lib/packaging/util/os_spec.rb
282
275
  - spec/lib/packaging/util/git_spec.rb
276
+ - spec/lib/packaging/util/git_tag_spec.rb
283
277
  - spec/lib/packaging/util/ship_spec.rb
284
- - spec/lib/packaging/config_spec.rb
285
- - spec/lib/packaging/rpm/repo_spec.rb
278
+ - spec/lib/packaging/tar_spec.rb
286
279
  - spec/lib/packaging/repo_spec.rb
280
+ - spec/lib/packaging/deb_spec.rb
281
+ - spec/lib/packaging/paths_spec.rb
282
+ - spec/lib/packaging/rpm/repo_spec.rb
287
283
  - spec/lib/packaging/gem_spec.rb
284
+ - spec/lib/packaging/retrieve_spec.rb
285
+ - spec/lib/packaging/artifactory_spec.rb
286
+ - spec/lib/packaging/deb/repo_spec.rb
287
+ - spec/lib/packaging_spec.rb