Commit 24e8445a authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'move-ci-charts' into 'master'

Move CI charts to project graphs area

Part of #2594 

Should be merged after !1405 


Same page but moved to another place 

![Screenshot_2015-09-23_16.25.15](https://gitlab.com/gitlab-org/gitlab-ce/uploads/ef7266de0528bd6dd3f95159e161ea9a/Screenshot_2015-09-23_16.25.15.png)


See merge request !1407
parents ae3fba6c 50cff3e4
...@@ -3,6 +3,7 @@ Please view this file on the master branch, on stable branches it's out of date. ...@@ -3,6 +3,7 @@ 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 - Show CI status on all pages where commits list is rendered
- Automatically enable CI when push .gitlab-ci.yml file to repository - Automatically enable CI when push .gitlab-ci.yml file to repository
- Move CI charts to project graphs area
- Fix cases where Markdown did not render links in activity feed (Stan Hu) - Fix cases where Markdown did not render links in activity feed (Stan Hu)
- Add first and last to pagination (Zeger-Jan van de Weg) - Add first and last to pagination (Zeger-Jan van de Weg)
......
module Ci
class ChartsController < Ci::ApplicationController
before_action :authenticate_user!
before_action :project
before_action :authorize_access_project!
before_action :authorize_manage_project!
layout 'ci/project'
def show
@charts = {}
@charts[:week] = Ci::Charts::WeekChart.new(@project)
@charts[:month] = Ci::Charts::MonthChart.new(@project)
@charts[:year] = Ci::Charts::YearChart.new(@project)
@charts[:build_times] = Ci::Charts::BuildTime.new(@project)
end
protected
def project
@project = Ci::Project.find(params[:project_id])
end
end
end
...@@ -25,4 +25,10 @@ class Projects::ApplicationController < ApplicationController ...@@ -25,4 +25,10 @@ class Projects::ApplicationController < ApplicationController
) )
end end
end end
private
def ci_enabled
return render_404 unless @project.gitlab_ci?
end
end end
...@@ -5,6 +5,7 @@ class Projects::GraphsController < Projects::ApplicationController ...@@ -5,6 +5,7 @@ class Projects::GraphsController < Projects::ApplicationController
before_action :require_non_empty_project before_action :require_non_empty_project
before_action :assign_ref_vars before_action :assign_ref_vars
before_action :authorize_download_code! before_action :authorize_download_code!
before_action :ci_enabled, only: :ci
def show def show
respond_to do |format| respond_to do |format|
...@@ -23,6 +24,16 @@ class Projects::GraphsController < Projects::ApplicationController ...@@ -23,6 +24,16 @@ class Projects::GraphsController < Projects::ApplicationController
@commits_per_month = @commits_graph.commits_per_month @commits_per_month = @commits_graph.commits_per_month
end end
def ci
ci_project = @project.gitlab_ci_project
@charts = {}
@charts[:week] = Ci::Charts::WeekChart.new(ci_project)
@charts[:month] = Ci::Charts::MonthChart.new(ci_project)
@charts[:year] = Ci::Charts::YearChart.new(ci_project)
@charts[:build_times] = Ci::Charts::BuildTime.new(ci_project)
end
private private
def fetch_graph def fetch_graph
......
#charts.ci-charts
= render 'builds'
= render 'build_times'
= render 'overall'
...@@ -10,12 +10,6 @@ ...@@ -10,12 +10,6 @@
%span %span
Commits Commits
%span.count= @project.commits.count %span.count= @project.commits.count
- if can?(current_user, :admin_project, gl_project)
= nav_link path: 'charts#show' do
= link_to ci_project_charts_path(@project) do
= icon('bar-chart fw')
%span
Charts
= nav_link path: ['runners#index', 'runners#show', 'runners#edit'] do = nav_link path: ['runners#index', 'runners#show', 'runners#edit'] do
= link_to ci_project_runners_path(@project) do = link_to ci_project_runners_path(@project) do
= icon('cog fw') = icon('cog fw')
......
...@@ -3,3 +3,7 @@ ...@@ -3,3 +3,7 @@
= link_to 'Contributors', namespace_project_graph_path = link_to 'Contributors', namespace_project_graph_path
= nav_link(action: :commits) do = nav_link(action: :commits) do
= link_to 'Commits', commits_namespace_project_graph_path = link_to 'Commits', commits_namespace_project_graph_path
- if @project.gitlab_ci?
= nav_link(action: :ci) do
= link_to ci_namespace_project_graph_path do
Continuous Integration
- page_title "Continuous Integration", "Graphs"
= render "header_title"
= render 'head'
#charts.ci-charts
= render 'projects/graphs/ci/builds'
= render 'projects/graphs/ci/build_times'
= render 'projects/graphs/ci/overall'
- ci_project = @project.gitlab_ci_project
%fieldset %fieldset
%legend Overall %legend Overall
%p %p
Total: Total:
%strong= pluralize @project.builds.count(:all), 'build' %strong= pluralize ci_project.builds.count(:all), 'build'
%p %p
Successful: Successful:
%strong= pluralize @project.builds.success.count(:all), 'build' %strong= pluralize ci_project.builds.success.count(:all), 'build'
%p %p
Failed: Failed:
%strong= pluralize @project.builds.failed.count(:all), 'build' %strong= pluralize ci_project.builds.failed.count(:all), 'build'
%p %p
Success ratio: Success ratio:
%strong %strong
#{success_ratio(@project.builds.success, @project.builds.failed)}% #{success_ratio(ci_project.builds.success, ci_project.builds.failed)}%
%p %p
Commits covered: Commits covered:
%strong %strong
= @project.commits.count(:all) = ci_project.commits.count(:all)
...@@ -511,6 +511,7 @@ Gitlab::Application.routes.draw do ...@@ -511,6 +511,7 @@ Gitlab::Application.routes.draw do
resources :graphs, only: [:show], constraints: { id: /(?:[^.]|\.(?!json$))+/, format: /json/ } do resources :graphs, only: [:show], constraints: { id: /(?:[^.]|\.(?!json$))+/, format: /json/ } do
member do member do
get :commits get :commits
get :ci
end end
end end
......
...@@ -12,3 +12,9 @@ Feature: Project Graph ...@@ -12,3 +12,9 @@ Feature: Project Graph
Scenario: I should see project commits graphs Scenario: I should see project commits graphs
When I visit project "Shop" commits graph page When I visit project "Shop" commits graph page
Then page should have commits graphs Then page should have commits graphs
@javascript
Scenario: I should see project ci graphs
Given project "Shop" has CI enabled
When I visit project "Shop" CI graph page
Then page should have CI graphs
...@@ -7,12 +7,10 @@ class Spinach::Features::ProjectGraph < Spinach::FeatureSteps ...@@ -7,12 +7,10 @@ class Spinach::Features::ProjectGraph < Spinach::FeatureSteps
end end
When 'I visit project "Shop" graph page' do When 'I visit project "Shop" graph page' do
project = Project.find_by(name: "Shop")
visit namespace_project_graph_path(project.namespace, project, "master") visit namespace_project_graph_path(project.namespace, project, "master")
end end
step 'I visit project "Shop" commits graph page' do step 'I visit project "Shop" commits graph page' do
project = Project.find_by(name: "Shop")
visit commits_namespace_project_graph_path(project.namespace, project, "master") visit commits_namespace_project_graph_path(project.namespace, project, "master")
end end
...@@ -20,4 +18,24 @@ class Spinach::Features::ProjectGraph < Spinach::FeatureSteps ...@@ -20,4 +18,24 @@ class Spinach::Features::ProjectGraph < Spinach::FeatureSteps
expect(page).to have_content "Commit statistics for master" expect(page).to have_content "Commit statistics for master"
expect(page).to have_content "Commits per day of month" expect(page).to have_content "Commits per day of month"
end end
step 'I visit project "Shop" CI graph page' do
visit ci_namespace_project_graph_path(project.namespace, project, 'master')
end
step 'project "Shop" has CI enabled' do
project.enable_ci(@user)
end
step 'page should have CI graphs' do
expect(page).to have_content 'Overall'
expect(page).to have_content 'Builds chart for last week'
expect(page).to have_content 'Builds chart for last month'
expect(page).to have_content 'Builds chart for last year'
expect(page).to have_content 'Commit duration in minutes for last 30 commits'
end
def project
project ||= Project.find_by(name: "Shop")
end
end end
...@@ -45,16 +45,4 @@ describe "Projects" do ...@@ -45,16 +45,4 @@ describe "Projects" do
expect(find_field('Timeout').value).to eq '70' expect(find_field('Timeout').value).to eq '70'
end end
end end
describe "GET /ci/projects/:id/charts" do
before do
visit ci_project_charts_path(@project)
end
it { expect(page).to have_content 'Overall' }
it { expect(page).to have_content 'Builds chart for last week' }
it { expect(page).to have_content 'Builds chart for last month' }
it { expect(page).to have_content 'Builds chart for last year' }
it { expect(page).to have_content 'Commit duration in minutes for last 30 commits' }
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