packaging 0.99.65 → 0.99.66

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8e2d980f6d0a3108046057e9a0637b58547bd2e68a16ab3004f9d08f7536b2c7
4
- data.tar.gz: 2ac12f3edd599dfbfa9a4af501e833a12685a1efd31c17a9f176af7197aba79f
3
+ metadata.gz: 47aedaa86f3b67d8c5c0dac793bdc7ba76098d59a69a371d686ad040a82bcad7
4
+ data.tar.gz: 46903f549c65511da61bc15448809e2442d8569b9cc7c318b3a44c9d1389a4a8
5
5
  SHA512:
6
- metadata.gz: a6bbad34de17a6da0e1168dafc780fb6a1eedd3106cc04493aa6d0c21839852a01f3b9be33dbae817e7d0c483cb446b96a991efe2aca3b7f6ebd9ad3eb8b82d4
7
- data.tar.gz: 7d2d02b9039b9be3eff34fa066b573e5b7adb82e5515aaf23fa08ea72badada429229005c9ac58116daf1bf2c4ed132f9a1618db8eb1798b5581589cf13a2019
6
+ metadata.gz: 2a4f6a1f1135c242cb3561b609943a44715f9bbf45653f76548c2682819dbf14c1a1f1909380a70b7c5b054eebbd871c0572760c8d76e104fae19b9fedb330d5
7
+ data.tar.gz: 69bb9b00a3e3711911fc98a4b68d175f9e79553e4c100db4a02ab4e57be3a6ed71c00b0014b19ff5ef5c30c22796e22db73efff32f9775ddf05b9204c12c6885
@@ -151,7 +151,7 @@ module Pkg::Paths
151
151
  when 'dmg'
152
152
  return File.join(prefix, 'mac', link)
153
153
  when 'msi'
154
- return File.join(prefix, platform, link)
154
+ return File.join(prefix, platform_name, link)
155
155
  else
156
156
  raise "Error: Unknown package format '#{package_format}'"
157
157
  end
@@ -261,16 +261,33 @@ module Pkg::Paths
261
261
  end
262
262
  end
263
263
 
264
- def remote_repo_base(platform_tag, nonfinal = false)
265
- package_format = Pkg::Platforms.package_format_for_tag(platform_tag)
266
- case package_format
264
+ def remote_repo_base(platform_tag = nil, nonfinal: false, package_format: nil)
265
+ if platform_tag.nil? && package_format.nil?
266
+ raise "Pkg::Paths.remote_repo_base must have `platform_tag` or `package_format` specified."
267
+ end
268
+
269
+ package_format ||= Pkg::Platforms.package_format_for_tag(platform_tag)
270
+
271
+ repo_base = case package_format
267
272
  when 'rpm'
268
273
  nonfinal ? Pkg::Config.nonfinal_yum_repo_path : Pkg::Config.yum_repo_path
269
274
  when 'deb'
270
275
  nonfinal ? Pkg::Config.nonfinal_apt_repo_path : Pkg::Config.apt_repo_path
276
+ when 'dmg'
277
+ nonfinal ? Pkg::Config.nonfinal_dmg_path : Pkg::Config.dmg_path
278
+ when 'swix'
279
+ nonfinal ? Pkg::Config.nonfinal_swix_path : Pkg::Config.swix_path
280
+ when 'msi'
281
+ nonfinal ? Pkg::Config.nonfinal_msi_path : Pkg::Config.msi_path
271
282
  else
272
283
  raise "Can't determine remote repo base path for package format '#{package_format}'."
273
284
  end
285
+
286
+ # normalize the path for things shipping to the downloads server
287
+ if repo_base.match(/^\/opt\/downloads\/\w+$/)
288
+ repo_base = '/opt/downloads'
289
+ end
290
+ repo_base
274
291
  end
275
292
 
276
293
  # This is where deb packages end up after freight repo updates
@@ -278,7 +295,7 @@ module Pkg::Paths
278
295
  fail "Can't determine path for non-debian platform #{platform_tag}." unless Pkg::Platforms.package_format_for_tag(platform_tag) == 'deb'
279
296
  platform, version, _ = Pkg::Platforms.parse_platform_tag(platform_tag)
280
297
  codename = Pkg::Platforms.codename_for_platform_version(platform, version)
281
- return File.join(remote_repo_base(platform_tag, nonfinal), 'pool', codename, repo_name, project[0], project)
298
+ return File.join(remote_repo_base(platform_tag, nonfinal: nonfinal), 'pool', codename, repo_name, project[0], project)
282
299
  end
283
300
 
284
301
  def release_package_link_path(platform_tag, nonfinal = false)
@@ -286,10 +303,10 @@ module Pkg::Paths
286
303
  package_format = Pkg::Platforms.package_format_for_tag(platform_tag)
287
304
  case package_format
288
305
  when 'rpm'
289
- return File.join(remote_repo_base(platform_tag, nonfinal), "#{repo_name(nonfinal)}-release-#{platform}-#{version}.noarch.rpm")
306
+ return File.join(remote_repo_base(platform_tag, nonfinal: nonfinal), "#{repo_name(nonfinal)}-release-#{platform}-#{version}.noarch.rpm")
290
307
  when 'deb'
291
308
  codename = Pkg::Platforms.codename_for_platform_version(platform, version)
292
- return File.join(remote_repo_base(platform_tag, nonfinal), "#{repo_name(nonfinal)}-release-#{codename}.deb")
309
+ return File.join(remote_repo_base(platform_tag, nonfinal: nonfinal), "#{repo_name(nonfinal)}-release-#{codename}.deb")
293
310
  else
294
311
  warn "No release packages for package format '#{package_format}', skipping . . ."
295
312
  return nil
@@ -106,22 +106,11 @@ module Pkg::Util::Ship
106
106
 
107
107
  def ship_rpms(local_staging_directory, remote_path, opts = {})
108
108
  ship_pkgs(["#{local_staging_directory}/**/*.rpm", "#{local_staging_directory}/**/*.srpm"], Pkg::Config.yum_staging_server, remote_path, opts)
109
-
110
- create_rolling_repo_link(Pkg::Platforms.generic_platform_tag('el'), Pkg::Config.yum_staging_server, remote_path, opts[:nonfinal])
111
109
  end
112
110
 
113
111
  def ship_debs(local_staging_directory, remote_path, opts = {})
114
112
  ship_pkgs(["#{local_staging_directory}/**/*.debian.tar.gz", "#{local_staging_directory}/**/*.orig.tar.gz" "#{local_staging_directory}/**/*.dsc", "#{local_staging_directory}/**/*.deb", "#{local_staging_directory}/**/*.changes"], Pkg::Config.apt_signing_server, remote_path, opts)
115
113
 
116
- # We need to iterate through all the supported platforms here because of
117
- # how deb repos are set up. Each codename will have its own link from the
118
- # current versioned repo (e.g. puppet5) to the rolling repo. The one thing
119
- # we don't care about is architecture, so we just grab the first supported
120
- # architecture for the code name we're working with at the moment. [written
121
- # by Melissa, copied by Molly]
122
- Pkg::Platforms.codenames.each do |codename|
123
- create_rolling_repo_link(Pkg::Platforms.codename_to_tags(codename)[0], Pkg::Config.apt_signing_server, remote_path, opts[:nonfinal])
124
- end
125
114
  end
126
115
 
127
116
  def ship_svr4(local_staging_directory, remote_path, opts = {})
@@ -135,8 +124,6 @@ module Pkg::Util::Ship
135
124
  def ship_dmg(local_staging_directory, remote_path, opts = {})
136
125
  packages_have_shipped = ship_pkgs(["#{local_staging_directory}/**/*.dmg"], Pkg::Config.dmg_staging_server, remote_path, opts)
137
126
 
138
- create_rolling_repo_link(Pkg::Platforms.generic_platform_tag('osx'), Pkg::Config.dmg_staging_server, remote_path, opts[:nonfinal])
139
-
140
127
  if packages_have_shipped
141
128
  Pkg::Platforms.platform_tags_for_package_format('dmg').each do |platform_tag|
142
129
  # Create the latest symlink for the current supported repo
@@ -147,14 +134,11 @@ module Pkg::Util::Ship
147
134
 
148
135
  def ship_swix(local_staging_directory, remote_path, opts = {})
149
136
  ship_pkgs(["#{local_staging_directory}/**/*.swix"], Pkg::Config.swix_staging_server, remote_path, opts)
150
-
151
- create_rolling_repo_link(Pkg::Platforms.generic_platform_tag('eos'), Pkg::Config.swix_staging_server, remote_path, opts[:nonfinal])
152
137
  end
153
138
 
154
139
  def ship_msi(local_staging_directory, remote_path, opts = {})
155
140
  packages_have_shipped = ship_pkgs(["#{local_staging_directory}/**/*.msi"], Pkg::Config.msi_staging_server, remote_path, opts)
156
141
 
157
- create_rolling_repo_link(Pkg::Platforms.generic_platform_tag('windows'), Pkg::Config.msi_staging_server, remote_path, opts[:nonfinal])
158
142
  if packages_have_shipped
159
143
  # Create the symlinks for the latest supported repo
160
144
  Pkg::Util::Net.remote_create_latest_symlink(Pkg::Config.project, Pkg::Paths.artifacts_path(Pkg::Platforms.generic_platform_tag('windows'), remote_path, opts[:nonfinal]), 'msi', arch: 'x64')
@@ -205,7 +189,35 @@ module Pkg::Util::Ship
205
189
 
206
190
  Pkg::Util::Net.remote_ssh_cmd(staging_server, command) unless command.nil?
207
191
  rescue => e
208
- fail "Failed to create rolling repo link for '#{platform_tag}'.\n#{e}"
192
+ fail "Failed to create rolling repo link for '#{platform_tag}'.\n#{e}\n#{e.backtrace}"
193
+ end
194
+
195
+ # create all of the rolling repo links in one step
196
+ def create_rolling_repo_links(nonfinal = false)
197
+ yum_path = Pkg::Paths.remote_repo_base(nonfinal: nonfinal, package_format: 'rpm')
198
+ dmg_path = Pkg::Paths.remote_repo_base(nonfinal: nonfinal, package_format: 'dmg')
199
+ swix_path = Pkg::Paths.remote_repo_base(nonfinal: nonfinal, package_format: 'swix')
200
+ msi_path = Pkg::Paths.remote_repo_base(nonfinal: nonfinal, package_format: 'msi')
201
+
202
+ create_rolling_repo_link(Pkg::Platforms.generic_platform_tag('el'), Pkg::Config.yum_staging_server, yum_path, nonfinal)
203
+ create_rolling_repo_link(Pkg::Platforms.generic_platform_tag('osx'), Pkg::Config.dmg_staging_server, dmg_path, nonfinal)
204
+ create_rolling_repo_link(Pkg::Platforms.generic_platform_tag('eos'), Pkg::Config.swix_staging_server, swix_path, nonfinal)
205
+ create_rolling_repo_link(Pkg::Platforms.generic_platform_tag('windows'), Pkg::Config.msi_staging_server, msi_path, nonfinal)
206
+
207
+ # We need to iterate through all the supported platforms here because of
208
+ # how deb repos are set up. Each codename will have its own link from the
209
+ # current versioned repo (e.g. puppet5) to the rolling repo. The one thing
210
+ # we don't care about is architecture, so we just grab the first supported
211
+ # architecture for the code name we're working with at the moment. [written
212
+ # by Melissa, copied by Molly]
213
+
214
+ apt_path = Pkg::Config.apt_repo_staging_path
215
+ if nonfinal
216
+ apt_path = Pkg::Config.nonfinal_apt_repo_staging_path
217
+ end
218
+ Pkg::Platforms.codenames.each do |codename|
219
+ create_rolling_repo_link(Pkg::Platforms.codename_to_tags(codename)[0], Pkg::Config.apt_signing_server, apt_path, nonfinal)
220
+ end
209
221
  end
210
222
 
211
223
  def update_release_package_symlinks(local_staging_directory, nonfinal = false)
@@ -215,7 +227,7 @@ module Pkg::Util::Ship
215
227
  package_format = Pkg::Platforms.package_format_for_tag(platform_tag)
216
228
  case package_format
217
229
  when 'rpm'
218
- remote_base = Pkg::Paths.artifacts_path(platform_tag, Pkg::Paths.remote_repo_base(platform_tag, nonfinal), nonfinal)
230
+ remote_base = Pkg::Paths.artifacts_path(platform_tag, Pkg::Paths.remote_repo_base(platform_tag, nonfinal: nonfinal), nonfinal)
219
231
  when 'deb'
220
232
  remote_base = Pkg::Paths.apt_package_base_path(platform_tag, Pkg::Paths.repo_name(nonfinal), Pkg::Config.project, nonfinal)
221
233
  else
@@ -213,6 +213,7 @@ describe 'Pkg::Paths' do
213
213
  before :each do
214
214
  allow(Pkg::Config).to receive(:yum_repo_path).and_return('foo')
215
215
  allow(Pkg::Config).to receive(:apt_repo_path).and_return('bar')
216
+ allow(Pkg::Config).to receive(:dmg_path).and_return('/opt/downloads/mac')
216
217
  allow(Pkg::Config).to receive(:nonfinal_yum_repo_path).and_return('foo-nightly')
217
218
  allow(Pkg::Config).to receive(:nonfinal_apt_repo_path).and_return('bar-nightly')
218
219
  end
@@ -223,13 +224,21 @@ describe 'Pkg::Paths' do
223
224
  expect(Pkg::Paths.remote_repo_base('ubuntu-18.04-amd64')).to eq('bar')
224
225
  end
225
226
  it 'returns nonfinal_yum_repo_path for nonfinal rpms' do
226
- expect(Pkg::Paths.remote_repo_base('fedora-31-x86_64', true)).to eq('foo-nightly')
227
+ expect(Pkg::Paths.remote_repo_base('fedora-31-x86_64', nonfinal: true)).to eq('foo-nightly')
227
228
  end
228
229
  it 'returns nonfinal_apt_repo_path for nonfinal debs' do
229
- expect(Pkg::Paths.remote_repo_base('debian-9-amd64', true)).to eq('bar-nightly')
230
+ expect(Pkg::Paths.remote_repo_base('debian-9-amd64', nonfinal: true)).to eq('bar-nightly')
230
231
  end
232
+ it 'fails if neither tag nor package_format is provided' do
233
+ expect { Pkg::Paths.remote_repo_base }.to raise_error(/Pkg::Paths.remote_repo_base must have/)
234
+ end
235
+
236
+ it 'returns /opt/downloads if the path is /opt/downloads/<something>' do
237
+ expect(Pkg::Paths.remote_repo_base(package_format: 'dmg')).to eq('/opt/downloads')
238
+ end
239
+
231
240
  it 'fails for all other package formats' do
232
- expect { Pkg::Paths.remote_repo_base('osx-10.14-x86_64') }.to raise_error(/Can't determine remote repo base path/)
241
+ expect { Pkg::Paths.remote_repo_base('solaris-11-i386') }.to raise_error(/Can't determine remote repo base path/)
233
242
  end
234
243
  end
235
244
 
@@ -368,46 +368,26 @@ namespace :pl do
368
368
 
369
369
  desc "ship apple dmg to #{Pkg::Config.dmg_staging_server}"
370
370
  task ship_dmg: 'pl:fetch' do
371
- # TODO: realistically, this shouldn't be here. This block needs to be
372
- # removed, but only when we can successfully modify all instances of
373
- # this to be set to '/opt/downloads'. In the meantime, we need to write
374
- # this terrible workaround to ensure backward compatibility.
375
- #
376
- # I'm so sorry
377
- # ~MAS 2017-08-14
378
- if Pkg::Config.dmg_path == "/opt/downloads/mac"
379
- path = "/opt/downloads"
380
- else
381
- path = Pkg::Config.dmg_path
382
- end
371
+ path = Pkg::Paths.remote_repo_base(package_format: 'dmg')
383
372
  Pkg::Util::Ship.ship_dmg('pkg', path)
384
373
  end
385
374
 
386
375
  desc "ship nightly apple dmgs to #{Pkg::Config.dmg_staging_server}"
387
376
  task ship_nightly_dmg: 'pl:fetch' do
388
- Pkg::Util::Ship.ship_dmg('pkg', Pkg::Config.nonfinal_dmg_path, nonfinal: true)
377
+ path = Pkg::Paths.remote_repo_base(package_format: 'dmg', nonfinal: true)
378
+ Pkg::Util::Ship.ship_dmg('pkg', path, nonfinal: true)
389
379
  end
390
380
 
391
381
  desc "ship Arista EOS swix packages and signatures to #{Pkg::Config.swix_staging_server}"
392
382
  task ship_swix: 'pl:fetch' do
393
- # TODO: realistically, this shouldn't be here. This block needs to be
394
- # removed, but only when we can successfully modify all instances of
395
- # this to be set to '/opt/downloads'. In the meantime, we need to write
396
- # this terrible workaround to ensure backward compatibility.
397
- #
398
- # I'm so sorry
399
- # ~MAS 2017-08-14
400
- if Pkg::Config.swix_path == "/opt/downloads/eos"
401
- path = "/opt/downloads"
402
- else
403
- path = Pkg::Config.swix_path
404
- end
383
+ path = Pkg::Paths.remote_repo_base(package_format: 'swix')
405
384
  Pkg::Util::Ship.ship_swix('pkg', path)
406
385
  end
407
386
 
408
387
  desc "ship nightly Arista EOS swix packages and signatures to #{Pkg::Config.swix_staging_server}"
409
388
  task ship_nightly_swix: 'pl:fetch' do
410
- Pkg::Util::Ship.ship_swix('pkg', Pkg::Config.nonfinal_swix_path, nonfinal: true)
389
+ path = Pkg::Paths.remote_repo_base(package_format: 'swix', nonfinal: true)
390
+ Pkg::Util::Ship.ship_swix('pkg', path, nonfinal: true)
411
391
  end
412
392
 
413
393
  desc "ship tarball and signature to #{Pkg::Config.tar_staging_server}"
@@ -429,24 +409,14 @@ namespace :pl do
429
409
 
430
410
  desc "Ship MSI packages to #{Pkg::Config.msi_staging_server}"
431
411
  task ship_msi: 'pl:fetch' do
432
- # TODO: realistically, this shouldn't be here. This block needs to be
433
- # removed, but only when we can successfully modify all instances of
434
- # this to be set to '/opt/downloads'. In the meantime, we need to write
435
- # this terrible workaround to ensure backward compatibility.
436
- #
437
- # I'm so sorry
438
- # ~MAS 2017-08-14
439
- if Pkg::Config.msi_path == "/opt/downloads/windows"
440
- path = "/opt/downloads"
441
- else
442
- path = Pkg::Config.msi_path
443
- end
412
+ path = Pkg::Paths.remote_repo_base(package_format: 'msi')
444
413
  Pkg::Util::Ship.ship_msi('pkg', path, excludes: ["#{Pkg::Config.project}-x(86|64).msi"])
445
414
  end
446
415
 
447
416
  desc "Ship nightly MSI packages to #{Pkg::Config.msi_staging_server}"
448
417
  task ship_nightly_msi: 'pl:fetch' do
449
- Pkg::Util::Ship.ship_msi('pkg', Pkg::Config.nonfinal_msi_path, excludes: ["#{Pkg::Config.project}-x(86|64).msi"], nonfinal: true)
418
+ path = Pkg::Paths.remote_repo_base(package_format: 'msi', nonfinal: true)
419
+ Pkg::Util::Ship.ship_msi('pkg', path, excludes: ["#{Pkg::Config.project}-x(86|64).msi"], nonfinal: true)
450
420
  end
451
421
 
452
422
  desc "Add #{Pkg::Config.project} version #{Pkg::Config.ref} to release-metrics"
@@ -546,6 +516,16 @@ namespace :pl do
546
516
  puts " * #{err}"
547
517
  end
548
518
  end
519
+
520
+ desc 'Create the rolling repo links'
521
+ task create_repo_links: 'pl:fetch' do
522
+ Pkg::Util::Ship.create_rolling_repo_links
523
+ end
524
+
525
+ desc 'Create rolling repo links for nightlies'
526
+ task create_nightly_repo_links: 'pl:fetch' do
527
+ Pkg::Util::Ship.create_rolling_repo_links(true)
528
+ end
549
529
  end
550
530
 
551
531
  # It is odd to namespace this ship task under :jenkins, but this task is
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.65
4
+ version: 0.99.66
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-06-22 00:00:00.000000000 Z
11
+ date: 2020-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec