Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
789fe7b4
Commit
789fe7b4
authored
Oct 12, 2015
by
Kamil Trzcinski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update rendering
parent
69c04498
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
64 additions
and
87 deletions
+64
-87
app/models/ci/commit.rb
app/models/ci/commit.rb
+32
-34
app/models/commit_status.rb
app/models/commit_status.rb
+3
-2
app/views/projects/builds/show.html.haml
app/views/projects/builds/show.html.haml
+3
-3
app/views/projects/commit/ci.html.haml
app/views/projects/commit/ci.html.haml
+23
-44
app/views/projects/commit_statuses/_commit_status.html.haml
app/views/projects/commit_statuses/_commit_status.html.haml
+2
-3
lib/api/commit_statuses.rb
lib/api/commit_statuses.rb
+1
-1
No files found.
app/models/ci/commit.rb
View file @
789fe7b4
...
...
@@ -106,52 +106,49 @@ module Ci
end
def
refs
statuses
.
pluck
(
:ref
).
compact
.
uniq
statuses
.
order
(
:ref
).
pluck
(
:ref
)
.
uniq
end
def
statuses_for_ref
(
ref
=
nil
)
if
ref
statuses
.
for_ref
(
ref
)
else
statuses
end
def
latest_statuses
@latest_statuses
||=
statuses
.
latest
.
to_a
end
def
builds_without_retry
(
ref
=
nil
)
if
ref
builds
.
for_ref
(
ref
).
latest
else
builds
.
latest
def
builds_without_retry
@builds_without_retry
||=
builds
.
latest
.
to_a
end
def
builds_without_retry_for_ref
(
ref
)
builds_without_retry
.
select
{
|
build
|
build
.
ref
==
ref
}
end
def
retried
@retried
||=
(
statuses
.
order
(
id: :desc
)
-
statuses
.
latest
)
end
def
status
(
ref
=
nil
)
def
status
if
yaml_errors
.
present?
return
'failed'
end
latest_statuses
=
statuses
.
latest
.
to_a
latest_statuses
.
reject!
{
|
status
|
status
.
try
(
&
:allow_failure?
)
}
latest_statuses
.
select!
{
|
status
|
status
.
ref
.
nil?
||
status
.
ref
==
ref
}
if
ref
@status
||=
begin
latest
=
latest_statuses
latest
.
reject!
{
|
status
|
status
.
try
(
&
:allow_failure?
)
}
if
latest_statuses
.
none?
return
'skipped'
elsif
latest_statuses
.
all?
(
&
:success?
)
if
latest
.
none?
'skipped'
elsif
latest
.
all?
(
&
:success?
)
'success'
elsif
latest_statuses
.
all?
(
&
:pending?
)
elsif
latest
.
all?
(
&
:pending?
)
'pending'
elsif
latest_statuses
.
any?
(
&
:running?
)
||
latest_statuses
.
any?
(
&
:pending?
)
elsif
latest
.
any?
(
&
:running?
)
||
latest
.
any?
(
&
:pending?
)
'running'
elsif
latest_statuses
.
all?
(
&
:canceled?
)
elsif
latest
.
all?
(
&
:canceled?
)
'canceled'
else
'failed'
end
end
end
def
pending?
status
==
'pending'
...
...
@@ -173,8 +170,9 @@ module Ci
status
==
'canceled'
end
def
duration
(
ref
=
nil
)
statuses_for_ref
(
ref
).
latest
.
select
(
&
:duration
).
sum
(
&
:duration
).
to_i
def
duration
duration_array
=
latest_statuses
.
map
(
&
:duration
).
compact
duration_array
.
reduce
(:
+
).
to_i
end
def
finished_at
...
...
@@ -190,8 +188,8 @@ module Ci
end
end
def
matrix?
(
ref
)
builds_without_retry
(
ref
).
pluck
(
:id
).
size
>
1
def
matrix
_for_ref
?
(
ref
)
builds_without_retry
_for_ref
(
ref
).
size
>
1
end
def
config_processor
...
...
app/models/commit_status.rb
View file @
789fe7b4
...
...
@@ -16,8 +16,9 @@ class CommitStatus < ActiveRecord::Base
scope
:success
,
->
{
where
(
status:
'success'
)
}
scope
:failed
,
->
{
where
(
status:
'failed'
)
}
scope
:running_or_pending
,
->
{
where
(
status
:[
:running
,
:pending
])
}
scope
:latest
,
->
{
where
(
id:
unscope
(
:select
).
select
(
'max(id)'
).
group
(
:name
,
:ref
)).
order
(
stage_idx: :asc
)
}
scope
:for_ref
,
->
(
ref
)
{
where
(
ref:
[
ref
,
nil
])
}
scope
:latest
,
->
{
where
(
id:
unscope
(
:select
).
select
(
'max(id)'
).
group
(
:name
,
:ref
))
}
scope
:ordered
,
->
{
order
(
:ref
,
:stage_idx
,
:name
)
}
scope
:for_ref
,
->
(
ref
)
{
where
(
ref:
ref
)
}
scope
:running_or_pending
,
->
{
where
(
status:
[
:running
,
:pending
])
}
state_machine
:status
,
initial: :pending
do
...
...
app/views/projects/builds/show.html.haml
View file @
789fe7b4
...
...
@@ -7,9 +7,9 @@
%code
#{
@build
.
ref
}
#up-build-trace
-
if
@commit
.
matrix?
(
@build
.
ref
)
-
if
@commit
.
matrix
_for_ref
?
(
@build
.
ref
)
%ul
.center-top-menu.build-top-menu
-
@commit
.
builds_without_retry
(
@build
.
ref
).
each
do
|
build
|
-
@commit
.
builds_without_retry
_for_ref
(
@build
.
ref
).
each
do
|
build
|
%li
{
class:
(
'active'
if
build
==
@build
)
}
=
link_to
namespace_project_build_path
(
@project
.
namespace
,
@project
,
build
)
do
=
ci_icon_for_status
(
build
.
status
)
...
...
@@ -20,7 +20,7 @@
=
build
.
id
-
unless
@commit
.
builds_without_retry
(
@build
.
ref
).
include?
(
@build
)
-
unless
@commit
.
builds_without_retry
_for_ref
(
@build
.
ref
).
include?
(
@build
)
%li
.active
%a
Build ##{@build.id}
...
...
app/views/projects/commit/ci.html.haml
View file @
789fe7b4
...
...
@@ -20,41 +20,19 @@
.bs-callout.bs-callout-warning
\.gitlab-ci.yml not found in this commit
-
if
@ci_commit
.
refs
.
blank?
.gray-content-block.second-block
Latest builds
.gray-content-block.second-block
Latest
-
if
@ci_commit
.
duration
>
0
%small
.pull-right
%i
.fa.fa-time
#{
time_interval_in_words
@ci_commit
.
duration
}
%table
.table.builds
%thead
%tr
%th
Status
%th
Build ID
%th
Stage
%th
Name
%th
Duration
%th
Finished at
-
if
@ci_project
&&
@ci_project
.
coverage_enabled?
%th
Coverage
%th
=
render
partial:
"projects/commit_statuses/commit_status"
,
collection:
@ci_commit
.
statuses
.
latest
,
coverage:
@ci_project
.
try
(
:coverage_enabled?
),
controls:
true
-
@ci_commit
.
refs
.
sort
.
each
do
|
ref
|
.gray-content-block.second-block
Builds for
#{
ref
}
-
if
@ci_commit
.
duration
(
ref
)
>
0
%small
.pull-right
%i
.fa.fa-time
#{
time_interval_in_words
@ci_commit
.
duration
(
ref
)
}
%table
.table.builds
%table
.table.builds
%thead
%tr
%th
Status
%th
Build ID
%th
Ref
%th
Stage
%th
Name
%th
Duration
...
...
@@ -62,7 +40,8 @@
-
if
@ci_project
&&
@ci_project
.
coverage_enabled?
%th
Coverage
%th
=
render
partial:
"projects/commit_statuses/commit_status"
,
collection:
@ci_commit
.
statuses
.
for_ref
(
ref
).
latest
,
coverage:
@ci_project
.
try
(
:coverage_enabled?
),
controls:
true
-
@ci_commit
.
refs
.
each
do
|
ref
|
=
render
partial:
"projects/commit_statuses/commit_status"
,
collection:
@ci_commit
.
statuses
.
for_ref
(
ref
).
latest
.
ordered
,
coverage:
@ci_project
.
try
(
:coverage_enabled?
),
controls:
true
-
if
@ci_commit
.
retried
.
any?
.gray-content-block.second-block
...
...
@@ -81,4 +60,4 @@
-
if
@ci_project
&&
@ci_project
.
coverage_enabled?
%th
Coverage
%th
=
render
partial:
"projects/commit_statuses/commit_status"
,
collection:
@ci_commit
.
retried
,
coverage:
@ci_project
.
try
(
:coverage_enabled?
)
,
ref:
true
=
render
partial:
"projects/commit_statuses/commit_status"
,
collection:
@ci_commit
.
retried
,
coverage:
@ci_project
.
try
(
:coverage_enabled?
)
app/views/projects/commit_statuses/_commit_status.html.haml
View file @
789fe7b4
...
...
@@ -9,7 +9,6 @@
-
else
%strong
Build ##{commit_status.id}
-
if
defined?
(
ref
)
&&
ref
%td
=
commit_status
.
ref
...
...
lib/api/commit_statuses.rb
View file @
789fe7b4
...
...
@@ -53,7 +53,7 @@ module API
name
=
params
[
:name
]
||
params
[
:context
]
status
=
GenericCommitStatus
.
running_or_pending
.
find_by
(
commit:
ci_commit
,
name:
name
,
ref:
params
[
:ref
])
status
=
GenericCommitStatus
.
new
(
commit:
ci_commit
,
user:
current_user
)
unless
status
status
||=
GenericCommitStatus
.
new
(
commit:
ci_commit
,
user:
current_user
)
status
.
update
(
attrs
)
case
params
[
:state
].
to_s
...
...
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