Commit e63b64de authored by Douwe Maan's avatar Douwe Maan

Merge branch 'commits-page-ci-status' into 'master'

Commits page CI status

Show CI status for each commit row on pages like: Commits, Merge request (commits tab), Compare etc

![Screenshot_2015-09-23_12.34.50](https://gitlab.com/gitlab-org/gitlab-ce/uploads/d40d6a69f76128e32d3a0cb641b3495b/Screenshot_2015-09-23_12.34.50.png)


Fixes #2632 

See merge request !1402
parents 486a6479 3b6915d8
Please view this file on the master branch, on stable branches it's out of date. Please view this file on the master branch, on stable branches it's out of date.
v 8.1.0 (unreleased) v 8.1.0 (unreleased)
- - Show CI status on all pages where commits list is rendered
v 8.0.1 v 8.0.1
- Improve CI migration procedure and documentation - Improve CI migration procedure and documentation
......
module CiStatusHelper
def ci_status_path(ci_commit)
ci_project_ref_commits_path(ci_commit.project, ci_commit.ref, ci_commit)
end
def ci_status_icon(ci_commit)
icon_name =
case ci_commit.status
when 'success'
'check'
when 'failed'
'close'
when 'running', 'pending'
'clock-o'
else
'circle'
end
icon(icon_name)
end
def ci_status_color(ci_commit)
case ci_commit.status
when 'success'
'green'
when 'failed'
'red'
when 'running', 'pending'
'yellow'
else
'gray'
end
end
end
...@@ -135,7 +135,7 @@ module CommitsHelper ...@@ -135,7 +135,7 @@ module CommitsHelper
# size: size of the avatar image in px # size: size of the avatar image in px
def commit_person_link(commit, options = {}) def commit_person_link(commit, options = {})
user = commit.send(options[:source]) user = commit.send(options[:source])
source_name = clean(commit.send "#{options[:source]}_name".to_sym) source_name = clean(commit.send "#{options[:source]}_name".to_sym)
source_email = clean(commit.send "#{options[:source]}_email".to_sym) source_email = clean(commit.send "#{options[:source]}_email".to_sym)
......
...@@ -735,4 +735,8 @@ class Project < ActiveRecord::Base ...@@ -735,4 +735,8 @@ class Project < ActiveRecord::Base
errors.add(:base, 'Failed create wiki') errors.add(:base, 'Failed create wiki')
false false
end end
def ci_commit(sha)
gitlab_ci_project.commits.find_by(sha: sha) if gitlab_ci?
end
end end
...@@ -4,7 +4,11 @@ ...@@ -4,7 +4,11 @@
- notes = commit.notes - notes = commit.notes
- note_count = notes.user.count - note_count = notes.user.count
= cache [project.id, commit.id, note_count] do - ci_commit = project.ci_commit(commit.sha)
- cache_key = [project.id, commit.id, note_count]
- cache_key.push(ci_commit.status) if ci_commit
= cache(cache_key) do
%li.commit.js-toggle-container %li.commit.js-toggle-container
.commit-row-title .commit-row-title
%strong.str-truncated %strong.str-truncated
...@@ -13,6 +17,10 @@ ...@@ -13,6 +17,10 @@
%a.text-expander.js-toggle-button ... %a.text-expander.js-toggle-button ...
.pull-right .pull-right
- if ci_commit
= link_to ci_status_path(ci_commit), class: "c#{ci_status_color(ci_commit)}" do
= ci_status_icon(ci_commit)
&nbsp;
= link_to commit.short_id, namespace_project_commit_path(project.namespace, project, commit), class: "commit_short_id" = link_to commit.short_id, namespace_project_commit_path(project.namespace, project, commit), class: "commit_short_id"
.notes_count .notes_count
......
require 'spec_helper'
describe CiStatusHelper do
include IconsHelper
let(:success_commit) { double("Ci::Commit", status: 'success') }
let(:failed_commit) { double("Ci::Commit", status: 'failed') }
describe 'ci_status_color' do
it { expect(ci_status_icon(success_commit)).to include('fa-check') }
it { expect(ci_status_icon(failed_commit)).to include('fa-close') }
end
describe 'ci_status_color' do
it { expect(ci_status_color(success_commit)).to eq('green') }
it { expect(ci_status_color(failed_commit)).to eq('red') }
end
end
...@@ -401,4 +401,14 @@ describe Project do ...@@ -401,4 +401,14 @@ describe Project do
it { should eq "http://localhost#{avatar_path}" } it { should eq "http://localhost#{avatar_path}" }
end end
end end
describe :ci_commit do
let(:project) { create :project }
let(:ci_project) { create :ci_project, gl_project: project }
let(:commit) { create :ci_commit, project: ci_project }
before { project.create_gitlab_ci_service(active: true) }
it { expect(project.ci_commit(commit.sha)).to eq(commit) }
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment