Commit d844721c authored by Clement Ho's avatar Clement Ho

Merge branch '25920-create-issue-from-failing-build' into 'master'

Add button to create issue for failing build

Closes #25920

See merge request !9391
parents e051ef69 42e490ea
...@@ -15,4 +15,11 @@ module BuildsHelper ...@@ -15,4 +15,11 @@ module BuildsHelper
log_state: @build.trace_with_state[:state].to_s log_state: @build.trace_with_state[:state].to_s
} }
end end
def build_failed_issue_options
{
title: "Build Failed ##{@build.id}",
description: namespace_project_build_url(@project.namespace, @project, @build)
}
end
end end
.content-block.build-header .content-block.build-header.top-area
.header-content .header-content
= render 'ci/status/badge', status: @build.detailed_status(current_user), link: false = render 'ci/status/badge', status: @build.detailed_status(current_user), link: false
Job Job
...@@ -16,7 +16,10 @@ ...@@ -16,7 +16,10 @@
- if @build.user - if @build.user
= render "user" = render "user"
= time_ago_with_tooltip(@build.created_at) = time_ago_with_tooltip(@build.created_at)
.nav-controls
- if can?(current_user, :create_issue, @project) && @build.failed?
= link_to "New issue", new_namespace_project_issue_path(@project.namespace, @project, issue: build_failed_issue_options), class: 'btn btn-new btn-inverted'
- if can?(current_user, :update_build, @build) && @build.retryable? - if can?(current_user, :update_build, @build) && @build.retryable?
= link_to "Retry job", retry_namespace_project_build_path(@project.namespace, @project, @build), class: 'btn btn-inverted-secondary pull-right', method: :post = link_to "Retry job", retry_namespace_project_build_path(@project.namespace, @project, @build), class: 'btn btn-inverted-secondary', method: :post
%button.btn.btn-default.pull-right.visible-xs-block.visible-sm-block.build-gutter-toggle.js-sidebar-build-toggle{ role: "button", type: "button" } %button.btn.btn-default.pull-right.visible-xs-block.visible-sm-block.build-gutter-toggle.js-sidebar-build-toggle{ role: "button", type: "button" }
= icon('angle-double-left') = icon('angle-double-left')
---
title: Add button to create issue for failing build
merge_request: 9391
author: Alex Sanford
...@@ -209,6 +209,10 @@ describe 'projects/builds/show', :view do ...@@ -209,6 +209,10 @@ describe 'projects/builds/show', :view do
it 'does not show retry button' do it 'does not show retry button' do
expect(rendered).not_to have_link('Retry') expect(rendered).not_to have_link('Retry')
end end
it 'does not show New issue button' do
expect(rendered).not_to have_link('New issue')
end
end end
context 'when job is not running' do context 'when job is not running' do
...@@ -220,6 +224,23 @@ describe 'projects/builds/show', :view do ...@@ -220,6 +224,23 @@ describe 'projects/builds/show', :view do
it 'shows retry button' do it 'shows retry button' do
expect(rendered).to have_link('Retry') expect(rendered).to have_link('Retry')
end end
context 'if build passed' do
it 'does not show New issue button' do
expect(rendered).not_to have_link('New issue')
end
end
context 'if build failed' do
before do
build.status = 'failed'
render
end
it 'shows New issue button' do
expect(rendered).to have_link('New issue')
end
end
end end
describe 'commit title in sidebar' do describe 'commit title in sidebar' do
...@@ -248,4 +269,25 @@ describe 'projects/builds/show', :view do ...@@ -248,4 +269,25 @@ describe 'projects/builds/show', :view do
expect(rendered).to have_css('.js-build-value', visible: false, text: 'TRIGGER_VALUE_2') expect(rendered).to have_css('.js-build-value', visible: false, text: 'TRIGGER_VALUE_2')
end end
end end
describe 'New issue button' do
before do
build.status = 'failed'
render
end
it 'links to issues/new with the title and description filled in' do
title = "Build Failed ##{build.id}"
build_url = namespace_project_build_url(project.namespace, project, build)
href = new_namespace_project_issue_path(
project.namespace,
project,
issue: {
title: title,
description: build_url
}
)
expect(rendered).to have_link('New issue', href: href)
end
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