artifactory-cleaner 1.0.4 → 1.0.5

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: 651c4273cd326a97138339f39293a026ce2803f78c64ddde62efed509e664402
4
- data.tar.gz: d197cf8c783f274eeed318d793cc0568a7a348c7f6badf4c8eb66c5aaa7d783f
3
+ metadata.gz: 8d8f191ca45a0ea66d0480979833c31cd49791f48827a0f1dcf4fc448f77439c
4
+ data.tar.gz: b88061a130eeca42b6d0bc1d4e5afb929cb4564838e3db32cf3bb4e6b237ef82
5
5
  SHA512:
6
- metadata.gz: 65103fc134d051f65782980c236676f6d03dcc0bbf87461892671162ad07582ea782aadd4433d482dd4c475f8f52607998253506bf1795b298710e78fa32bf49
7
- data.tar.gz: 7f7f3aef50dd02503c975c7fbd85fded4a851a352156e8f94aa842a3268f409100cd53a36e9401064ee41309eb1242192193eecec9983921e12ae6ef19ec25eb
6
+ metadata.gz: a4ff58daaa54d2a65dba4b88acb631feaab36fb6ed0459d509eb9fc2d1efed4d6d1a7ef781ff5ff465507963f75860171cd543d38d384a0423a1d8a6c1871481
7
+ data.tar.gz: 729916e7daf5baafac2863c326ed7de012ea63cb05969d6a99410cbd51532dc7cbf13605c2be92dbdf28b3dbfc7cd93b86e807101c5d4568497643486fd0db27
@@ -1,39 +1,39 @@
1
1
  example_id | status | run_time |
2
2
  -------------------------------------------- | ------ | --------------- |
3
- ./spec/artifactory/cleaner_spec.rb[1:1] | passed | 0.00158 seconds |
4
- ./spec/artifactory/cleaner_spec.rb[1:2:1] | passed | 0.00164 seconds |
3
+ ./spec/artifactory/cleaner_spec.rb[1:1] | passed | 0.00072 seconds |
4
+ ./spec/artifactory/cleaner_spec.rb[1:2:1] | passed | 0.00106 seconds |
5
5
  ./spec/artifactory/cleaner_spec.rb[1:2:2] | passed | 0.00011 seconds |
6
- ./spec/artifactory/cleaner_spec.rb[1:2:3] | passed | 0.00077 seconds |
7
- ./spec/artifactory/cleaner_spec.rb[1:2:4] | passed | 0.00007 seconds |
8
- ./spec/artifactory/cleaner_spec.rb[1:2:5] | passed | 0.00011 seconds |
9
- ./spec/artifactory/cleaner_spec.rb[1:2:6] | passed | 0.00179 seconds |
10
- ./spec/artifactory/cleaner_spec.rb[1:2:7:1] | passed | 0.00028 seconds |
11
- ./spec/artifactory/cleaner_spec.rb[1:2:7:2] | passed | 0.00309 seconds |
12
- ./spec/artifactory/cleaner_spec.rb[1:2:7:3] | passed | 0.00071 seconds |
13
- ./spec/artifactory/cleaner_spec.rb[1:2:7:4] | passed | 0.00006 seconds |
14
- ./spec/artifactory/cleaner_spec.rb[1:2:7:5] | passed | 0.00009 seconds |
15
- ./spec/artifactory/cleaner_spec.rb[1:3:1] | passed | 0.00081 seconds |
16
- ./spec/artifactory/cleaner_spec.rb[1:3:2] | passed | 0.00011 seconds |
17
- ./spec/artifactory/cleaner_spec.rb[1:3:3] | passed | 0.00007 seconds |
18
- ./spec/artifactory/cleaner_spec.rb[1:3:4] | passed | 0.00007 seconds |
19
- ./spec/artifactory/cleaner_spec.rb[1:3:5] | passed | 0.00056 seconds |
20
- ./spec/artifactory/cleaner_spec.rb[1:3:6] | passed | 0.00585 seconds |
21
- ./spec/artifactory/cleaner_spec.rb[1:3:7] | passed | 0.00024 seconds |
22
- ./spec/artifactory/cleaner_spec.rb[1:3:8] | passed | 0.00014 seconds |
23
- ./spec/artifactory/cleaner_spec.rb[1:3:9] | passed | 0.00058 seconds |
24
- ./spec/artifactory/cleaner_spec.rb[1:3:10:1] | passed | 0.00205 seconds |
25
- ./spec/artifactory/cleaner_spec.rb[1:3:11:1] | passed | 0.00278 seconds |
26
- ./spec/artifactory/cleaner_spec.rb[1:4:1] | passed | 0.00009 seconds |
27
- ./spec/artifactory/cleaner_spec.rb[1:5:1] | passed | 0.00012 seconds |
28
- ./spec/artifactory/cleaner_spec.rb[1:5:2] | passed | 0.00006 seconds |
29
- ./spec/artifactory/cleaner_spec.rb[1:5:3] | passed | 0.00012 seconds |
30
- ./spec/artifactory/cleaner_spec.rb[1:5:4] | passed | 0.00007 seconds |
31
- ./spec/artifactory/cleaner_spec.rb[1:5:5] | passed | 0.00007 seconds |
32
- ./spec/artifactory/cleaner_spec.rb[1:5:6] | passed | 0.00007 seconds |
33
- ./spec/artifactory/cleaner_spec.rb[1:5:7:1] | passed | 0.00007 seconds |
34
- ./spec/artifactory/cleaner_spec.rb[1:5:7:2] | passed | 0.00013 seconds |
35
- ./spec/artifactory/cleaner_spec.rb[1:5:7:3] | passed | 0.00009 seconds |
36
- ./spec/artifactory/cleaner_spec.rb[1:5:7:4] | passed | 0.00023 seconds |
37
- ./spec/artifactory/cleaner_spec.rb[1:5:7:5] | passed | 0.00012 seconds |
38
- ./spec/artifactory/cleaner_spec.rb[1:5:7:6] | passed | 0.00008 seconds |
39
- ./spec/artifactory/cleaner_spec.rb[1:5:7:7] | passed | 0.00008 seconds |
6
+ ./spec/artifactory/cleaner_spec.rb[1:2:3] | passed | 0.00007 seconds |
7
+ ./spec/artifactory/cleaner_spec.rb[1:2:4] | passed | 0.00006 seconds |
8
+ ./spec/artifactory/cleaner_spec.rb[1:2:5] | passed | 0.00009 seconds |
9
+ ./spec/artifactory/cleaner_spec.rb[1:2:6] | passed | 0.0005 seconds |
10
+ ./spec/artifactory/cleaner_spec.rb[1:2:7:1] | passed | 0.00015 seconds |
11
+ ./spec/artifactory/cleaner_spec.rb[1:2:7:2] | passed | 0.00103 seconds |
12
+ ./spec/artifactory/cleaner_spec.rb[1:2:7:3] | passed | 0.00026 seconds |
13
+ ./spec/artifactory/cleaner_spec.rb[1:2:7:4] | passed | 0.00005 seconds |
14
+ ./spec/artifactory/cleaner_spec.rb[1:2:7:5] | passed | 0.00007 seconds |
15
+ ./spec/artifactory/cleaner_spec.rb[1:3:1] | passed | 0.0001 seconds |
16
+ ./spec/artifactory/cleaner_spec.rb[1:3:2] | passed | 0.00009 seconds |
17
+ ./spec/artifactory/cleaner_spec.rb[1:3:3] | passed | 0.00006 seconds |
18
+ ./spec/artifactory/cleaner_spec.rb[1:3:4] | passed | 0.00008 seconds |
19
+ ./spec/artifactory/cleaner_spec.rb[1:3:5] | passed | 0.00006 seconds |
20
+ ./spec/artifactory/cleaner_spec.rb[1:3:6] | passed | 0.00151 seconds |
21
+ ./spec/artifactory/cleaner_spec.rb[1:3:7] | passed | 0.00013 seconds |
22
+ ./spec/artifactory/cleaner_spec.rb[1:3:8] | passed | 0.00007 seconds |
23
+ ./spec/artifactory/cleaner_spec.rb[1:3:9] | passed | 0.00206 seconds |
24
+ ./spec/artifactory/cleaner_spec.rb[1:3:10:1] | passed | 0.00824 seconds |
25
+ ./spec/artifactory/cleaner_spec.rb[1:3:11:1] | passed | 0.00905 seconds |
26
+ ./spec/artifactory/cleaner_spec.rb[1:4:1] | passed | 0.00008 seconds |
27
+ ./spec/artifactory/cleaner_spec.rb[1:5:1] | passed | 0.00008 seconds |
28
+ ./spec/artifactory/cleaner_spec.rb[1:5:2] | passed | 0.00005 seconds |
29
+ ./spec/artifactory/cleaner_spec.rb[1:5:3] | passed | 0.00005 seconds |
30
+ ./spec/artifactory/cleaner_spec.rb[1:5:4] | passed | 0.00005 seconds |
31
+ ./spec/artifactory/cleaner_spec.rb[1:5:5] | passed | 0.00005 seconds |
32
+ ./spec/artifactory/cleaner_spec.rb[1:5:6] | passed | 0.00005 seconds |
33
+ ./spec/artifactory/cleaner_spec.rb[1:5:7:1] | passed | 0.00006 seconds |
34
+ ./spec/artifactory/cleaner_spec.rb[1:5:7:2] | passed | 0.00011 seconds |
35
+ ./spec/artifactory/cleaner_spec.rb[1:5:7:3] | passed | 0.00005 seconds |
36
+ ./spec/artifactory/cleaner_spec.rb[1:5:7:4] | passed | 0.00024 seconds |
37
+ ./spec/artifactory/cleaner_spec.rb[1:5:7:5] | passed | 0.00008 seconds |
38
+ ./spec/artifactory/cleaner_spec.rb[1:5:7:6] | passed | 0.00006 seconds |
39
+ ./spec/artifactory/cleaner_spec.rb[1:5:7:7] | passed | 0.00006 seconds |
@@ -2,6 +2,12 @@ Artifactory Cleaner CHANGELOG
2
2
  =============================
3
3
  This file describes the changes made in each release of `artifactory-cleaner`
4
4
 
5
+ ## v1.0.5 (May 29, 2020)
6
+
7
+ - Check size of archived artifacts to ensure they downloaded properly
8
+ - Depend on `artifactory` gem v3.0.15 which properly follows HTTP redirects
9
+ - Gemspec cleanup
10
+
5
11
  ## v1.0.4 (May 29, 2020)
6
12
 
7
13
  - Fix bug with accepting YAML filter files on the CLI
data/README.md CHANGED
@@ -9,15 +9,13 @@ automation workflows.
9
9
 
10
10
  ### To use as a CLI command:
11
11
 
12
- Check out the repo and execute:
12
+ The gem can be installed using rubygems:
13
13
 
14
14
  ```bash
15
- bundle install
16
- gem build artifactory-cleaner.gemspec
17
- sudo gem install artifactory-cleaner-*.gem
15
+ sudo gem install artifactory-cleaner
18
16
  ```
19
17
 
20
- to install the `artifactory-cleaner` command.
18
+ This will install the `artifactory-cleaner` command.
21
19
 
22
20
  Full usage information is available using `artifactory-cleaner help`
23
21
 
@@ -25,17 +23,17 @@ The `artifactory-cleaner` CLI interface follows the same format as git: `artifac
25
23
 
26
24
  Commands available are:
27
25
 
28
- * `artifactory-cleaner archive` Given a specific set of critera (and optionally a set of filters) download all artifacts
26
+ * `artifactory-cleaner archive` Given a specific set of criteria (and optionally a set of filters) download all artifacts
29
27
  from specified repos to the local filesystem. *Note:* this will cause the `last_downloaded` date of all the artifacts
30
28
  which are archived to be updated to the time the command is run, so they may no longer match your search criteria on
31
29
  a subsequent run
32
- * `artifactory-cleaner clean` delete old artifacts which meet a specific set of critera (and optionally a set of filters)
30
+ * `artifactory-cleaner clean` delete old artifacts which meet a specific set of criteria (and optionally a set of filters)
33
31
  from a given set of repos, with the ability to archive them to the local filesystem. This is Artifactory::Cleaner's
34
32
  primry function: to reduce disk space usage by deleting old, unnecessary artifacts.
35
33
  * `artifactory-cleaner list-repos` provides information about available repositories in Artifactory. Can be used in
36
- pipelines with the `-H` flag, or can be used to query arepository information in human-readable columns.
34
+ pipelines with the `-H` flag, or can be used to query repository information in human-readable columns.
37
35
  * `artifactory-cleaner usage-report` analyze artifacts and produce a report detailing usage breakdown by date ranges,
38
- optionally producting a detailed YAML report of all artifacts meeting search criteria
36
+ optionally producing a detailed YAML report of all artifacts meeting search criteria
39
37
 
40
38
  #### Authentication and Configuration
41
39
 
@@ -67,7 +65,10 @@ Execute `artifactory-cleaner help` for a usage statement
67
65
 
68
66
  ## Development
69
67
 
70
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
68
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests.
69
+ You can also run `bin/console` for an interactive prompt that will allow you to experiment.
71
70
 
72
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
71
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the
72
+ version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version,
73
+ push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
73
74
 
@@ -10,18 +10,21 @@ Gem::Specification.new do |spec|
10
10
  spec.authors = ["Josh Gitlin"]
11
11
  spec.email = ["jgitlin@pinnacle21.com"]
12
12
 
13
- spec.summary = %q{Performs maintainence tasks on Artifactory repositories}
14
- spec.description = %q{Will provide maintainence tasks for Artifactory, like cleaning up old artifacts}
15
- spec.homepage = "https://bitbucket.org/pinnacle21/artifactory-cleaner/src/master/"
13
+ spec.summary = %q{Performs maintenance tasks on Artifactory repositories}
14
+ spec.description = <<~END_OF_SPEC_DESCRIPTION
15
+ `artifactory-cleaner` is a Ruby Gem and CLI interface for performing maintenance tasks on a JFrog Artifactory
16
+ instance. It is capable of analyzing storage usage and producing reports showing space usage based on artifact age.
17
+ It can then archive and delete from artifactory repos based on age/last download date with a highly configurable
18
+ inclusion/exclusion list.
19
+ END_OF_SPEC_DESCRIPTION
20
+ spec.homepage = "https://github.com/jgitlin-p21/artifactory-cleaner"
16
21
  spec.license = 'MIT'
17
22
  spec.licenses = ['MIT']
18
23
  spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
19
24
 
20
- #spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
21
-
22
- #spec.metadata["homepage_uri"] = spec.homepage
25
+ spec.metadata["homepage_uri"] = spec.homepage
23
26
  spec.metadata["source_code_uri"] = "https://bitbucket.org/pinnacle21/artifactory-cleaner/src/master/"
24
- #spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
27
+ spec.metadata["changelog_uri"] = "https://raw.githubusercontent.com/jgitlin-p21/artifactory-cleaner/master/CHANGELOG.md"
25
28
 
26
29
  spec.add_development_dependency "cucumber", '~> 1.3', '>= 1.3.20'
27
30
  spec.add_development_dependency "aruba", '~> 0.14'
@@ -30,7 +33,7 @@ Gem::Specification.new do |spec|
30
33
  spec.add_dependency "thor", '~> 1.0.1'
31
34
  spec.add_dependency "sysexits", '>= 1.2.0'
32
35
 
33
- spec.add_dependency "artifactory", '~> 3.0.13'
36
+ spec.add_dependency "artifactory", '~> 3.0.15'
34
37
 
35
38
  # Specify which files should be added to the gem when it is released.
36
39
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -13,5 +13,9 @@ module Artifactory
13
13
  module Cleaner
14
14
  class Error < StandardError; end
15
15
 
16
+ class ArchiveError < RuntimeError; end
17
+ class ArchiveFileNotWritten < ArchiveError; end
18
+ class ArchiveFileSizeMismatch < ArchiveError; end
19
+
16
20
  end
17
21
  end
@@ -345,15 +345,23 @@ module Artifactory
345
345
  # specified by the `path` param
346
346
  #
347
347
  # **Note:** Downloading an artifact will update the artifact's last_downloaded date so it may no longer match the
348
- # same search criteria it originally die (if last_downlaoded was used to discover this artifact)
348
+ # same search criteria it originally die (if last_downloaded was used to discover this artifact)
349
349
  #
350
350
  # This method is meant to be used prior to calling `delete_artifact`
351
351
  def archive_artifact(artifact, path)
352
+ path = File.dirname(File.join(path, URI.parse(artifact.download_uri).path.split( artifact.repo )[1]))
353
+
352
354
  debuglog "[DEBUG] downloading #{artifact} (#{artifact.uri}) to #{path}"
355
+ archived_file = nil
353
356
  timing = Benchmark.measure do
354
- artifact.download(path)
357
+ archived_file = artifact.download(path)
355
358
  end
359
+
356
360
  debuglog "[DEBUG] #{artifact.uri} #{Util.filesize artifact.size} downloaded in #{timing.real.round(2)} seconds (#{Util.filesize(artifact.size/timing.real)})/s"
361
+
362
+ raise ArchiveFileNotWritten, "Failed to write to #{archived_file}" unless File.exist? archived_file
363
+ raise ArchiveFileNotWritten, "Archive file is empty: #{archived_file}" unless File.size? archived_file
364
+ raise ArchiveFileSizeMismatch, "#{path} size mismatch (#{File.size(archived_file)} != #{artifact.size})" unless File.size(archived_file) == artifact.size
357
365
  end
358
366
 
359
367
  ##
@@ -2,6 +2,6 @@ module Artifactory
2
2
  module Cleaner
3
3
  ##
4
4
  # Version number of the Artifactory::Cleaner gem
5
- VERSION = "1.0.4"
5
+ VERSION = "1.0.5"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artifactory-cleaner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Gitlin
@@ -92,16 +92,19 @@ dependencies:
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: 3.0.13
95
+ version: 3.0.15
96
96
  type: :runtime
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: 3.0.13
103
- description: Will provide maintainence tasks for Artifactory, like cleaning up old
104
- artifacts
102
+ version: 3.0.15
103
+ description: |
104
+ `artifactory-cleaner` is a Ruby Gem and CLI interface for performing maintenance tasks on a JFrog Artifactory
105
+ instance. It is capable of analyzing storage usage and producing reports showing space usage based on artifact age.
106
+ It can then archive and delete from artifactory repos based on age/last download date with a highly configurable
107
+ inclusion/exclusion list.
105
108
  email:
106
109
  - jgitlin@pinnacle21.com
107
110
  executables:
@@ -221,11 +224,13 @@ files:
221
224
  - lib/artifactory/cleaner/discovery_worker.rb
222
225
  - lib/artifactory/cleaner/util.rb
223
226
  - lib/artifactory/cleaner/version.rb
224
- homepage: https://bitbucket.org/pinnacle21/artifactory-cleaner/src/master/
227
+ homepage: https://github.com/jgitlin-p21/artifactory-cleaner
225
228
  licenses:
226
229
  - MIT
227
230
  metadata:
231
+ homepage_uri: https://github.com/jgitlin-p21/artifactory-cleaner
228
232
  source_code_uri: https://bitbucket.org/pinnacle21/artifactory-cleaner/src/master/
233
+ changelog_uri: https://raw.githubusercontent.com/jgitlin-p21/artifactory-cleaner/master/CHANGELOG.md
229
234
  post_install_message:
230
235
  rdoc_options: []
231
236
  require_paths:
@@ -241,8 +246,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
246
  - !ruby/object:Gem::Version
242
247
  version: '0'
243
248
  requirements: []
244
- rubygems_version: 3.1.2
249
+ rubygems_version: 3.1.3
245
250
  signing_key:
246
251
  specification_version: 4
247
- summary: Performs maintainence tasks on Artifactory repositories
252
+ summary: Performs maintenance tasks on Artifactory repositories
248
253
  test_files: []