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.
v 8.1.0 (unreleased)
-
- Show CI status on all pages where commits list is rendered
v 8.0.1
- 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
......@@ -735,4 +735,8 @@ class Project < ActiveRecord::Base
errors.add(:base, 'Failed create wiki')
false
end
def ci_commit(sha)
gitlab_ci_project.commits.find_by(sha: sha) if gitlab_ci?
end
end
......@@ -4,7 +4,11 @@
- notes = commit.notes
- 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
.commit-row-title
%strong.str-truncated
......@@ -13,6 +17,10 @@
%a.text-expander.js-toggle-button ...
.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"
.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
it { should eq "http://localhost#{avatar_path}" }
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
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