BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
3f5e6c6c
Commit
3f5e6c6c
authored
Jan 21, 2016
by
Robert Speicher
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'ci/recursive-artifacts-entries' into 'master'
Add method to calculate total size of artifacts in subpath See merge request !2500
parents
307b0990
9b0f5778
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
46 additions
and
19 deletions
+46
-19
build.rb
app/models/ci/build.rb
+4
-4
show.html.haml
app/views/projects/builds/show.html.haml
+1
-1
metadata.rb
lib/gitlab/ci/build/artifacts/metadata.rb
+5
-3
entry.rb
lib/gitlab/ci/build/artifacts/metadata/entry.rb
+7
-0
entry_spec.rb
spec/lib/gitlab/ci/build/artifacts/metadata/entry_spec.rb
+10
-5
metadata_spec.rb
spec/lib/gitlab/ci/build/artifacts/metadata_spec.rb
+15
-2
build_spec.rb
spec/models/build_spec.rb
+4
-4
No files found.
app/models/ci/build.rb
View file @
3f5e6c6c
...
...
@@ -346,17 +346,17 @@ module Ci
end
def
artifacts_browse_url
if
artifacts_
browser_supported
?
if
artifacts_
metadata
?
browse_namespace_project_build_artifacts_path
(
project
.
namespace
,
project
,
self
)
end
end
def
artifacts_
browser_supported
?
def
artifacts_
metadata
?
artifacts?
&&
artifacts_metadata
.
exists?
end
def
artifacts_metadata_entry
(
path
)
Gitlab
::
Ci
::
Build
::
Artifacts
::
Metadata
.
new
(
artifacts_metadata
.
path
,
path
).
to_entry
def
artifacts_metadata_entry
(
path
,
**
options
)
Gitlab
::
Ci
::
Build
::
Artifacts
::
Metadata
.
new
(
artifacts_metadata
.
path
,
path
,
**
options
).
to_entry
end
private
...
...
app/views/projects/builds/show.html.haml
View file @
3f5e6c6c
...
...
@@ -96,7 +96,7 @@
.center
.btn-group
{
role: :group
}
=
link_to
"Download"
,
@build
.
artifacts_download_url
,
class:
'btn btn-sm btn-primary'
-
if
@build
.
artifacts_
browser_supported
?
-
if
@build
.
artifacts_
metadata
?
=
link_to
"Browse"
,
@build
.
artifacts_browse_url
,
class:
'btn btn-sm btn-primary'
.build-widget
...
...
lib/gitlab/ci/build/artifacts/metadata.rb
View file @
3f5e6c6c
...
...
@@ -13,8 +13,8 @@ module Gitlab
attr_reader
:file
,
:path
,
:full_version
def
initialize
(
file
,
path
)
@file
,
@path
=
file
,
path
def
initialize
(
file
,
path
,
**
opts
)
@file
,
@path
,
@opts
=
file
,
path
,
opts
@full_version
=
read_version
end
...
...
@@ -52,7 +52,9 @@ module Gitlab
def
match_entries
(
gz
)
entries
=
{}
match_pattern
=
%r{^
#{
Regexp
.
escape
(
@path
)
}
[^/]*/?$}
child_pattern
=
'[^/]*/?$'
unless
@opts
[
:recursive
]
match_pattern
=
/^
#{
Regexp
.
escape
(
@path
)
}#{
child_pattern
}
/
until
gz
.
eof?
do
begin
...
...
lib/gitlab/ci/build/artifacts/metadata/entry.rb
View file @
3f5e6c6c
...
...
@@ -95,6 +95,13 @@ module Gitlab
children
.
empty?
end
def
total_size
descendant_pattern
=
%r{^
#{
Regexp
.
escape
(
@path
)
}
}
entries
.
sum
do
|
path
,
entry
|
(
entry
[
:size
]
if
path
=~
descendant_pattern
).
to_i
end
end
def
to_s
@path
end
...
...
spec/lib/gitlab/ci/build/artifacts/metadata/entry_spec.rb
View file @
3f5e6c6c
...
...
@@ -4,13 +4,13 @@ describe Gitlab::Ci::Build::Artifacts::Metadata::Entry do
let
(
:entries
)
do
{
'path/'
=>
{},
'path/dir_1/'
=>
{},
'path/dir_1/file_1'
=>
{},
'path/dir_1/file_b'
=>
{},
'path/dir_1/file_1'
=>
{
size:
10
},
'path/dir_1/file_b'
=>
{
size:
10
},
'path/dir_1/subdir/'
=>
{},
'path/dir_1/subdir/subfile'
=>
{},
'path/dir_1/subdir/subfile'
=>
{
size:
10
},
'path/second_dir'
=>
{},
'path/second_dir/dir_3/file_2'
=>
{},
'path/second_dir/dir_3/file_3'
=>
{},
'path/second_dir/dir_3/file_2'
=>
{
size:
10
},
'path/second_dir/dir_3/file_3'
=>
{
size:
10
},
'another_directory/'
=>
{},
'another_file'
=>
{},
'/file/with/absolute_path'
=>
{}
}
...
...
@@ -112,6 +112,11 @@ describe Gitlab::Ci::Build::Artifacts::Metadata::Entry do
subject
{
|
example
|
path
(
example
).
empty?
}
it
{
is_expected
.
to
be
false
}
end
describe
'#total_size'
do
subject
{
|
example
|
path
(
example
).
total_size
}
it
{
is_expected
.
to
eq
(
30
)
}
end
end
end
...
...
spec/lib/gitlab/ci/build/artifacts/metadata_spec.rb
View file @
3f5e6c6c
require
'spec_helper'
describe
Gitlab
::
Ci
::
Build
::
Artifacts
::
Metadata
do
def
metadata
(
path
=
''
)
described_class
.
new
(
metadata_file_path
,
path
)
def
metadata
(
path
=
''
,
**
opts
)
described_class
.
new
(
metadata_file_path
,
path
,
**
opts
)
end
let
(
:metadata_file_path
)
do
...
...
@@ -51,6 +51,19 @@ describe Gitlab::Ci::Build::Artifacts::Metadata do
end
end
describe
'#find_entries! recursively for other_artifacts_0.1.2/'
do
subject
{
metadata
(
'other_artifacts_0.1.2/'
,
recursive:
true
).
find_entries!
}
it
'matches correct paths'
do
expect
(
subject
.
keys
).
to
contain_exactly
'other_artifacts_0.1.2/'
,
'other_artifacts_0.1.2/doc_sample.txt'
,
'other_artifacts_0.1.2/another-subdirectory/'
,
'other_artifacts_0.1.2/another-subdirectory/empty_directory/'
,
'other_artifacts_0.1.2/another-subdirectory/banana_sample.gif'
end
end
describe
'#to_entry'
do
subject
{
metadata
(
''
).
to_entry
}
it
{
is_expected
.
to
be_an_instance_of
(
Gitlab
::
Ci
::
Build
::
Artifacts
::
Metadata
::
Entry
)
}
...
...
spec/models/build_spec.rb
View file @
3f5e6c6c
...
...
@@ -362,12 +362,12 @@ describe Ci::Build, models: true do
subject
{
build
.
artifacts_browse_url
}
it
"should be nil if artifacts browser is unsupported"
do
allow
(
build
).
to
receive
(
:artifacts_
browser_supported
?
).
and_return
(
false
)
allow
(
build
).
to
receive
(
:artifacts_
metadata
?
).
and_return
(
false
)
is_expected
.
to
be_nil
end
it
'should not be nil if artifacts browser is supported'
do
allow
(
build
).
to
receive
(
:artifacts_
browser_supported
?
).
and_return
(
true
)
allow
(
build
).
to
receive
(
:artifacts_
metadata
?
).
and_return
(
true
)
is_expected
.
to_not
be_nil
end
end
...
...
@@ -391,8 +391,8 @@ describe Ci::Build, models: true do
end
describe
:artifacts_
browser_supported
?
do
subject
{
build
.
artifacts_
browser_supported
?
}
describe
:artifacts_
metadata
?
do
subject
{
build
.
artifacts_
metadata
?
}
context
'artifacts metadata does not exist'
do
it
{
is_expected
.
to
be_falsy
}
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment