diff --git a/app/assets/javascripts/build.js b/app/assets/javascripts/build.js
index f336bfc36d619e01470277deb6b11ccbe6fb01dd..97462a5959c0d8262cddfb7c1b9d255b50764058 100644
--- a/app/assets/javascripts/build.js
+++ b/app/assets/javascripts/build.js
@@ -15,18 +15,17 @@
       this.hideSidebar = bind(this.hideSidebar, this);
       this.toggleSidebar = bind(this.toggleSidebar, this);
       this.updateDropdown = bind(this.updateDropdown, this);
+      this.$document = $(document);
       clearInterval(Build.interval);
       // Init breakpoint checker
       this.bp = Breakpoints.get();
-      $('.js-build-sidebar').niceScroll();
+      this.initSidebar();
 
       this.populateJobs(this.build_stage);
       this.updateStageDropdownText(this.build_stage);
-      this.hideSidebar();
 
-      $(document).off('click', '.js-sidebar-build-toggle').on('click', '.js-sidebar-build-toggle', this.toggleSidebar);
       $(window).off('resize.build').on('resize.build', this.hideSidebar);
-      $(document).off('click', '.stage-item').on('click', '.stage-item', this.updateDropdown);
+      this.$document.off('click', '.stage-item').on('click', '.stage-item', this.updateDropdown);
       $('#js-build-scroll > a').off('click').on('click', this.stepTrace);
       this.updateArtifactRemoveDate();
       if ($('#build-trace').length) {
@@ -62,6 +61,21 @@
       }
     }
 
+    Build.prototype.initSidebar = function() {
+      this.$sidebar = $('.js-build-sidebar');
+      this.sidebarTranslationLimits = {
+        min: $('.navbar-gitlab').outerHeight() + $('.layout-nav').outerHeight()
+      }
+      this.sidebarTranslationLimits.max = this.sidebarTranslationLimits.min + $('.scrolling-tabs-container').outerHeight();
+      this.$sidebar.css({
+        top: this.sidebarTranslationLimits.max
+      });
+      this.$sidebar.niceScroll();
+      this.hideSidebar();
+      this.$document.off('click', '.js-sidebar-build-toggle').on('click', '.js-sidebar-build-toggle', this.toggleSidebar);
+      this.$document.off('scroll.translateSidebar').on('scroll.translateSidebar', this.translateSidebar.bind(this));
+    };
+
     Build.prototype.getInitialBuildTrace = function() {
       var removeRefreshStatuses = ['success', 'failed', 'canceled', 'skipped']
 
@@ -129,15 +143,23 @@
 
     Build.prototype.toggleSidebar = function() {
       if (this.shouldHideSidebar()) {
-        return $('.js-build-sidebar').toggleClass('right-sidebar-expanded right-sidebar-collapsed');
+        return this.$sidebar.toggleClass('right-sidebar-expanded right-sidebar-collapsed');
       }
     };
 
+    Build.prototype.translateSidebar = function(e) {
+      var newPosition = this.sidebarTranslationLimits.max - document.body.scrollTop;
+      if (newPosition < this.sidebarTranslationLimits.min) newPosition = this.sidebarTranslationLimits.min;
+      this.$sidebar.css({
+        top: newPosition
+      });
+    };
+
     Build.prototype.hideSidebar = function() {
       if (this.shouldHideSidebar()) {
-        return $('.js-build-sidebar').removeClass('right-sidebar-expanded').addClass('right-sidebar-collapsed');
+        return this.$sidebar.removeClass('right-sidebar-expanded').addClass('right-sidebar-collapsed');
       } else {
-        return $('.js-build-sidebar').removeClass('right-sidebar-collapsed').addClass('right-sidebar-expanded');
+        return this.$sidebar.removeClass('right-sidebar-collapsed').addClass('right-sidebar-expanded');
       }
     };
 
diff --git a/app/assets/stylesheets/pages/builds.scss b/app/assets/stylesheets/pages/builds.scss
index 194a39a8377d3fe4f68886855cf73054911f5421..fcaba954615fcb0eccc363c1ee0cd373a6b00505 100644
--- a/app/assets/stylesheets/pages/builds.scss
+++ b/app/assets/stylesheets/pages/builds.scss
@@ -233,3 +233,9 @@
   right: 0;
   margin-top: -17px;
 }
+
+@media (min-width: $screen-md-min) {
+  .sub-nav.build {
+    width: calc(100% + #{$gutter_width});
+  }
+}
diff --git a/app/views/projects/blame/show.html.haml b/app/views/projects/blame/show.html.haml
index 5a98e258b2204e73259ba72f9dc8d89d75b0fb98..dfb96305f482522052e0a50d37953ee16924946a 100644
--- a/app/views/projects/blame/show.html.haml
+++ b/app/views/projects/blame/show.html.haml
@@ -1,45 +1,48 @@
+- @no_container = true
 - page_title "Blame", @blob.path, @ref
+= render "projects/commits/head"
 
-%h3.page-title Blame view
+%div{ class: container_class }
+  %h3.page-title Blame view
 
-#blob-content-holder.tree-holder
-  .file-holder
-    .file-title
-      = blob_icon @blob.mode, @blob.name
-      %strong
-        = @path
-      %small= number_to_human_size @blob.size
-      .file-actions
-        = render "projects/blob/actions"
-    .table-responsive.file-content.blame.code.js-syntax-highlight
-      %table
-        - current_line = 1
-        - @blame_groups.each do |blame_group|
-          %tr
-            %td.blame-commit
-              .commit
-                - commit = blame_group[:commit]
-                = author_avatar(commit, size: 36)
-                .commit-row-title
-                  %strong
-                    = link_to_gfm truncate(commit.title, length: 35), namespace_project_commit_path(@project.namespace, @project, commit.id), class: "cdark"
-                  .pull-right
-                    = link_to commit.short_id, namespace_project_commit_path(@project.namespace, @project, commit), class: "monospace"
-                  &nbsp;
-                .light
-                  = commit_author_link(commit, avatar: false)
-                  authored
-                  #{time_ago_with_tooltip(commit.committed_date, skip_js: true)}
-            %td.line-numbers
-              - line_count = blame_group[:lines].count
-              - (current_line...(current_line + line_count)).each do |i|
-                %a.diff-line-num{href: "#L#{i}", id: "L#{i}", 'data-line-number' => i}
-                  = icon("link")
-                  = i
-                \
-              - current_line += line_count
-            %td.lines
-              %pre.code.highlight
-                %code
-                  - blame_group[:lines].each do |line|
-                    #{line}
+  #blob-content-holder.tree-holder
+    .file-holder
+      .file-title
+        = blob_icon @blob.mode, @blob.name
+        %strong
+          = @path
+        %small= number_to_human_size @blob.size
+        .file-actions
+          = render "projects/blob/actions"
+      .table-responsive.file-content.blame.code.js-syntax-highlight
+        %table
+          - current_line = 1
+          - @blame_groups.each do |blame_group|
+            %tr
+              %td.blame-commit
+                .commit
+                  - commit = blame_group[:commit]
+                  = author_avatar(commit, size: 36)
+                  .commit-row-title
+                    %strong
+                      = link_to_gfm truncate(commit.title, length: 35), namespace_project_commit_path(@project.namespace, @project, commit.id), class: "cdark"
+                    .pull-right
+                      = link_to commit.short_id, namespace_project_commit_path(@project.namespace, @project, commit), class: "monospace"
+                    &nbsp;
+                  .light
+                    = commit_author_link(commit, avatar: false)
+                    authored
+                    #{time_ago_with_tooltip(commit.committed_date, skip_js: true)}
+              %td.line-numbers
+                - line_count = blame_group[:lines].count
+                - (current_line...(current_line + line_count)).each do |i|
+                  %a.diff-line-num{href: "#L#{i}", id: "L#{i}", 'data-line-number' => i}
+                    = icon("link")
+                    = i
+                  \
+                - current_line += line_count
+              %td.lines
+                %pre.code.highlight
+                  %code
+                    - blame_group[:lines].each do |line|
+                      #{line}
diff --git a/app/views/projects/blob/edit.html.haml b/app/views/projects/blob/edit.html.haml
index 680e95ac6b5bb7015f4bfe92986cdd9e2a3b7700..2a0352a71b79a19a3acfa49292061756b13e1db5 100644
--- a/app/views/projects/blob/edit.html.haml
+++ b/app/views/projects/blob/edit.html.haml
@@ -1,28 +1,31 @@
+- @no_container = true
 - page_title "Edit", @blob.path, @ref
 - content_for :page_specific_javascripts do
   = page_specific_javascript_tag('lib/ace.js')
   = page_specific_javascript_tag('blob_edit/blob_edit_bundle.js')
+= render "projects/commits/head"
 
-- if @conflict
-  .alert.alert-danger
-    Someone edited the file the same time you did. Please check out
-    = link_to "the file", namespace_project_blob_path(@project.namespace, @project, tree_join(@target_branch, @file_path)), target: "_blank"
-    and make sure your changes will not unintentionally remove theirs.
+%div{ class: container_class }
+  - if @conflict
+    .alert.alert-danger
+      Someone edited the file the same time you did. Please check out
+      = link_to "the file", namespace_project_blob_path(@project.namespace, @project, tree_join(@target_branch, @file_path)), target: "_blank"
+      and make sure your changes will not unintentionally remove theirs.
 
-.file-editor
-  %ul.nav-links.no-bottom.js-edit-mode
-    %li.active
-      = link_to '#editor' do
-        Edit File
+  .file-editor
+    %ul.nav-links.no-bottom.js-edit-mode
+      %li.active
+        = link_to '#editor' do
+          Edit File
 
-    %li
-      = link_to '#preview', 'data-preview-url' => namespace_project_preview_blob_path(@project.namespace, @project, @id) do
-        = editing_preview_title(@blob.name)
+      %li
+        = link_to '#preview', 'data-preview-url' => namespace_project_preview_blob_path(@project.namespace, @project, @id) do
+          = editing_preview_title(@blob.name)
 
-  = form_tag(namespace_project_update_blob_path(@project.namespace, @project, @id), method: :put, class: 'form-horizontal js-quick-submit js-requires-input js-edit-blob-form', data: blob_editor_paths) do
-    = render 'projects/blob/editor', ref: @ref, path: @path, blob_data: @blob.data
-    = render 'shared/new_commit_form', placeholder: "Update #{@blob.name}"
-    = hidden_field_tag 'last_commit_sha', @last_commit_sha
-    = hidden_field_tag 'content', '', id: "file-content"
-    = hidden_field_tag 'from_merge_request_id', params[:from_merge_request_id]
-    = render 'projects/commit_button', ref: @ref, cancel_path: namespace_project_blob_path(@project.namespace, @project, @id)
+    = form_tag(namespace_project_update_blob_path(@project.namespace, @project, @id), method: :put, class: 'form-horizontal js-quick-submit js-requires-input js-edit-blob-form', data: blob_editor_paths) do
+      = render 'projects/blob/editor', ref: @ref, path: @path, blob_data: @blob.data
+      = render 'shared/new_commit_form', placeholder: "Update #{@blob.name}"
+      = hidden_field_tag 'last_commit_sha', @last_commit_sha
+      = hidden_field_tag 'content', '', id: "file-content"
+      = hidden_field_tag 'from_merge_request_id', params[:from_merge_request_id]
+      = render 'projects/commit_button', ref: @ref, cancel_path: namespace_project_blob_path(@project.namespace, @project, @id)
diff --git a/app/views/projects/builds/show.html.haml b/app/views/projects/builds/show.html.haml
index e4d41288aa6f34aef495e01eef019acc8e9c0cc2..b5e8b0bf6eb5e894c9b1681d6580b932a9a147dc 100644
--- a/app/views/projects/builds/show.html.haml
+++ b/app/views/projects/builds/show.html.haml
@@ -1,56 +1,59 @@
+- @no_container = true
 - page_title "#{@build.name} (##{@build.id})", "Builds"
 - trace_with_state = @build.trace_with_state
 - header_title project_title(@project, "Builds", project_builds_path(@project))
+= render "projects/pipelines/head", build_subnav: true
 
-.build-page
-  = render "header"
+%div{ class: container_class }
+  .build-page
+    = render "header"
 
-  - if @build.stuck?
-    - unless @build.any_runners_online?
-      .bs-callout.bs-callout-warning
-        %p
-          - if no_runners_for_project?(@build.project)
-            This build is stuck, because the project doesn't have any runners online assigned to it.
-          - elsif @build.tags.any?
-            This build is stuck, because you don't have any active runners online with any of these tags assigned to them:
-            - @build.tags.each do |tag|
-              %span.label.label-primary
-                = tag
-          - else
-            This build is stuck, because you don't have any active runners that can run this build.
+    - if @build.stuck?
+      - unless @build.any_runners_online?
+        .bs-callout.bs-callout-warning
+          %p
+            - if no_runners_for_project?(@build.project)
+              This build is stuck, because the project doesn't have any runners online assigned to it.
+            - elsif @build.tags.any?
+              This build is stuck, because you don't have any active runners online with any of these tags assigned to them:
+              - @build.tags.each do |tag|
+                %span.label.label-primary
+                  = tag
+            - else
+              This build is stuck, because you don't have any active runners that can run this build.
 
-          %br
-          Go to
-          = link_to namespace_project_runners_path(@build.project.namespace, @build.project) do
-            Runners page
+            %br
+            Go to
+            = link_to namespace_project_runners_path(@build.project.namespace, @build.project) do
+              Runners page
 
-  .prepend-top-default
-    - if @build.active?
-      .autoscroll-container
-        %button.btn.btn-success.btn-sm#autoscroll-button{:type => "button", :data => {:state => 'disabled'}} enable autoscroll
-    - if @build.erased?
-      .erased.alert.alert-warning
-        - erased_by = "by #{link_to @build.erased_by.name, user_path(@build.erased_by)}" if @build.erased_by
-        Build has been erased #{erased_by.html_safe} #{time_ago_with_tooltip(@build.erased_at)}
-    - else
-      #js-build-scroll.scroll-controls
-        = link_to '#build-trace', class: 'btn' do
-          %i.fa.fa-angle-up
-        = link_to '#down-build-trace', class: 'btn' do
-          %i.fa.fa-angle-down
-      %pre.build-trace#build-trace
-        %code.bash.js-build-output
-        = icon("refresh spin", class: "js-build-refresh")
+    .prepend-top-default
+      - if @build.active?
+        .autoscroll-container
+          %button.btn.btn-success.btn-sm#autoscroll-button{:type => "button", :data => {:state => 'disabled'}} enable autoscroll
+      - if @build.erased?
+        .erased.alert.alert-warning
+          - erased_by = "by #{link_to @build.erased_by.name, user_path(@build.erased_by)}" if @build.erased_by
+          Build has been erased #{erased_by.html_safe} #{time_ago_with_tooltip(@build.erased_at)}
+      - else
+        #js-build-scroll.scroll-controls
+          = link_to '#build-trace', class: 'btn' do
+            %i.fa.fa-angle-up
+          = link_to '#down-build-trace', class: 'btn' do
+            %i.fa.fa-angle-down
+        %pre.build-trace#build-trace
+          %code.bash.js-build-output
+          = icon("refresh spin", class: "js-build-refresh")
 
-    #down-build-trace
+      #down-build-trace
 
-= render "sidebar"
+  = render "sidebar"
 
-:javascript
-  new Build({
-    page_url: "#{namespace_project_build_url(@project.namespace, @project, @build)}",
-    build_url: "#{namespace_project_build_url(@project.namespace, @project, @build, :json)}",
-    build_status: "#{@build.status}",
-    build_stage: "#{@build.stage}",
-    state1: "#{trace_with_state[:state]}"
-  })
+  :javascript
+    new Build({
+      page_url: "#{namespace_project_build_url(@project.namespace, @project, @build)}",
+      build_url: "#{namespace_project_build_url(@project.namespace, @project, @build, :json)}",
+      build_status: "#{@build.status}",
+      build_stage: "#{@build.stage}",
+      state1: "#{trace_with_state[:state]}"
+    })
diff --git a/app/views/projects/commit/builds.html.haml b/app/views/projects/commit/builds.html.haml
index 2f051fb90e076e3deac6de236963f0e502b4dcf0..f9d7eac354244867af3bce5c452a801532f2be37 100644
--- a/app/views/projects/commit/builds.html.haml
+++ b/app/views/projects/commit/builds.html.haml
@@ -1,7 +1,10 @@
+- @no_container = true
 - page_title "Builds", "#{@commit.title} (#{@commit.short_id})", "Commits"
+= render "projects/commits/head"
 
-.prepend-top-default
-  = render "commit_box"
+%div{ class: container_class }
+  .prepend-top-default
+    = render "commit_box"
 
-= render "ci_menu"
-= render "builds"
+  = render "ci_menu"
+  = render "builds"
diff --git a/app/views/projects/commit/show.html.haml b/app/views/projects/commit/show.html.haml
index ed44d86a687d0a1e36456d8b507650e12711c12b..cebf58d63dfe02bd61a3ad0ad3a6129dc3f38e27 100644
--- a/app/views/projects/commit/show.html.haml
+++ b/app/views/projects/commit/show.html.haml
@@ -1,14 +1,17 @@
+- @no_container = true
 - page_title        "#{@commit.title} (#{@commit.short_id})", "Commits"
 - page_description  @commit.description
+= render "projects/commits/head"
 
-.prepend-top-default
-  = render "commit_box"
-- if @commit.status
-  = render "ci_menu"
-- else
-  %div.block-connector
-= render "projects/diffs/diffs", diffs: @diffs
-= render "projects/notes/notes_with_form"
-- if can_collaborate_with_project?
-  - %w(revert cherry-pick).each do |type|
-    = render "projects/commit/change", type: type, commit: @commit, title: @commit.title
+%div{ class: container_class }
+  .prepend-top-default
+    = render "commit_box"
+  - if @commit.status
+    = render "ci_menu"
+  - else
+    %div.block-connector
+  = render "projects/diffs/diffs", diffs: @diffs
+  = render "projects/notes/notes_with_form"
+  - if can_collaborate_with_project?
+    - %w(revert cherry-pick).each do |type|
+      = render "projects/commit/change", type: type, commit: @commit, title: @commit.title
diff --git a/app/views/projects/environments/edit.html.haml b/app/views/projects/environments/edit.html.haml
index 6d1bdb9320f302ac72c4dd1c203eb2284f077a4b..3871165763c400de7bf4bb6f8f5b7ea394589829 100644
--- a/app/views/projects/environments/edit.html.haml
+++ b/app/views/projects/environments/edit.html.haml
@@ -1,6 +1,9 @@
+- @no_container = true
 - page_title "Edit", @environment.name, "Environments"
+= render "projects/pipelines/head"
 
-%h3.page-title
-  Edit environment
-%hr
-= render 'form'
+%div{ class: container_class }
+  %h3.page-title
+    Edit environment
+  %hr
+  = render 'form'
diff --git a/app/views/projects/environments/new.html.haml b/app/views/projects/environments/new.html.haml
index e51667ade2dbb1198fcc33e931c1ff287324f0ba..24638c77cbb0dfc864ac218de44940e8cd5ff06e 100644
--- a/app/views/projects/environments/new.html.haml
+++ b/app/views/projects/environments/new.html.haml
@@ -1,6 +1,9 @@
+- @no_container = true
 - page_title 'New Environment'
+= render "projects/pipelines/head"
 
-%h3.page-title
-  New environment
-%hr
-= render 'form'
+%div{ class: container_class }
+  %h3.page-title
+    New environment
+  %hr
+  = render 'form'
diff --git a/app/views/projects/labels/edit.html.haml b/app/views/projects/labels/edit.html.haml
index 6901ba13ab70e745531cb37c424a713769ef6921..52b187e7e58e866777a863da86894a3a6e0507be 100644
--- a/app/views/projects/labels/edit.html.haml
+++ b/app/views/projects/labels/edit.html.haml
@@ -1,6 +1,9 @@
+- @no_container = true
 - page_title "Edit", @label.name, "Labels"
+= render "projects/issues/head"
 
-%h3.page-title
-  Edit Label
-%hr
-= render 'form'
+%div{ class: container_class }
+  %h3.page-title
+    Edit Label
+  %hr
+  = render 'form'
diff --git a/app/views/projects/labels/new.html.haml b/app/views/projects/labels/new.html.haml
index 49ddf9016192d95aa7d10e45090c89b2a41eb511..a1bb66cfb6c15e24444b7f754a9f17ed2f9b1c49 100644
--- a/app/views/projects/labels/new.html.haml
+++ b/app/views/projects/labels/new.html.haml
@@ -1,6 +1,9 @@
+- @no_container = true
 - page_title "New Label"
+= render "projects/issues/head"
 
-%h3.page-title
-  New Label
-%hr
-= render 'form'
+%div{ class: container_class }
+  %h3.page-title
+    New Label
+  %hr
+  = render 'form'
diff --git a/app/views/projects/milestones/edit.html.haml b/app/views/projects/milestones/edit.html.haml
index be682226ab68e2b21436b8399d86cc8a88d2a78a..11f41e75e633750f444f99fd9ed3578ec71e89c5 100644
--- a/app/views/projects/milestones/edit.html.haml
+++ b/app/views/projects/milestones/edit.html.haml
@@ -1,8 +1,12 @@
+- @no_container = true
 - page_title "Edit", @milestone.title, "Milestones"
+= render "projects/issues/head"
 
-%h3.page-title
-  Edit Milestone ##{@milestone.iid}
+%div{ class: container_class }
 
-%hr
+  %h3.page-title
+    Edit Milestone ##{@milestone.iid}
 
-= render "form"
+  %hr
+
+  = render "form"
diff --git a/app/views/projects/milestones/new.html.haml b/app/views/projects/milestones/new.html.haml
index 7f372b41698bd4f865e5bc2aeb9ea406528308a4..cda093ade819502f923f7bd2b8cd7e1994b95ba3 100644
--- a/app/views/projects/milestones/new.html.haml
+++ b/app/views/projects/milestones/new.html.haml
@@ -1,8 +1,11 @@
+- @no_container = true
 - page_title "New Milestone"
+= render "projects/issues/head"
 
-%h3.page-title
-  New Milestone
+%div{ class: container_class }
+  %h3.page-title
+    New Milestone
 
-%hr
+  %hr
 
-= render "form"
+  = render "form"
diff --git a/app/views/projects/milestones/show.html.haml b/app/views/projects/milestones/show.html.haml
index e62f810a52117f10ebb4568a839462228f956878..c83818e9199662cb71b2fb3bd859387171c7ca48 100644
--- a/app/views/projects/milestones/show.html.haml
+++ b/app/views/projects/milestones/show.html.haml
@@ -1,49 +1,52 @@
+- @no_container = true
 - page_title       @milestone.title, "Milestones"
 - page_description @milestone.description
+= render "projects/issues/head"
 
-.detail-page-header
-  .status-box{ class: status_box_class(@milestone) }
-    - if @milestone.closed?
-      Closed
-    - elsif @milestone.expired?
-      Past due
-    - else
-      Open
-  %span.identifier
-    Milestone ##{@milestone.iid}
-  - if @milestone.expires_at
-    %span.creator
-      &middot;
-      = @milestone.expires_at
-  .pull-right
-    - if can?(current_user, :admin_milestone, @project)
-      - if @milestone.active?
-        = link_to 'Close Milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :close }), method: :put, class: "btn btn-close btn-nr btn-grouped"
+%div{ class: container_class }
+  .detail-page-header
+    .status-box{ class: status_box_class(@milestone) }
+      - if @milestone.closed?
+        Closed
+      - elsif @milestone.expired?
+        Past due
       - else
-        = link_to 'Reopen Milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :activate }), method: :put, class: "btn btn-reopen btn-nr btn-grouped"
+        Open
+    %span.identifier
+      Milestone ##{@milestone.iid}
+    - if @milestone.expires_at
+      %span.creator
+        &middot;
+        = @milestone.expires_at
+    .pull-right
+      - if can?(current_user, :admin_milestone, @project)
+        - if @milestone.active?
+          = link_to 'Close Milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :close }), method: :put, class: "btn btn-close btn-nr btn-grouped"
+        - else
+          = link_to 'Reopen Milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :activate }), method: :put, class: "btn btn-reopen btn-nr btn-grouped"
 
-      = link_to edit_namespace_project_milestone_path(@project.namespace, @project, @milestone), class: "btn btn-grouped btn-nr" do
-        Edit
+        = link_to edit_namespace_project_milestone_path(@project.namespace, @project, @milestone), class: "btn btn-grouped btn-nr" do
+          Edit
 
-      = link_to namespace_project_milestone_path(@project.namespace, @project, @milestone), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-grouped btn-danger" do
-        Delete
+        = link_to namespace_project_milestone_path(@project.namespace, @project, @milestone), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-grouped btn-danger" do
+          Delete
 
-.detail-page-description.milestone-detail
-  %h2.title
-    = markdown_field(@milestone, :title)
-  %div
-    - if @milestone.description.present?
-      .description
-        .wiki
-          = preserve do
-            = markdown_field(@milestone, :description)
+  .detail-page-description.milestone-detail
+    %h2.title
+      = markdown_field(@milestone, :title)
+    %div
+      - if @milestone.description.present?
+        .description
+          .wiki
+            = preserve do
+              = markdown_field(@milestone, :description)
 
-- if @milestone.total_items_count(current_user).zero?
-  .alert.alert-success.prepend-top-default
-    %span Assign some issues to this milestone.
-- elsif @milestone.complete?(current_user) && @milestone.active?
-  .alert.alert-success.prepend-top-default
-    %span All issues for this milestone are closed. You may close this milestone now.
+  - if @milestone.total_items_count(current_user).zero?
+    .alert.alert-success.prepend-top-default
+      %span Assign some issues to this milestone.
+  - elsif @milestone.complete?(current_user) && @milestone.active?
+    .alert.alert-success.prepend-top-default
+      %span All issues for this milestone are closed. You may close this milestone now.
 
-= render 'shared/milestones/summary', milestone: @milestone, project: @project
-= render 'shared/milestones/tabs', milestone: @milestone
+  = render 'shared/milestones/summary', milestone: @milestone, project: @project
+  = render 'shared/milestones/tabs', milestone: @milestone
diff --git a/app/views/projects/pipelines/_head.html.haml b/app/views/projects/pipelines/_head.html.haml
index 7d421c0e7409ef95535b663cb28ccef46b976dd1..b10dd47709f07e02eb6b6c61345511ac93e804b3 100644
--- a/app/views/projects/pipelines/_head.html.haml
+++ b/app/views/projects/pipelines/_head.html.haml
@@ -1,7 +1,7 @@
 = content_for :sub_nav do
   .scrolling-tabs-container.sub-nav-scroll
     = render 'shared/nav_scroll'
-    .nav-links.sub-nav.scrolling-tabs
+    .nav-links.sub-nav.scrolling-tabs{ class: ('build' if local_assigns.fetch(:build_subnav, false)) }
       %ul{ class: (container_class) }
         - if project_nav_tab? :pipelines
           = nav_link(controller: :pipelines) do
diff --git a/app/views/projects/pipelines/show.html.haml b/app/views/projects/pipelines/show.html.haml
index 75943c64276bfd4b0318990caa700c0d46c2daeb..688535ad764f57b4d32171213b9df37229d9b83f 100644
--- a/app/views/projects/pipelines/show.html.haml
+++ b/app/views/projects/pipelines/show.html.haml
@@ -1,8 +1,11 @@
+- @no_container = true
 - page_title "Pipeline"
+= render "projects/pipelines/head"
 
-.prepend-top-default
-  - if @commit
-    = render "projects/pipelines/info"
-  %div.block-connector
+%div{ class: container_class }
+  .prepend-top-default
+    - if @commit
+      = render "projects/pipelines/info"
+    %div.block-connector
 
-= render "projects/commit/pipeline", pipeline: @pipeline
+  = render "projects/commit/pipeline", pipeline: @pipeline