packaging 0.99.47 → 0.99.48

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: 462c33ee387ad86103e9ac1edead54aa1a6c017328c92a3ccba336484f89458c
4
- data.tar.gz: '09c84bce3ea8c21637fe60ad730d2e07604796721f1f5cb366dab0a16ae8eca2'
3
+ metadata.gz: c9b1ac8c003ac90a5214eed7c8ba0452b2d264b093a1e33918951821e77abc1c
4
+ data.tar.gz: dffd6a141ca0c206e56a3a5f9d92f3d5fd43db33df13955485afb5598d020575
5
5
  SHA512:
6
- metadata.gz: 3f47f740aade3d02bea8a007f1b727271a203d47d298ff144b207cfad8ae58cba66c3d4ebc758bb695666d18208b5f18220b8e9886357a35e0f41257d7d1fdb2
7
- data.tar.gz: 113d0f5b9227fe43cdfaf68986e0850c768268937f7969fd390370c257ea963ceffcb67d128d21673a6b9c69ec62f30b94bd4efd7a888aa113e467a2c10f5c54
6
+ metadata.gz: ad5e4b3b0f541647b482692c8bca84ab17772a9875c569793f9dd2ec0aeeac6912ec7cc93ac49d417defc3a8c4e863d0975e91aa9b968d33cfdacadcdeada80c
7
+ data.tar.gz: 7c4c851417fb6fec73fd833a6cd753f29847cc9a097d5a972fadae0482a76a5073e7073405307af2099db23ffb6458b6b7fd758015cb36c924f4aedc39371cfc
@@ -432,28 +432,14 @@ module Pkg
432
432
  def ship_pe_tarballs(local_tarball_directory, target_repo, ship_paths)
433
433
  check_authorization
434
434
  ship_paths.each do |path|
435
- unset_cleanup_skip_on_artifacts(target_repo, path)
436
435
  Dir.foreach(local_tarball_directory) do |pe_tarball|
437
436
  next if pe_tarball == '.' || pe_tarball == ".."
438
437
  begin
439
438
  puts "Uploading #{pe_tarball} to #{target_repo}/#{path}#{pe_tarball}"
440
439
  artifact = Artifactory::Resource::Artifact.new(
441
440
  local_path: "#{local_tarball_directory}/#{pe_tarball}")
442
- uploaded_artifact = artifact.upload(target_repo, "#{path}#{pe_tarball}")
443
- # The Artifactory gem property setter only works when '/api/storage' is used in
444
- # the 'uri' field.
445
- # Strangely, the above Artifactory::Resource::Artifact.new gives us the raw URI.
446
- # Therefore we are forced to do some path surgery, inserting
447
- # '/api/storage' before "/#{target_repo}" to make the property setting work.
448
- storage_artifact = uploaded_artifact
449
- unless storage_artifact.uri.include?("/api/storage")
450
- storage_artifact.uri = storage_artifact.uri.sub(
451
- "/#{target_repo}",
452
- "/api/storage/#{target_repo}")
453
- end
454
- storage_artifact.properties(ARTIFACTORY_CLEANUP_SKIP_PROPERTY => true)
441
+ artifact.upload(target_repo, "#{path}#{pe_tarball}")
455
442
  rescue Errno::EPIPE
456
- ## [eric.griswold] maybe this should be fatal?
457
443
  STDERR.puts "Warning: Could not upload #{pe_tarball} to #{target_repo}/#{path}. Skipping."
458
444
  next
459
445
  end
@@ -478,29 +464,43 @@ module Pkg
478
464
  end
479
465
  end
480
466
 
481
- # Clear the ARTIFACTORY_CLEANUP_SKIP_PROPERTY on all artifacts in
482
- # a specified directory in a given Artifactory repo that match
483
- # /<directory>/*.tar. Use this before uploading newer tarballs to maintain
484
- # 'cleanup.skip' on the latest tarballs only.
467
+ # Start by clearing the ARTIFACTORY_CLEANUP_SKIP_PROPERTY on all artifacts in a
468
+ # single repo/directory location. This allows all artifacts in the directory to be cleaned.
469
+ # Once cleared, set ARTIFACTORY_CLEANUP_SKIP_PROPERTY on those matching pe_build_version,
470
+ # presumably the latest. This prevents those artifacts from being deleted.
485
471
  #
486
472
  # @param repo [String] Artifactory repository that contains the specified directory
487
473
  # @param directory [String] Artifactory directory in repo containing the artifacts from which to
488
474
  # set the 'cleanup.skip' property setting to false
489
- def unset_cleanup_skip_on_artifacts(repo, directory)
490
- artifacts_with_cleanup_skip = Artifactory::Resource::Artifact.property_search(
491
- ARTIFACTORY_CLEANUP_SKIP_PROPERTY => true,
492
- "repos" => repo
475
+ # @param pe_build_version [String] Set 'cleanup.skip' property on artifacts that
476
+ # contain this string in their file inside the directory.
477
+ def prevent_artifact_cleanup(repo, directory, pe_build_version)
478
+ # Clean up any trailing slashes on directory, just in case
479
+ directory.sub!(/(\/)+$/, '')
480
+
481
+ all_artifacts_pattern = "#{directory}/*"
482
+ latest_artifacts_pattern = "#{directory}/*#{pe_build_version}*"
483
+
484
+ all_artifacts = Artifactory::Resource::Artifact.pattern_search(
485
+ repo: repo,
486
+ pattern: all_artifacts_pattern
487
+ )
488
+ latest_artifacts = Artifactory::Resource::Artifact.pattern_search(
489
+ repo: repo,
490
+ pattern: latest_artifacts_pattern
493
491
  )
494
492
 
495
- # For the upcoming directory check, make sure we know where our trailing slashes are.
496
- directory_no_trailing_slashes = directory.sub(/(\/)+$/, '')
497
-
498
- # For all tarball artifacts in #{directory} that have the Artifactory property
499
- # 'cleanup.skip' set to true, set it to 'false'
500
- artifacts_with_cleanup_skip.each do |artifact|
501
- next unless artifact.uri.include?("/#{directory_no_trailing_slashes}/")
493
+ # Clear cleanup.skip on all artifacts in directory
494
+ puts "Clearing #{ARTIFACTORY_CLEANUP_SKIP_PROPERTY} in #{repo}/#{all_artifacts_pattern}"
495
+ all_artifacts.each do |artifact|
502
496
  artifact.properties(ARTIFACTORY_CLEANUP_SKIP_PROPERTY => false)
503
497
  end
498
+
499
+ # Set cleanup.skip on all artifacts in directory matching *pe_build_version*
500
+ puts "Setting #{ARTIFACTORY_CLEANUP_SKIP_PROPERTY} in #{repo}/#{latest_artifacts_pattern}"
501
+ latest_artifacts.each do |artifact|
502
+ artifact.properties(ARTIFACTORY_CLEANUP_SKIP_PROPERTY => true)
503
+ end
504
504
  end
505
505
 
506
506
  # Download an artifact based on name, repo, and path to artifact
@@ -584,7 +584,7 @@ module Pkg
584
584
  copied_artifact_search = Artifactory::Resource::Artifact.pattern_search(repo: 'debian_enterprise__local', pattern: "#{target_path}/*/#{info["filename"]}")
585
585
  fail "Error: what the hell, could not find just-copied package #{info["filename"]} under debian_enterprise__local/#{target_path}" if copied_artifact_search.nil?
586
586
  copied_artifact = copied_artifact_search.first
587
- properties = { 'deb.component' => Pkg::Paths.two_digit_pe_version_from_path(target_path) }
587
+ properties = { 'deb.component' => Pkg::Paths.debian_component_from_path(target_path) }
588
588
  copied_artifact.properties(properties)
589
589
  end
590
590
  end
@@ -303,9 +303,10 @@ module Pkg::Paths
303
303
  end
304
304
  end
305
305
 
306
- def two_digit_pe_version_from_path(path)
307
- matches = path.match(/\d+\.\d+/)
308
- fail "Error: Could not determine PE version from path #{path}" if matches.nil?
306
+ def debian_component_from_path(path)
307
+ matches = path.match(/(\d+\.\d+)\/(\w+)/)
308
+ fail "Error: Could not determine Debian Component from path #{path}" if matches.nil?
309
+ return matches[1] if matches[2] == 'repos'
309
310
  return matches[0]
310
311
  end
311
312
  end
@@ -322,14 +322,12 @@ namespace :pl do
322
322
 
323
323
  desc "Ship built gems to public Downloads server (#{Pkg::Config.gem_host})"
324
324
  task :ship_gem_to_downloads => 'pl:fetch' do
325
- unless Pkg::Config.gem_host
325
+ if Pkg::Config.gem_host && Pkg::Config.gem_path
326
+ Pkg::Util::Execution.retry_on_fail(times: 3) do
327
+ Pkg::Util::Ship.ship_gem('pkg', Pkg::Config.gem_path, platform_independent: true)
328
+ end
329
+ else
326
330
  warn 'Value `Pkg::Config.gem_host` not defined; skipping shipping to public Download server'
327
- exit
328
- end
329
- fail 'Value `Pkg::Config.gem_path` not defined; skipping shipping to public Download server' unless Pkg::Config.gem_path
330
-
331
- Pkg::Util::Execution.retry_on_fail(times: 3) do
332
- Pkg::Util::Ship.ship_gem('pkg', Pkg::Config.gem_path, platform_independent: true)
333
331
  end
334
332
  end
335
333
 
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.47
4
+ version: 0.99.48
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-22 00:00:00.000000000 Z
11
+ date: 2019-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -244,28 +244,28 @@ signing_key:
244
244
  specification_version: 4
245
245
  summary: Puppet Labs' packaging automation
246
246
  test_files:
247
+ - spec/lib/packaging_spec.rb
247
248
  - spec/lib/packaging/retrieve_spec.rb
248
- - spec/lib/packaging/paths_spec.rb
249
249
  - spec/lib/packaging/tar_spec.rb
250
+ - spec/lib/packaging/gem_spec.rb
250
251
  - spec/lib/packaging/deb/repo_spec.rb
251
- - spec/lib/packaging/rpm/repo_spec.rb
252
- - spec/lib/packaging/artifactory_spec.rb
253
- - spec/lib/packaging/repo_spec.rb
254
252
  - spec/lib/packaging/deb_spec.rb
253
+ - spec/lib/packaging/rpm/repo_spec.rb
255
254
  - spec/lib/packaging/sign_spec.rb
256
- - spec/lib/packaging/gem_spec.rb
257
- - spec/lib/packaging/util/rake_utils_spec.rb
258
- - spec/lib/packaging/util/git_spec.rb
255
+ - spec/lib/packaging/config_spec.rb
256
+ - spec/lib/packaging/platforms_spec.rb
259
257
  - spec/lib/packaging/util/os_spec.rb
258
+ - spec/lib/packaging/util/gpg_spec.rb
259
+ - spec/lib/packaging/util/net_spec.rb
260
260
  - spec/lib/packaging/util/misc_spec.rb
261
- - spec/lib/packaging/util/version_spec.rb
261
+ - spec/lib/packaging/util/git_tag_spec.rb
262
+ - spec/lib/packaging/util/jenkins_spec.rb
262
263
  - spec/lib/packaging/util/file_spec.rb
264
+ - spec/lib/packaging/util/git_spec.rb
265
+ - spec/lib/packaging/util/version_spec.rb
263
266
  - spec/lib/packaging/util/execution_spec.rb
264
- - spec/lib/packaging/util/gpg_spec.rb
265
- - spec/lib/packaging/util/jenkins_spec.rb
267
+ - spec/lib/packaging/util/rake_utils_spec.rb
266
268
  - spec/lib/packaging/util/ship_spec.rb
267
- - spec/lib/packaging/util/git_tag_spec.rb
268
- - spec/lib/packaging/util/net_spec.rb
269
- - spec/lib/packaging/platforms_spec.rb
270
- - spec/lib/packaging/config_spec.rb
271
- - spec/lib/packaging_spec.rb
269
+ - spec/lib/packaging/repo_spec.rb
270
+ - spec/lib/packaging/artifactory_spec.rb
271
+ - spec/lib/packaging/paths_spec.rb