artifactory 2.5.2 → 2.6.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.
- checksums.yaml +4 -4
- data/.travis.yml +3 -2
- data/CHANGELOG.md +6 -0
- data/Gemfile +9 -13
- data/README.md +10 -1
- data/Rakefile +16 -7
- data/appveyor.yml +4 -2
- data/artifactory.gemspec +14 -14
- data/lib/artifactory.rb +26 -26
- data/lib/artifactory/client.rb +25 -23
- data/lib/artifactory/configurable.rb +1 -0
- data/lib/artifactory/defaults.rb +24 -15
- data/lib/artifactory/errors.rb +2 -2
- data/lib/artifactory/resources/artifact.rb +34 -33
- data/lib/artifactory/resources/backup.rb +5 -5
- data/lib/artifactory/resources/base.rb +7 -7
- data/lib/artifactory/resources/build.rb +15 -15
- data/lib/artifactory/resources/build_component.rb +4 -4
- data/lib/artifactory/resources/group.rb +4 -4
- data/lib/artifactory/resources/layout.rb +3 -3
- data/lib/artifactory/resources/ldap_setting.rb +7 -6
- data/lib/artifactory/resources/mail_server.rb +3 -3
- data/lib/artifactory/resources/permission_target.rb +20 -20
- data/lib/artifactory/resources/plugin.rb +1 -1
- data/lib/artifactory/resources/repository.rb +20 -20
- data/lib/artifactory/resources/system.rb +6 -6
- data/lib/artifactory/resources/url_base.rb +4 -3
- data/lib/artifactory/resources/user.rb +4 -4
- data/lib/artifactory/util.rb +10 -10
- data/lib/artifactory/version.rb +1 -1
- data/spec/integration/resources/artifact_spec.rb +31 -31
- data/spec/integration/resources/backup.rb +7 -7
- data/spec/integration/resources/build_component_spec.rb +18 -18
- data/spec/integration/resources/build_spec.rb +15 -15
- data/spec/integration/resources/group_spec.rb +16 -16
- data/spec/integration/resources/layout_spec.rb +7 -7
- data/spec/integration/resources/ldap_setting_spec.rb +7 -7
- data/spec/integration/resources/mail_server_spec.rb +7 -7
- data/spec/integration/resources/permission_target_spec.rb +35 -35
- data/spec/integration/resources/repository_spec.rb +14 -14
- data/spec/integration/resources/system_spec.rb +20 -21
- data/spec/integration/resources/url_base_spec.rb +7 -7
- data/spec/integration/resources/user_spec.rb +16 -16
- data/spec/spec_helper.rb +11 -11
- data/spec/support/api_server.rb +13 -13
- data/spec/support/api_server/artifact_endpoints.rb +94 -94
- data/spec/support/api_server/build_component_endpoints.rb +18 -18
- data/spec/support/api_server/build_endpoints.rb +76 -76
- data/spec/support/api_server/group_endpoints.rb +24 -24
- data/spec/support/api_server/permission_target_endpoints.rb +24 -24
- data/spec/support/api_server/repository_endpoints.rb +82 -82
- data/spec/support/api_server/status_endpoints.rb +5 -5
- data/spec/support/api_server/system_endpoints.rb +17 -18
- data/spec/support/api_server/user_endpoints.rb +30 -30
- data/spec/unit/artifactory_spec.rb +17 -17
- data/spec/unit/client_spec.rb +43 -43
- data/spec/unit/resources/artifact_spec.rb +256 -256
- data/spec/unit/resources/backup_spec.rb +8 -8
- data/spec/unit/resources/base_spec.rb +51 -51
- data/spec/unit/resources/build_component_spec.rb +45 -45
- data/spec/unit/resources/build_spec.rb +98 -98
- data/spec/unit/resources/defaults_spec.rb +4 -4
- data/spec/unit/resources/group_spec.rb +36 -36
- data/spec/unit/resources/layout_spec.rb +8 -8
- data/spec/unit/resources/ldap_setting_spec.rb +8 -8
- data/spec/unit/resources/mail_server_spec.rb +8 -8
- data/spec/unit/resources/permission_target_spec.rb +79 -79
- data/spec/unit/resources/plugin_spec.rb +7 -7
- data/spec/unit/resources/repository_spec.rb +98 -98
- data/spec/unit/resources/system_spec.rb +30 -30
- data/spec/unit/resources/url_base_spec.rb +8 -8
- data/spec/unit/resources/user_spec.rb +40 -40
- metadata +3 -3
data/lib/artifactory/errors.rb
CHANGED
|
@@ -24,8 +24,8 @@ module Artifactory
|
|
|
24
24
|
attr_reader :code
|
|
25
25
|
|
|
26
26
|
def initialize(hash = {})
|
|
27
|
-
@code = hash[
|
|
28
|
-
@http = hash[
|
|
27
|
+
@code = hash["status"].to_i
|
|
28
|
+
@http = hash["message"].to_s
|
|
29
29
|
|
|
30
30
|
super "The Artifactory server responded with an HTTP Error " \
|
|
31
31
|
"#{@code}: `#{@http}'"
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
#
|
|
16
16
|
|
|
17
|
-
require
|
|
17
|
+
require "tempfile"
|
|
18
|
+
require "time"
|
|
18
19
|
|
|
19
20
|
module Artifactory
|
|
20
21
|
class Resource::Artifact < Resource::Base
|
|
@@ -46,8 +47,8 @@ module Artifactory
|
|
|
46
47
|
params = Util.slice(options, :name, :repos)
|
|
47
48
|
format_repos!(params)
|
|
48
49
|
|
|
49
|
-
client.get(
|
|
50
|
-
from_url(artifact[
|
|
50
|
+
client.get("/api/search/artifact", params)["results"].map do |artifact|
|
|
51
|
+
from_url(artifact["uri"], client: client)
|
|
51
52
|
end
|
|
52
53
|
end
|
|
53
54
|
|
|
@@ -97,13 +98,13 @@ module Artifactory
|
|
|
97
98
|
:group => :g,
|
|
98
99
|
:name => :a,
|
|
99
100
|
:version => :v,
|
|
100
|
-
:classifier => :c
|
|
101
|
+
:classifier => :c
|
|
101
102
|
)
|
|
102
103
|
params = Util.slice(options, :g, :a, :v, :c, :repos)
|
|
103
104
|
format_repos!(params)
|
|
104
105
|
|
|
105
|
-
client.get(
|
|
106
|
-
from_url(artifact[
|
|
106
|
+
client.get("/api/search/gavc", params)["results"].map do |artifact|
|
|
107
|
+
from_url(artifact["uri"], client: client)
|
|
107
108
|
end
|
|
108
109
|
end
|
|
109
110
|
|
|
@@ -141,8 +142,8 @@ module Artifactory
|
|
|
141
142
|
params = options.dup
|
|
142
143
|
format_repos!(params)
|
|
143
144
|
|
|
144
|
-
client.get(
|
|
145
|
-
from_url(artifact[
|
|
145
|
+
client.get("/api/search/prop", params)["results"].map do |artifact|
|
|
146
|
+
from_url(artifact["uri"], client: client)
|
|
146
147
|
end
|
|
147
148
|
end
|
|
148
149
|
|
|
@@ -180,8 +181,8 @@ module Artifactory
|
|
|
180
181
|
params = Util.slice(options, :md5, :sha1, :repos)
|
|
181
182
|
format_repos!(params)
|
|
182
183
|
|
|
183
|
-
client.get(
|
|
184
|
-
from_url(artifact[
|
|
184
|
+
client.get("/api/search/checksum", params)["results"].map do |artifact|
|
|
185
|
+
from_url(artifact["uri"], client: client)
|
|
185
186
|
end
|
|
186
187
|
end
|
|
187
188
|
|
|
@@ -221,8 +222,8 @@ module Artifactory
|
|
|
221
222
|
params = Util.slice(options, :notUsedSince, :createdBefore, :repos)
|
|
222
223
|
format_repos!(params)
|
|
223
224
|
|
|
224
|
-
client.get(
|
|
225
|
-
from_url(artifact[
|
|
225
|
+
client.get("/api/search/usage", params)["results"].map do |artifact|
|
|
226
|
+
from_url(artifact["uri"], client: client)
|
|
226
227
|
end
|
|
227
228
|
end
|
|
228
229
|
|
|
@@ -262,8 +263,8 @@ module Artifactory
|
|
|
262
263
|
params = Util.slice(options, :from, :to, :repos)
|
|
263
264
|
format_repos!(params)
|
|
264
265
|
|
|
265
|
-
client.get(
|
|
266
|
-
from_url(artifact[
|
|
266
|
+
client.get("/api/search/creation", params)["results"].map do |artifact|
|
|
267
|
+
from_url(artifact["uri"], client: client)
|
|
267
268
|
end
|
|
268
269
|
end
|
|
269
270
|
|
|
@@ -292,12 +293,12 @@ module Artifactory
|
|
|
292
293
|
options = Util.rename_keys(options,
|
|
293
294
|
:group => :g,
|
|
294
295
|
:name => :a,
|
|
295
|
-
:version => :v
|
|
296
|
+
:version => :v
|
|
296
297
|
)
|
|
297
298
|
params = Util.slice(options, :g, :a, :v, :repos)
|
|
298
299
|
format_repos!(params)
|
|
299
300
|
|
|
300
|
-
client.get(
|
|
301
|
+
client.get("/api/search/versions", params)["results"]
|
|
301
302
|
rescue Error::HTTPError => e
|
|
302
303
|
raise unless e.code == 404
|
|
303
304
|
[]
|
|
@@ -343,7 +344,7 @@ module Artifactory
|
|
|
343
344
|
options = Util.rename_keys(options,
|
|
344
345
|
:group => :g,
|
|
345
346
|
:name => :a,
|
|
346
|
-
:version => :v
|
|
347
|
+
:version => :v
|
|
347
348
|
)
|
|
348
349
|
params = Util.slice(options, :g, :a, :v, :repos, :remote)
|
|
349
350
|
format_repos!(params)
|
|
@@ -352,7 +353,7 @@ module Artifactory
|
|
|
352
353
|
# literal "1"...
|
|
353
354
|
params[:remote] = 1 if options[:remote]
|
|
354
355
|
|
|
355
|
-
client.get(
|
|
356
|
+
client.get("/api/search/latestVersion", params)
|
|
356
357
|
rescue Error::HTTPError => e
|
|
357
358
|
raise unless e.code == 404
|
|
358
359
|
nil
|
|
@@ -371,14 +372,14 @@ module Artifactory
|
|
|
371
372
|
end
|
|
372
373
|
end
|
|
373
374
|
|
|
374
|
-
attribute :uri, ->{ raise
|
|
375
|
+
attribute :uri, -> { raise "API path missing!" }
|
|
375
376
|
attribute :checksums
|
|
376
377
|
attribute :created
|
|
377
|
-
attribute :download_uri, ->{ raise
|
|
378
|
+
attribute :download_uri, -> { raise "Download URI missing!" }
|
|
378
379
|
attribute :key
|
|
379
380
|
attribute :last_modified
|
|
380
381
|
attribute :last_updated
|
|
381
|
-
attribute :local_path, ->{ raise
|
|
382
|
+
attribute :local_path, -> { raise "Local destination missing!" }
|
|
382
383
|
attribute :mime_type
|
|
383
384
|
attribute :repo
|
|
384
385
|
attribute :size
|
|
@@ -389,7 +390,7 @@ module Artifactory
|
|
|
389
390
|
# @return [String]
|
|
390
391
|
#
|
|
391
392
|
def sha1
|
|
392
|
-
checksums && checksums[
|
|
393
|
+
checksums && checksums["sha1"]
|
|
393
394
|
end
|
|
394
395
|
|
|
395
396
|
#
|
|
@@ -398,7 +399,7 @@ module Artifactory
|
|
|
398
399
|
# @return [String]
|
|
399
400
|
#
|
|
400
401
|
def md5
|
|
401
|
-
checksums && checksums[
|
|
402
|
+
checksums && checksums["md5"]
|
|
402
403
|
end
|
|
403
404
|
|
|
404
405
|
#
|
|
@@ -438,7 +439,7 @@ module Artifactory
|
|
|
438
439
|
# the list of properties
|
|
439
440
|
#
|
|
440
441
|
def properties
|
|
441
|
-
@properties ||= client.get(File.join(
|
|
442
|
+
@properties ||= client.get(File.join("/api/storage", relative_path), properties: nil)["properties"]
|
|
442
443
|
end
|
|
443
444
|
|
|
444
445
|
#
|
|
@@ -453,7 +454,7 @@ module Artifactory
|
|
|
453
454
|
# @return [Hash<String, Array<Hash>>]
|
|
454
455
|
#
|
|
455
456
|
def compliance
|
|
456
|
-
@compliance ||= client.get(File.join(
|
|
457
|
+
@compliance ||= client.get(File.join("/api/compliance", relative_path))
|
|
457
458
|
end
|
|
458
459
|
|
|
459
460
|
#
|
|
@@ -489,7 +490,7 @@ module Artifactory
|
|
|
489
490
|
# Construct the full path for the file
|
|
490
491
|
destination = File.join(target, filename)
|
|
491
492
|
|
|
492
|
-
File.open(destination,
|
|
493
|
+
File.open(destination, "wb") do |file|
|
|
493
494
|
file.write(client.get(download_uri))
|
|
494
495
|
end
|
|
495
496
|
|
|
@@ -535,8 +536,8 @@ module Artifactory
|
|
|
535
536
|
endpoint = File.join("#{url_safe(repo)}#{matrix}", remote_path)
|
|
536
537
|
|
|
537
538
|
# Include checksums in headers if given.
|
|
538
|
-
headers[
|
|
539
|
-
headers[
|
|
539
|
+
headers["X-Checksum-Md5"] = md5 if md5
|
|
540
|
+
headers["X-Checksum-Sha1"] = sha1 if sha1
|
|
540
541
|
|
|
541
542
|
response = client.put(endpoint, file, headers)
|
|
542
543
|
|
|
@@ -593,8 +594,8 @@ module Artifactory
|
|
|
593
594
|
#
|
|
594
595
|
def upload_with_checksum(repo, remote_path, checksum, properties = {})
|
|
595
596
|
upload(repo, remote_path, properties,
|
|
596
|
-
|
|
597
|
-
|
|
597
|
+
"X-Checksum-Deploy" => true,
|
|
598
|
+
"X-Checksum-Sha1" => checksum
|
|
598
599
|
)
|
|
599
600
|
end
|
|
600
601
|
|
|
@@ -612,7 +613,7 @@ module Artifactory
|
|
|
612
613
|
#
|
|
613
614
|
def upload_from_archive(repo, remote_path, properties = {})
|
|
614
615
|
upload(repo, remote_path, properties,
|
|
615
|
-
|
|
616
|
+
"X-Explode-Archive" => true
|
|
616
617
|
)
|
|
617
618
|
end
|
|
618
619
|
|
|
@@ -628,7 +629,7 @@ module Artifactory
|
|
|
628
629
|
# @return [String]
|
|
629
630
|
#
|
|
630
631
|
def relative_path
|
|
631
|
-
@relative_path ||= uri.split(
|
|
632
|
+
@relative_path ||= uri.split("/api/storage", 2).last
|
|
632
633
|
end
|
|
633
634
|
|
|
634
635
|
#
|
|
@@ -664,7 +665,7 @@ module Artifactory
|
|
|
664
665
|
param[:dry] = 1 if options[:dry_run]
|
|
665
666
|
end
|
|
666
667
|
|
|
667
|
-
endpoint = File.join(
|
|
668
|
+
endpoint = File.join("/api", action.to_s, relative_path) + "?#{to_query_string_parameters(params)}"
|
|
668
669
|
|
|
669
670
|
client.post(endpoint, {})
|
|
670
671
|
end
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
#
|
|
16
16
|
|
|
17
|
-
require
|
|
17
|
+
require "rexml/document"
|
|
18
18
|
|
|
19
19
|
module Artifactory
|
|
20
20
|
class Resource::Backup < Resource::Base
|
|
@@ -33,7 +33,7 @@ module Artifactory
|
|
|
33
33
|
#
|
|
34
34
|
def all(options = {})
|
|
35
35
|
config = Resource::System.configuration(options)
|
|
36
|
-
list_from_config(
|
|
36
|
+
list_from_config("config/backups/backup", config, options)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
#
|
|
@@ -81,7 +81,7 @@ module Artifactory
|
|
|
81
81
|
#
|
|
82
82
|
def list_from_config(xpath, config, options = {})
|
|
83
83
|
REXML::XPath.match(config, xpath).map do |r|
|
|
84
|
-
hash = Util.xml_to_hash(r,
|
|
84
|
+
hash = Util.xml_to_hash(r, "excludedRepositories", false)
|
|
85
85
|
from_hash(hash, options)
|
|
86
86
|
end
|
|
87
87
|
end
|
|
@@ -102,12 +102,12 @@ module Artifactory
|
|
|
102
102
|
def find_from_config(xpath, config, options = {})
|
|
103
103
|
name_node = REXML::XPath.match(config, xpath)
|
|
104
104
|
return nil if name_node.empty?
|
|
105
|
-
properties = Util.xml_to_hash(name_node[0].parent,
|
|
105
|
+
properties = Util.xml_to_hash(name_node[0].parent, "excludedRepositories", false)
|
|
106
106
|
from_hash(properties, options)
|
|
107
107
|
end
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
attribute :key, ->{ raise
|
|
110
|
+
attribute :key, -> { raise "name missing!" }
|
|
111
111
|
attribute :enabled, true
|
|
112
112
|
attribute :dir
|
|
113
113
|
attribute :cron_exp
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
#
|
|
16
16
|
|
|
17
|
-
require
|
|
18
|
-
require
|
|
19
|
-
require
|
|
17
|
+
require "cgi"
|
|
18
|
+
require "json"
|
|
19
|
+
require "uri"
|
|
20
20
|
|
|
21
21
|
module Artifactory
|
|
22
22
|
class Resource::Base
|
|
@@ -227,7 +227,7 @@ module Artifactory
|
|
|
227
227
|
#
|
|
228
228
|
def format_repos!(options)
|
|
229
229
|
return options if options[:repos].nil? || options[:repos].empty?
|
|
230
|
-
options[:repos] = Array(options[:repos]).compact.join(
|
|
230
|
+
options[:repos] = Array(options[:repos]).compact.join(",")
|
|
231
231
|
options
|
|
232
232
|
end
|
|
233
233
|
|
|
@@ -245,7 +245,7 @@ module Artifactory
|
|
|
245
245
|
end
|
|
246
246
|
end
|
|
247
247
|
|
|
248
|
-
attribute :client, ->{ Artifactory.client }
|
|
248
|
+
attribute :client, -> { Artifactory.client }
|
|
249
249
|
|
|
250
250
|
#
|
|
251
251
|
# Create a new instance
|
|
@@ -360,7 +360,7 @@ module Artifactory
|
|
|
360
360
|
if properties.empty?
|
|
361
361
|
nil
|
|
362
362
|
else
|
|
363
|
-
properties.join(
|
|
363
|
+
properties.join("&")
|
|
364
364
|
end
|
|
365
365
|
end
|
|
366
366
|
|
|
@@ -383,7 +383,7 @@ module Artifactory
|
|
|
383
383
|
private
|
|
384
384
|
|
|
385
385
|
def short_classname
|
|
386
|
-
@short_classname ||= self.class.name.split(
|
|
386
|
+
@short_classname ||= self.class.name.split("::").last
|
|
387
387
|
end
|
|
388
388
|
end
|
|
389
389
|
end
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
#
|
|
16
16
|
|
|
17
|
-
require
|
|
17
|
+
require "time"
|
|
18
18
|
|
|
19
19
|
module Artifactory
|
|
20
20
|
class Resource::Build < Resource::Base
|
|
21
|
-
BUILD_SCHEMA_VERSION =
|
|
21
|
+
BUILD_SCHEMA_VERSION = "1.0.1".freeze
|
|
22
22
|
# valid build types as dictated by the Artifactory API
|
|
23
|
-
BUILD_TYPES = %w
|
|
23
|
+
BUILD_TYPES = %w{ ANT IVY MAVEN GENERIC GRADLE }
|
|
24
24
|
|
|
25
25
|
class << self
|
|
26
26
|
#
|
|
@@ -39,9 +39,9 @@ module Artifactory
|
|
|
39
39
|
#
|
|
40
40
|
def all(name, options = {})
|
|
41
41
|
client = extract_client!(options)
|
|
42
|
-
client.get("/api/build/#{url_safe(name)}")[
|
|
42
|
+
client.get("/api/build/#{url_safe(name)}")["buildsNumbers"].map do |build_number|
|
|
43
43
|
# Remove the leading / from the `uri` value. Converts `/484` to `484`.
|
|
44
|
-
number = build_number[
|
|
44
|
+
number = build_number["uri"].slice(1..-1)
|
|
45
45
|
find(name, number, client: client)
|
|
46
46
|
end.compact.flatten
|
|
47
47
|
rescue Error::HTTPError => e
|
|
@@ -75,7 +75,7 @@ module Artifactory
|
|
|
75
75
|
def find(name, number, options = {})
|
|
76
76
|
client = extract_client!(options)
|
|
77
77
|
response = client.get("/api/build/#{url_safe(name)}/#{url_safe(number)}")
|
|
78
|
-
from_hash(response[
|
|
78
|
+
from_hash(response["buildInfo"], client: client)
|
|
79
79
|
rescue Error::HTTPError => e
|
|
80
80
|
raise unless e.code == 404
|
|
81
81
|
nil
|
|
@@ -95,9 +95,9 @@ module Artifactory
|
|
|
95
95
|
# Based on https://github.com/JFrogDev/build-info/blob/master/README.md#build-info-json-format
|
|
96
96
|
attribute :properties, {}
|
|
97
97
|
attribute :version, BUILD_SCHEMA_VERSION
|
|
98
|
-
attribute :name, ->{ raise
|
|
99
|
-
attribute :number, ->{ raise
|
|
100
|
-
attribute :type,
|
|
98
|
+
attribute :name, -> { raise "Build component missing!" }
|
|
99
|
+
attribute :number, -> { raise "Build number missing!" }
|
|
100
|
+
attribute :type, "GENERIC"
|
|
101
101
|
attribute :build_agent, {}
|
|
102
102
|
attribute :agent, {}
|
|
103
103
|
attribute :started, Time.now.utc.iso8601(3)
|
|
@@ -126,7 +126,7 @@ module Artifactory
|
|
|
126
126
|
# the list of properties
|
|
127
127
|
#
|
|
128
128
|
def diff(previous_build_number)
|
|
129
|
-
endpoint = api_path +
|
|
129
|
+
endpoint = api_path + "?" "diff=#{url_safe(previous_build_number)}"
|
|
130
130
|
client.get(endpoint, {})
|
|
131
131
|
end
|
|
132
132
|
|
|
@@ -173,8 +173,8 @@ module Artifactory
|
|
|
173
173
|
#
|
|
174
174
|
def promote(target_repo, options = {})
|
|
175
175
|
request_body = {}.tap do |body|
|
|
176
|
-
body[:status] = options[:status] ||
|
|
177
|
-
body[:comment] = options[:comment] ||
|
|
176
|
+
body[:status] = options[:status] || "promoted"
|
|
177
|
+
body[:comment] = options[:comment] || ""
|
|
178
178
|
body[:ciUser] = options[:user] || Artifactory.username
|
|
179
179
|
body[:dryRun] = options[:dry_run] || false
|
|
180
180
|
body[:targetRepo] = target_repo
|
|
@@ -188,7 +188,7 @@ module Artifactory
|
|
|
188
188
|
|
|
189
189
|
endpoint = "/api/build/promote/#{url_safe(name)}/#{url_safe(number)}"
|
|
190
190
|
client.post(endpoint, JSON.fast_generate(request_body),
|
|
191
|
-
|
|
191
|
+
"Content-Type" => "application/json"
|
|
192
192
|
)
|
|
193
193
|
end
|
|
194
194
|
|
|
@@ -204,8 +204,8 @@ module Artifactory
|
|
|
204
204
|
file.write(to_json)
|
|
205
205
|
file.rewind
|
|
206
206
|
|
|
207
|
-
client.put(
|
|
208
|
-
|
|
207
|
+
client.put("/api/build", file,
|
|
208
|
+
"Content-Type" => "application/json"
|
|
209
209
|
)
|
|
210
210
|
true
|
|
211
211
|
ensure
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
#
|
|
16
16
|
|
|
17
|
-
require
|
|
17
|
+
require "time"
|
|
18
18
|
|
|
19
19
|
module Artifactory
|
|
20
20
|
class Resource::BuildComponent < Resource::Base
|
|
@@ -33,7 +33,7 @@ module Artifactory
|
|
|
33
33
|
#
|
|
34
34
|
def all(options = {})
|
|
35
35
|
client = extract_client!(options)
|
|
36
|
-
client.get(
|
|
36
|
+
client.get("/api/build")["builds"].map do |component|
|
|
37
37
|
from_hash(component, client: client)
|
|
38
38
|
end.compact.flatten
|
|
39
39
|
rescue Error::HTTPError => e
|
|
@@ -82,7 +82,7 @@ module Artifactory
|
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
attribute :uri
|
|
85
|
-
attribute :name, ->{ raise
|
|
85
|
+
attribute :name, -> { raise "Name missing!" }
|
|
86
86
|
attribute :last_started
|
|
87
87
|
|
|
88
88
|
#
|
|
@@ -117,7 +117,7 @@ module Artifactory
|
|
|
117
117
|
#
|
|
118
118
|
def delete(options = {})
|
|
119
119
|
params = {}.tap do |param|
|
|
120
|
-
param[:buildNumbers] = options[:build_numbers].join(
|
|
120
|
+
param[:buildNumbers] = options[:build_numbers].join(",") if options[:build_numbers]
|
|
121
121
|
param[:artifacts] = 1 if options[:artifacts]
|
|
122
122
|
param[:deleteAll] = 1 if options[:delete_all]
|
|
123
123
|
end
|
|
@@ -31,8 +31,8 @@ module Artifactory
|
|
|
31
31
|
#
|
|
32
32
|
def all(options = {})
|
|
33
33
|
client = extract_client!(options)
|
|
34
|
-
client.get(
|
|
35
|
-
from_url(hash[
|
|
34
|
+
client.get("/api/security/groups").map do |hash|
|
|
35
|
+
from_url(hash["uri"], client: client)
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
|
|
@@ -67,7 +67,7 @@ module Artifactory
|
|
|
67
67
|
|
|
68
68
|
attribute :auto_join
|
|
69
69
|
attribute :description
|
|
70
|
-
attribute :name, ->{ raise
|
|
70
|
+
attribute :name, -> { raise "Name missing!" }
|
|
71
71
|
attribute :realm
|
|
72
72
|
attribute :realm_attributes
|
|
73
73
|
|
|
@@ -118,7 +118,7 @@ module Artifactory
|
|
|
118
118
|
#
|
|
119
119
|
def headers
|
|
120
120
|
@headers ||= {
|
|
121
|
-
|
|
121
|
+
"Content-Type" => "application/vnd.org.jfrog.artifactory.security.Group+json",
|
|
122
122
|
}
|
|
123
123
|
end
|
|
124
124
|
end
|