Merge branch 'fix/error-500-in-pipeline-when-fork' into 'master'
Use project that belongs to pipeline in view ## What does this MR do? This MR makes project in pipelines view match the one that pipeline has been created for. Closes #17943 See merge request !4376
This commit is contained in:
commit
4581e71c44
3 changed files with 67 additions and 8 deletions
|
@ -26,6 +26,7 @@ v 8.9.0 (unreleased)
|
||||||
- Add Application Setting to configure Container Registry token expire delay (default 5min)
|
- Add Application Setting to configure Container Registry token expire delay (default 5min)
|
||||||
|
|
||||||
v 8.8.3
|
v 8.8.3
|
||||||
|
- Fix incorrect links on pipeline page when merge request created from fork
|
||||||
- Fix gitlab importer failing to import new projects due to missing credentials
|
- Fix gitlab importer failing to import new projects due to missing credentials
|
||||||
- Fix import URL migration not rescuing with the correct Error
|
- Fix import URL migration not rescuing with the correct Error
|
||||||
- In search results, only show notes on confidential issues that the user has access to
|
- In search results, only show notes on confidential issues that the user has access to
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
.row-content-block.build-content.middle-block
|
.row-content-block.build-content.middle-block
|
||||||
.pull-right
|
.pull-right
|
||||||
- if can?(current_user, :update_pipeline, @project)
|
- if can?(current_user, :update_pipeline, ci_commit.project)
|
||||||
- if ci_commit.builds.latest.failed.any?(&:retryable?)
|
- if ci_commit.builds.latest.failed.any?(&:retryable?)
|
||||||
= link_to "Retry failed", retry_namespace_project_pipeline_path(@project.namespace, @project, ci_commit.id), class: 'btn btn-grouped btn-primary', method: :post
|
= link_to "Retry failed", retry_namespace_project_pipeline_path(ci_commit.project.namespace, ci_commit.project, ci_commit.id), class: 'btn btn-grouped btn-primary', method: :post
|
||||||
|
|
||||||
- if ci_commit.builds.running_or_pending.any?
|
- if ci_commit.builds.running_or_pending.any?
|
||||||
= link_to "Cancel running", cancel_namespace_project_pipeline_path(@project.namespace, @project, ci_commit.id), data: { confirm: 'Are you sure?' }, class: 'btn btn-grouped btn-danger', method: :post
|
= link_to "Cancel running", cancel_namespace_project_pipeline_path(ci_commit.project.namespace, ci_commit.project, ci_commit.id), data: { confirm: 'Are you sure?' }, class: 'btn btn-grouped btn-danger', method: :post
|
||||||
|
|
||||||
.oneline.clearfix
|
.oneline.clearfix
|
||||||
- if defined?(pipeline_details) && pipeline_details
|
- if defined?(pipeline_details) && pipeline_details
|
||||||
Pipeline
|
Pipeline
|
||||||
= link_to "##{ci_commit.id}", namespace_project_pipeline_path(@project.namespace, @project, ci_commit.id), class: "monospace"
|
= link_to "##{ci_commit.id}", namespace_project_pipeline_path(ci_commit.project.namespace, ci_commit.project, ci_commit.id), class: "monospace"
|
||||||
with
|
with
|
||||||
= pluralize ci_commit.statuses.count(:id), "build"
|
= pluralize ci_commit.statuses.count(:id), "build"
|
||||||
- if ci_commit.ref
|
- if ci_commit.ref
|
||||||
for
|
for
|
||||||
= link_to ci_commit.ref, namespace_project_commits_path(@project.namespace, @project, ci_commit.ref), class: "monospace"
|
= link_to ci_commit.ref, namespace_project_commits_path(ci_commit.project.namespace, ci_commit.project, ci_commit.ref), class: "monospace"
|
||||||
- if defined?(link_to_commit) && link_to_commit
|
- if defined?(link_to_commit) && link_to_commit
|
||||||
for commit
|
for commit
|
||||||
= link_to ci_commit.short_sha, namespace_project_commit_path(@project.namespace, @project, ci_commit.sha), class: "monospace"
|
= link_to ci_commit.short_sha, namespace_project_commit_path(ci_commit.project.namespace, ci_commit.project, ci_commit.sha), class: "monospace"
|
||||||
- if ci_commit.duration
|
- if ci_commit.duration
|
||||||
in
|
in
|
||||||
= time_interval_in_words ci_commit.duration
|
= time_interval_in_words ci_commit.duration
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
%li= error
|
%li= error
|
||||||
You can also test your .gitlab-ci.yml in the #{link_to "Lint", ci_lint_path}
|
You can also test your .gitlab-ci.yml in the #{link_to "Lint", ci_lint_path}
|
||||||
|
|
||||||
- if @project.builds_enabled? && !ci_commit.ci_yaml_file
|
- if ci_commit.project.builds_enabled? && !ci_commit.ci_yaml_file
|
||||||
.bs-callout.bs-callout-warning
|
.bs-callout.bs-callout-warning
|
||||||
\.gitlab-ci.yml not found in this commit
|
\.gitlab-ci.yml not found in this commit
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
%th Tags
|
%th Tags
|
||||||
%th Duration
|
%th Duration
|
||||||
%th Finished at
|
%th Finished at
|
||||||
- if @project.build_coverage_enabled?
|
- if ci_commit.project.build_coverage_enabled?
|
||||||
%th Coverage
|
%th Coverage
|
||||||
%th
|
%th
|
||||||
- ci_commit.statuses.stages.each do |stage|
|
- ci_commit.statuses.stages.each do |stage|
|
||||||
|
|
58
spec/features/merge_requests/created_from_fork_spec.rb
Normal file
58
spec/features/merge_requests/created_from_fork_spec.rb
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
feature 'Merge request created from fork' do
|
||||||
|
given(:user) { create(:user) }
|
||||||
|
given(:project) { create(:project, :public) }
|
||||||
|
given(:fork_project) { create(:project, :public) }
|
||||||
|
|
||||||
|
given!(:merge_request) do
|
||||||
|
create(:forked_project_link, forked_to_project: fork_project,
|
||||||
|
forked_from_project: project)
|
||||||
|
|
||||||
|
create(:merge_request_with_diffs, source_project: fork_project,
|
||||||
|
target_project: project,
|
||||||
|
description: 'Test merge request')
|
||||||
|
end
|
||||||
|
|
||||||
|
background do
|
||||||
|
fork_project.team << [user, :master]
|
||||||
|
login_as user
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'user can access merge request' do
|
||||||
|
visit_merge_request(merge_request)
|
||||||
|
|
||||||
|
expect(page).to have_content 'Test merge request'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'pipeline present in source project' do
|
||||||
|
include WaitForAjax
|
||||||
|
|
||||||
|
given(:pipeline) do
|
||||||
|
create(:ci_commit_with_two_jobs, project: fork_project,
|
||||||
|
sha: merge_request.last_commit.id,
|
||||||
|
ref: merge_request.source_branch)
|
||||||
|
end
|
||||||
|
|
||||||
|
background { pipeline.create_builds(user) }
|
||||||
|
|
||||||
|
scenario 'user visits a pipelines page', js: true do
|
||||||
|
visit_merge_request(merge_request)
|
||||||
|
page.within('.merge-request-tabs') { click_link 'Builds' }
|
||||||
|
wait_for_ajax
|
||||||
|
|
||||||
|
page.within('table.builds') do
|
||||||
|
expect(page).to have_content 'rspec'
|
||||||
|
expect(page).to have_content 'spinach'
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(find_link('Cancel running')[:href])
|
||||||
|
.to include fork_project.path_with_namespace
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def visit_merge_request(mr)
|
||||||
|
visit namespace_project_merge_request_path(project.namespace,
|
||||||
|
project, mr)
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue