Commit 03ea7d72 authored by Kamil Trzciński's avatar Kamil Trzciński

Merge branch '22307-pipeline-link-in-builds-view' into 'master'

Resolve "Link from build page to its pipeline"

## What does this MR do?

Adds references and links to a build's pipeline within both individual build pages and the build index.

## Are there points in the code the reviewer needs to double check?

Nothing springs to mind

## Why was this MR needed?

See #22307

## Screenshots (if relevant)

![Screen_Shot_2016-10-24_at_3.45.39_PM_copy](/uploads/e6e8745a0a39d8b71c007e7df5fbd051/Screen_Shot_2016-10-24_at_3.45.39_PM_copy.png)

![Screen_Shot_2016-10-24_at_3.46.03_PM_copy](/uploads/3e2eb656347751f10bf62891b56ebcc7/Screen_Shot_2016-10-24_at_3.46.03_PM_copy.png)

## Does this MR meet the acceptance criteria?

- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG.md) entry added
- Tests
  - [x] All builds are passing
- [x] Conform by the [merge request performance guides](http://docs.gitlab.com/ce/development/merge_request_performance_guidelines.html)
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if it does - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

## What are the relevant issue numbers?

Closes #22307

See merge request !7082
parents 26889573 d949db05
...@@ -84,7 +84,8 @@ ...@@ -84,7 +84,8 @@
font-weight: 600; font-weight: 600;
} }
.commit { .commit,
.generic_commit_status {
padding: 10px 0; padding: 10px 0;
position: relative; position: relative;
...@@ -102,7 +103,6 @@ ...@@ -102,7 +103,6 @@
vertical-align: baseline; vertical-align: baseline;
} }
.avatar { .avatar {
margin-left: -46px; margin-left: -46px;
} }
......
...@@ -109,10 +109,6 @@ ...@@ -109,10 +109,6 @@
float: none; float: none;
} }
.api {
color: $code-color;
}
.branch-commit { .branch-commit {
.branch-name { .branch-name {
......
...@@ -82,6 +82,10 @@ module GitlabRoutingHelper ...@@ -82,6 +82,10 @@ module GitlabRoutingHelper
namespace_project_merge_request_path(entity.project.namespace, entity.project, entity, *args) namespace_project_merge_request_path(entity.project.namespace, entity.project, entity, *args)
end end
def pipeline_path(pipeline, *args)
namespace_project_pipeline_path(pipeline.project.namespace, pipeline.project, pipeline.id, *args)
end
def milestone_path(entity, *args) def milestone_path(entity, *args)
namespace_project_milestone_path(entity.project.namespace, entity.project, entity, *args) namespace_project_milestone_path(entity.project.namespace, entity.project, entity, *args)
end end
......
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
= ci_status_with_icon(@build.status) = ci_status_with_icon(@build.status)
Build Build
%strong ##{@build.id} %strong ##{@build.id}
in pipeline
= link_to pipeline_path(@build.pipeline) do
%strong ##{@build.pipeline.id}
for commit for commit
= link_to ci_status_path(@build.pipeline) do = link_to ci_status_path(@build.pipeline) do
%strong= @build.pipeline.short_sha %strong= @build.pipeline.short_sha
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
%tr %tr
%th Status %th Status
%th Build %th Build
%th Pipeline
- if admin - if admin
%th Project %th Project
%th Runner %th Runner
...@@ -19,6 +20,6 @@ ...@@ -19,6 +20,6 @@
%th Coverage %th Coverage
%th %th
= render partial: "projects/ci/builds/build", collection: builds, as: :build, locals: { commit_sha: true, ref: true, stage: true, allow_retry: true, coverage: admin || project.build_coverage_enabled?, admin: admin } = render partial: "projects/ci/builds/build", collection: builds, as: :build, locals: { commit_sha: true, ref: true, pipeline_link: true, stage: true, allow_retry: true, coverage: admin || project.build_coverage_enabled?, admin: admin }
= paginate builds, theme: 'gitlab' = paginate builds, theme: 'gitlab'
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
- ref = local_assigns.fetch(:ref, nil) - ref = local_assigns.fetch(:ref, nil)
- commit_sha = local_assigns.fetch(:commit_sha, nil) - commit_sha = local_assigns.fetch(:commit_sha, nil)
- retried = local_assigns.fetch(:retried, false) - retried = local_assigns.fetch(:retried, false)
- pipeline_link = local_assigns.fetch(:pipeline_link, false)
- stage = local_assigns.fetch(:stage, false) - stage = local_assigns.fetch(:stage, false)
- coverage = local_assigns.fetch(:coverage, false) - coverage = local_assigns.fetch(:coverage, false)
- allow_retry = local_assigns.fetch(:allow_retry, false) - allow_retry = local_assigns.fetch(:allow_retry, false)
...@@ -51,6 +52,16 @@ ...@@ -51,6 +52,16 @@
- if build.manual? - if build.manual?
%span.label.label-info manual %span.label.label-info manual
- if pipeline_link
%td
= link_to pipeline_path(build.pipeline) do
%span.pipeline-id ##{build.pipeline.id}
%span by
- if build.pipeline.user
= user_avatar(user: build.pipeline.user, size: 20)
- else
%span.monospace API
- if admin - if admin
%td %td
- if build.project - if build.project
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
- if stage - if stage
   
= stage.titleize = stage.titleize
= render statuses.latest_ci_stages, coverage: @project.build_coverage_enabled?, stage: false, ref: false, allow_retry: true = render statuses.latest_ci_stages, coverage: @project.build_coverage_enabled?, stage: false, ref: false, pipeline_link: false, allow_retry: true
= render statuses.retried_ci_stages, coverage: @project.build_coverage_enabled?, stage: false, ref: false, retried: true = render statuses.retried_ci_stages, coverage: @project.build_coverage_enabled?, stage: false, ref: false, pipeline_link: false, retried: true
%tr %tr
%td{colspan: 10} %td{colspan: 10}
   
...@@ -15,6 +15,16 @@ ...@@ -15,6 +15,16 @@
- if defined?(retried) && retried - if defined?(retried) && retried
= icon('warning', class: 'text-warning has-tooltip', title: 'Status was retried.') = icon('warning', class: 'text-warning has-tooltip', title: 'Status was retried.')
- if defined?(pipeline_link) && pipeline_link
%td
= link_to pipeline_path(generic_commit_status.pipeline) do
%span.pipeline-id ##{generic_commit_status.pipeline.id}
%span by
- if generic_commit_status.pipeline.user
= user_avatar(user: generic_commit_status.pipeline.user, size: 20)
- else
%span.monospace API
- if defined?(commit_sha) && commit_sha - if defined?(commit_sha) && commit_sha
%td %td
= link_to generic_commit_status.short_sha, namespace_project_commit_path(generic_commit_status.project.namespace, generic_commit_status.project, generic_commit_status.sha), class: "monospace" = link_to generic_commit_status.short_sha, namespace_project_commit_path(generic_commit_status.project.namespace, generic_commit_status.project, generic_commit_status.sha), class: "monospace"
......
---
title: Add link to build pipeline within individual build pages
merge_request: 7082
author:
require 'spec_helper'
describe 'projects/ci/builds/_build' do
include Devise::Test::ControllerHelpers
let(:project) { create(:project) }
let(:pipeline) { create(:ci_empty_pipeline, id: 1337, project: project, sha: project.commit.id) }
let(:build) { create(:ci_build, pipeline: pipeline, stage: 'test', stage_idx: 1, name: 'rspec 0:2', status: :pending) }
before do
controller.prepend_view_path('app/views/projects')
allow(view).to receive(:can?).and_return(true)
end
it 'won\'t include a column with a link to its pipeline by default' do
render partial: 'projects/ci/builds/build', locals: { build: build }
expect(rendered).not_to have_link('#1337')
expect(rendered).not_to have_text('#1337 by API')
end
it 'can include a column with a link to its pipeline' do
render partial: 'projects/ci/builds/build', locals: { build: build, pipeline_link: true }
expect(rendered).to have_link('#1337')
expect(rendered).to have_text('#1337 by API')
end
end
require 'spec_helper'
describe 'projects/generic_commit_statuses/_generic_commit_status.html.haml' do
include Devise::Test::ControllerHelpers
let(:project) { create(:project) }
let(:pipeline) { create(:ci_empty_pipeline, id: 1337, project: project, sha: project.commit.id) }
let(:generic_commit_status) { create(:generic_commit_status, pipeline: pipeline, stage: 'external', name: 'jenkins', stage_idx: 3) }
before do
controller.prepend_view_path('app/views/projects')
allow(view).to receive(:can?).and_return(true)
end
it 'won\'t include a column with a link to its pipeline by default' do
render partial: 'projects/generic_commit_statuses/generic_commit_status', locals: { generic_commit_status: generic_commit_status }
expect(rendered).not_to have_link('#1337')
expect(rendered).not_to have_text('#1337 by API')
end
it 'can include a column with a link to its pipeline' do
render partial: 'projects/generic_commit_statuses/generic_commit_status', locals: { generic_commit_status: generic_commit_status, pipeline_link: true }
expect(rendered).to have_link('#1337')
expect(rendered).to have_text('#1337 by API')
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