Create separate view for pipeline view with tabs
This commit is contained in:
parent
144002249e
commit
5ac2c5839a
8 changed files with 140 additions and 52 deletions
|
@ -8,3 +8,7 @@
|
||||||
= link_to pipelines_namespace_project_commit_path(@project.namespace, @project, @commit.id) do
|
= link_to pipelines_namespace_project_commit_path(@project.namespace, @project, @commit.id) do
|
||||||
Pipelines
|
Pipelines
|
||||||
%span.badge= @ci_pipelines.count
|
%span.badge= @ci_pipelines.count
|
||||||
|
= nav_link(path: 'commit#builds') do
|
||||||
|
= link_to builds_namespace_project_commit_path(@project.namespace, @project, @commit.id) do
|
||||||
|
Builds
|
||||||
|
%span.badge= @statuses.count
|
||||||
|
|
|
@ -1,15 +1,30 @@
|
||||||
.tabs-holder
|
.pipeline-graph-container
|
||||||
%ul.nav-links.no-top.no-bottom
|
.row-content-block.build-content.middle-block.pipeline-actions
|
||||||
%li.active
|
.pull-right
|
||||||
= link_to "Pipeline", "#js-tab-pipeline", data: { target: '#js-tab-pipeline', action: 'pipeline', toggle: 'tab' }
|
- if can?(current_user, :update_pipeline, pipeline.project)
|
||||||
%li
|
- if pipeline.builds.latest.failed.any?(&:retryable?)
|
||||||
= link_to "#js-tab-builds", data: { target: '#js-tab-builds', action: 'build', toggle: 'tab' } do
|
= link_to "Retry failed", retry_namespace_project_pipeline_path(pipeline.project.namespace, pipeline.project, pipeline.id), class: 'btn btn-grouped btn-primary', method: :post
|
||||||
Builds
|
|
||||||
%span.badge= pipeline.statuses.count
|
|
||||||
|
|
||||||
.tab-content
|
- if pipeline.builds.running_or_pending.any?
|
||||||
#js-tab-pipeline.tab-pane.active
|
= link_to "Cancel running", cancel_namespace_project_pipeline_path(pipeline.project.namespace, pipeline.project, pipeline.id), data: { confirm: 'Are you sure?' }, class: 'btn btn-grouped btn-danger', method: :post
|
||||||
.build-content.middle-block.pipeline-graph
|
|
||||||
|
.oneline.clearfix
|
||||||
|
- if defined?(pipeline_details) && pipeline_details
|
||||||
|
Pipeline
|
||||||
|
= link_to "##{pipeline.id}", namespace_project_pipeline_path(pipeline.project.namespace, pipeline.project, pipeline.id), class: "monospace"
|
||||||
|
with
|
||||||
|
= pluralize pipeline.statuses.count(:id), "build"
|
||||||
|
- if pipeline.ref
|
||||||
|
for
|
||||||
|
= link_to pipeline.ref, namespace_project_commits_path(pipeline.project.namespace, pipeline.project, pipeline.ref), class: "monospace"
|
||||||
|
- if defined?(link_to_commit) && link_to_commit
|
||||||
|
for commit
|
||||||
|
= link_to pipeline.short_sha, namespace_project_commit_path(pipeline.project.namespace, pipeline.project, pipeline.sha), class: "monospace"
|
||||||
|
- if pipeline.duration
|
||||||
|
in
|
||||||
|
= time_interval_in_words pipeline.duration
|
||||||
|
|
||||||
|
.row-content-block.build-content.middle-block.pipeline-graph.hidden
|
||||||
.pipeline-visualization
|
.pipeline-visualization
|
||||||
%ul.stage-column-list
|
%ul.stage-column-list
|
||||||
- stages = pipeline.stages_with_latest_statuses
|
- stages = pipeline.stages_with_latest_statuses
|
||||||
|
@ -23,8 +38,8 @@
|
||||||
%ul
|
%ul
|
||||||
= render "projects/commit/pipeline_stage", statuses: statuses
|
= render "projects/commit/pipeline_stage", statuses: statuses
|
||||||
|
|
||||||
#js-tab-builds.tab-pane
|
|
||||||
- if pipeline.yaml_errors.present?
|
- if pipeline.yaml_errors.present?
|
||||||
.bs-callout.bs-callout-danger
|
.bs-callout.bs-callout-danger
|
||||||
%h4 Found errors in your .gitlab-ci.yml:
|
%h4 Found errors in your .gitlab-ci.yml:
|
||||||
%ul
|
%ul
|
||||||
|
@ -32,11 +47,11 @@
|
||||||
%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 pipeline.project.builds_enabled? && !pipeline.ci_yaml_file
|
- if pipeline.project.builds_enabled? && !pipeline.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
|
||||||
|
|
||||||
.table-holder.pipeline-holder
|
.table-holder.pipeline-holder
|
||||||
%table.table.ci-table.pipeline
|
%table.table.ci-table.pipeline
|
||||||
%thead
|
%thead
|
||||||
%tr
|
%tr
|
||||||
|
|
9
app/views/projects/commit/builds.html.haml
Normal file
9
app/views/projects/commit/builds.html.haml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
- @no_container = true
|
||||||
|
- page_title "Builds", "#{@commit.title} (#{@commit.short_id})", "Commits"
|
||||||
|
= render "projects/commits/head"
|
||||||
|
|
||||||
|
%div{ class: container_class }
|
||||||
|
= render "commit_box"
|
||||||
|
|
||||||
|
= render "ci_menu"
|
||||||
|
= render "builds"
|
|
@ -64,6 +64,10 @@
|
||||||
= link_to pipelines_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: { target: '#pipelines', action: 'pipelines', toggle: 'tab' } do
|
= link_to pipelines_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: { target: '#pipelines', action: 'pipelines', toggle: 'tab' } do
|
||||||
Pipelines
|
Pipelines
|
||||||
%span.badge= @pipelines.size
|
%span.badge= @pipelines.size
|
||||||
|
%li.builds-tab
|
||||||
|
= link_to builds_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: { target: '#builds', action: 'builds', toggle: 'tab' } do
|
||||||
|
Builds
|
||||||
|
%span.badge= @statuses.size
|
||||||
%li.diffs-tab
|
%li.diffs-tab
|
||||||
= link_to diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: { target: 'div#diffs', action: 'diffs', toggle: 'tab' } do
|
= link_to diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: { target: 'div#diffs', action: 'diffs', toggle: 'tab' } do
|
||||||
Changes
|
Changes
|
||||||
|
@ -91,6 +95,8 @@
|
||||||
|
|
||||||
#commits.commits.tab-pane
|
#commits.commits.tab-pane
|
||||||
- # This tab is always loaded via AJAX
|
- # This tab is always loaded via AJAX
|
||||||
|
#builds.builds.tab-pane
|
||||||
|
- # This tab is always loaded via AJAX
|
||||||
#pipelines.pipelines.tab-pane
|
#pipelines.pipelines.tab-pane
|
||||||
- # This tab is always loaded via AJAX
|
- # This tab is always loaded via AJAX
|
||||||
#diffs.diffs.tab-pane
|
#diffs.diffs.tab-pane
|
||||||
|
|
51
app/views/projects/pipelines/_with_tabs.html.haml
Normal file
51
app/views/projects/pipelines/_with_tabs.html.haml
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
.tabs-holder
|
||||||
|
%ul.nav-links.no-top.no-bottom
|
||||||
|
%li.active
|
||||||
|
= link_to "Pipeline", "#js-tab-pipeline", data: { target: '#js-tab-pipeline', action: 'pipeline', toggle: 'tab' }
|
||||||
|
%li
|
||||||
|
= link_to "#js-tab-builds", data: { target: '#js-tab-builds', action: 'build', toggle: 'tab' } do
|
||||||
|
Builds
|
||||||
|
%span.badge= pipeline.statuses.count
|
||||||
|
|
||||||
|
.tab-content
|
||||||
|
#js-tab-pipeline.tab-pane.active
|
||||||
|
.build-content.middle-block.pipeline-graph
|
||||||
|
.pipeline-visualization
|
||||||
|
%ul.stage-column-list
|
||||||
|
- stages = pipeline.stages_with_latest_statuses
|
||||||
|
- stages.each do |stage, statuses|
|
||||||
|
%li.stage-column
|
||||||
|
.stage-name
|
||||||
|
%a{name: stage}
|
||||||
|
- if stage
|
||||||
|
= stage.titleize
|
||||||
|
.builds-container
|
||||||
|
%ul
|
||||||
|
= render "projects/commit/pipeline_stage", statuses: statuses
|
||||||
|
|
||||||
|
#js-tab-builds.tab-pane
|
||||||
|
- if pipeline.yaml_errors.present?
|
||||||
|
.bs-callout.bs-callout-danger
|
||||||
|
%h4 Found errors in your .gitlab-ci.yml:
|
||||||
|
%ul
|
||||||
|
- pipeline.yaml_errors.split(",").each do |error|
|
||||||
|
%li= error
|
||||||
|
You can also test your .gitlab-ci.yml in the #{link_to "Lint", ci_lint_path}
|
||||||
|
|
||||||
|
- if pipeline.project.builds_enabled? && !pipeline.ci_yaml_file
|
||||||
|
.bs-callout.bs-callout-warning
|
||||||
|
\.gitlab-ci.yml not found in this commit
|
||||||
|
|
||||||
|
.table-holder.pipeline-holder
|
||||||
|
%table.table.ci-table.pipeline
|
||||||
|
%thead
|
||||||
|
%tr
|
||||||
|
%th Status
|
||||||
|
%th Build ID
|
||||||
|
%th Name
|
||||||
|
%th
|
||||||
|
- if pipeline.project.build_coverage_enabled?
|
||||||
|
%th Coverage
|
||||||
|
%th
|
||||||
|
- pipeline.statuses.relevant.stages.each do |stage|
|
||||||
|
= render 'projects/commit/ci_stage', stage: stage, statuses: pipeline.statuses.relevant.where(stage: stage)
|
|
@ -6,4 +6,4 @@
|
||||||
- if @commit
|
- if @commit
|
||||||
= render "projects/pipelines/info"
|
= render "projects/pipelines/info"
|
||||||
|
|
||||||
= render "projects/commit/pipeline", pipeline: @pipeline
|
= render "projects/pipelines/with_tabs", pipeline: @pipeline
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
---
|
---
|
||||||
title: 23637-title-bar-pipelines
|
title: Redesign pipelines page
|
||||||
merge_request:
|
merge_request:
|
||||||
author:
|
author:
|
||||||
|
|
|
@ -156,7 +156,10 @@ describe "Pipelines" do
|
||||||
@external = create(:generic_commit_status, status: 'success', pipeline: pipeline, name: 'jenkins', stage: 'external')
|
@external = create(:generic_commit_status, status: 'success', pipeline: pipeline, name: 'jenkins', stage: 'external')
|
||||||
end
|
end
|
||||||
|
|
||||||
before { visit namespace_project_pipeline_path(project.namespace, project, pipeline) }
|
before do
|
||||||
|
visit namespace_project_pipeline_path(project.namespace, project, pipeline)
|
||||||
|
find('.builds-tab').click
|
||||||
|
end
|
||||||
|
|
||||||
it 'shows a list of builds' do
|
it 'shows a list of builds' do
|
||||||
expect(page).to have_content('Test')
|
expect(page).to have_content('Test')
|
||||||
|
|
Loading…
Reference in a new issue