diff --git a/CHANGELOG b/CHANGELOG
index 6fbbec0a5201caca16cad740a7e7334e56ce8ab5..f1dcc40a27326a6aa32154ab65ba92b67aa63f8b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -8,6 +8,7 @@ v 8.10.0 (unreleased)
   - Refactor repository paths handling to allow multiple git mount points
   - Optimize system note visibility checking by memoizing the visible reference count !5070
   - Add Application Setting to configure default Repository Path for new projects
+  - Delete award emoji when deleting a user
   - Remove pinTo from Flash and make inline flash messages look nicer !4854 (winniehell)
   - Wrap code blocks on Activies and Todos page. !4783 (winniehell)
   - Align flash messages with left side of page content !4959 (winniehell)
@@ -34,6 +35,7 @@ v 8.10.0 (unreleased)
   - Fix changing issue state columns in milestone view
   - Update health_check gem to version 2.1.0
   - Add notification settings dropdown for groups
+  - Render inline diffs for multiple changed lines following eachother
   - Wildcards for protected branches. !4665
   - Allow importing from Github using Personal Access Tokens. (Eric K Idema)
   - API: Todos !3188 (Robert Schilling)
@@ -73,7 +75,7 @@ v 8.10.0 (unreleased)
   - Allow '?', or '&' for label names
   - Fix importer for GitHub Pull Requests when a branch was reused across Pull Requests
   - Add date when user joined the team on the member page
-  - Fix 404 redirect after validation fails importing a GitLab project 
+  - Fix 404 redirect after validation fails importing a GitLab project
   - Fix 404 redirect after validation fails importing a GitLab project
   - Added setting to set new users by default as external !4545 (Dravere)
   - Add min value for project limit field on user's form !3622 (jastkand)
@@ -83,12 +85,18 @@ v 8.10.0 (unreleased)
   - Style of import project buttons were fixed in the new project page. !5183 (rdemirbay)
   - Fix GitHub client requests when rate limit is disabled
   - Optimistic locking for Issues and Merge Requests (Title and description overriding prevention)
+  - Redesign Builds and Pipelines pages
+  - Change status color and icon for running builds
 
 v 8.9.6
   - Fix importing of events under notes for GitLab projects. !5154
   - Fix log statements in import/export. !5129
   - Fix commit avatar alignment in compare view. !5128
   - Fix broken migration in MySQL. !5005
+  - Overwrite Host and X-Forwarded-Host headers in NGINX !5213
+
+v 8.9.6 (unreleased)
+  - Fix importing of events under notes for GitLab projects
 
 v 8.9.5
   - Add more debug info to import/export and memory killer. !5108
diff --git a/app/assets/stylesheets/framework/avatar.scss b/app/assets/stylesheets/framework/avatar.scss
index bb8d71fbae8711721c4183dd30ca4be1053bb532..8b6ddf8ba18d7542db144b3144cf760073a99672 100644
--- a/app/assets/stylesheets/framework/avatar.scss
+++ b/app/assets/stylesheets/framework/avatar.scss
@@ -20,6 +20,7 @@
   }
 
   &.s16 { width: 16px; height: 16px; margin-right: 6px; }
+  &.s20 { width: 20px; height: 20px; margin-right: 7px; }
   &.s24 { width: 24px; height: 24px; margin-right: 8px; }
   &.s26 { width: 26px; height: 26px; margin-right: 8px; }
   &.s32 { width: 32px; height: 32px; margin-right: 10px; }
diff --git a/app/assets/stylesheets/framework/variables.scss b/app/assets/stylesheets/framework/variables.scss
index 4337fab5d8741bff7cee36781165299bf3e7bd6f..09d3caa0e6a7193f3ffa4c6f68b3974dc35b54b2 100644
--- a/app/assets/stylesheets/framework/variables.scss
+++ b/app/assets/stylesheets/framework/variables.scss
@@ -17,6 +17,7 @@ $focus-border-color:    #3aabf0;
 $table-border-color:    #f0f0f0;
 $background-color:      #fafafa;
 $dark-background-color: #f7f7f7;
+$table-text-gray:       #8f8f8f;
 
 /*
  * Text
diff --git a/app/assets/stylesheets/pages/builds.scss b/app/assets/stylesheets/pages/builds.scss
index e8f1935d239e95a813e57e34343b5ceb77c2012f..99a2cd306cfb85c672b47e402d6c2c9af2ed7dc9 100644
--- a/app/assets/stylesheets/pages/builds.scss
+++ b/app/assets/stylesheets/pages/builds.scss
@@ -83,14 +83,6 @@
   }
 }
 
-table.builds {
-  .build-link {
-    a {
-      color: $gl-dark-link-color;
-    }
-  }
-}
-
 .build-trace {
   background: $ci-output-bg;
   color: $ci-text-color;
diff --git a/app/assets/stylesheets/pages/labels.scss b/app/assets/stylesheets/pages/labels.scss
index 47bfd144930da55caa917262f819597d015948e2..3b1e38fc07ddd44a9d6b346759a181aa14089d1f 100644
--- a/app/assets/stylesheets/pages/labels.scss
+++ b/app/assets/stylesheets/pages/labels.scss
@@ -162,9 +162,15 @@
 }
 
 .filtered-labels {
+  font-size: 0;
+  padding: 12px 16px;
+
   .label-row {
+    margin-top: 4px;
+    margin-bottom: 4px;
+
     &:not(:last-child) {
-      margin-right: 5px;
+      margin-right: 8px;
     }
   }
 
diff --git a/app/assets/stylesheets/pages/merge_requests.scss b/app/assets/stylesheets/pages/merge_requests.scss
index d9756b66af0fceeb48c270e6e988cc2478d3c9a9..15c6c9f231aa06cecce6b713ac1186e722a8a749 100644
--- a/app/assets/stylesheets/pages/merge_requests.scss
+++ b/app/assets/stylesheets/pages/merge_requests.scss
@@ -73,11 +73,14 @@
       color: #888;
     }
 
-    &.ci-pending,
-    &.ci-running {
+    &.ci-pending {
       color: $gl-warning;
     }
 
+    &.ci-running {
+      color: $blue-normal;
+    }
+
     &.ci-failed,
     &.ci-error {
       color: $gl-danger;
diff --git a/app/assets/stylesheets/pages/pipelines.scss b/app/assets/stylesheets/pages/pipelines.scss
index 6128868b670a43ff1f3d4a50ceb3a2ad1d45d08e..cbf8297f387d124dbb56c3b14136d96ee5024fc7 100644
--- a/app/assets/stylesheets/pages/pipelines.scss
+++ b/app/assets/stylesheets/pages/pipelines.scss
@@ -1,15 +1,12 @@
 .pipelines {
   .stage {
-    max-width: 100px;
+    max-width: 80px;
+    width: 80px;
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;
   }
 
-  .duration, .finished_at {
-    margin: 4px 0;
-  }
-
   .commit-title {
     margin: 0;
   }
@@ -22,3 +19,136 @@
     margin: 4px;
   }
 }
+
+.content-list {
+
+  &.pipelines,
+  &.builds-content-list {
+    width: 100%;
+    overflow: auto;
+  }
+}
+
+.table.builds {
+  min-width: 1100px;
+
+  tr {
+    th {
+      padding: 16px;
+      border: none;
+    }
+  }
+
+  tbody {
+    border-top-width: 1px;
+  }
+
+  .branch-commit {
+
+    .branch-name {
+      margin-left: 8px;
+      font-weight: bold;
+      max-width: 180px;
+      overflow: hidden;
+      display: inline-block;
+      white-space: nowrap;
+      vertical-align: top;
+      text-overflow: ellipsis;
+    }
+
+    svg {
+      margin: 0 6px;
+      height: 14px;
+      width: auto;
+      vertical-align: middle;
+    }
+
+    .commit-id {
+      color: $gl-link-color;
+      margin-right: 8px;
+    }
+
+    .commit-title {
+      margin-top: 4px;
+      max-width: 320px;
+      overflow: hidden;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+    }
+
+    .avatar {
+      margin-left: 0;
+    }
+
+    .label-container {
+
+      .label {
+        margin-top: 5px;
+      }
+    }
+  }
+
+  .duration,
+  .finished-at {
+    color: $table-text-gray;
+    margin: 4px 0;
+
+    .fa {
+      font-size: 12px;
+    }
+
+    svg {
+      height: 12px;
+      width: auto;
+      vertical-align: middle;
+    }
+
+    .fa,
+    svg {
+      margin-right: 5px;
+    }
+  }
+
+  .pipeline-actions {
+
+    .btn {
+      margin: 0;
+      color: $table-text-gray;
+    }
+
+    .dropdown-toggle,
+    .dropdown-menu {
+      color: $table-text-gray;
+
+      .fa {
+        color: $table-text-gray;
+        margin-right: 6px;
+        font-size: 14px;
+      }
+    }
+
+    .btn-remove {
+      color: $white-light;
+    }
+
+    .btn-group {
+      &.open {
+        .btn-default {
+          background-color: $white-normal;
+          border-color: $border-white-normal;
+        }
+      }
+    }
+  }
+
+  .build-link {
+
+    a {
+      color: $gl-dark-link-color;
+    }
+  }
+
+  .btn-group.open .dropdown-toggle {
+    box-shadow: none;
+  }
+}
diff --git a/app/assets/stylesheets/pages/status.scss b/app/assets/stylesheets/pages/status.scss
index 2370d35924e9e51c02edc48965fd95d1c0cedaf7..c6b053150be4cc3c92ee33ba241349816b6bb26a 100644
--- a/app/assets/stylesheets/pages/status.scss
+++ b/app/assets/stylesheets/pages/status.scss
@@ -32,11 +32,15 @@
       border-color: $gl-gray;
     }
 
-    &.ci-pending,
-    &.ci-running {
+    &.ci-pending {
       color: $gl-warning;
       border-color: $gl-warning;
     }
+
+    &.ci-running {
+      color: $blue-normal;
+      border-color: $blue-normal;
+    }
   }
 
   .ci-status-icon-success {
@@ -45,10 +49,12 @@
   .ci-status-icon-failed {
     color: $gl-danger;
   }
-  .ci-status-icon-running,
   .ci-status-icon-pending {
     color: $gl-warning;
   }
+  .ci-status-icon-running {
+    color: $blue-normal;
+  }
   .ci-status-icon-canceled,
   .ci-status-icon-disabled,
   .ci-status-icon-not-found,
diff --git a/app/helpers/appearances_helper.rb b/app/helpers/appearances_helper.rb
index 950f323e383a94f128453a55ee92b5b4c1b8cf61..e12a10529881930a6921d9470fa76989e086b7b9 100644
--- a/app/helpers/appearances_helper.rb
+++ b/app/helpers/appearances_helper.rb
@@ -31,7 +31,7 @@ module AppearancesHelper
     end
   end
 
-  def navbar_icon(icon_name, size: 16)
+  def custom_icon(icon_name, size: 16)
     render "shared/icons/#{icon_name}.svg", size: size
   end
 end
diff --git a/app/helpers/ci_status_helper.rb b/app/helpers/ci_status_helper.rb
index 8e4ae1e6aec16c1b0ff1d1d15747b3bd06da6065..e6c99c9959e159ed78089c022ce869246f9b397c 100644
--- a/app/helpers/ci_status_helper.rb
+++ b/app/helpers/ci_status_helper.rb
@@ -29,8 +29,10 @@ module CiStatusHelper
         'check'
       when 'failed'
         'close'
-      when 'running', 'pending'
+      when 'pending'
         'clock-o'
+      when 'running'
+        'spinner'
       else
         'circle'
       end
diff --git a/app/models/user.rb b/app/models/user.rb
index 79c670cb35ac5fd89cbb350b2d057ef1bff5e2bb..7a72c2021503a340872a62ea97d1804b1b41e4a8 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -87,7 +87,7 @@ class User < ActiveRecord::Base
   has_many :builds,                   dependent: :nullify, class_name: 'Ci::Build'
   has_many :todos,                    dependent: :destroy
   has_many :notification_settings,    dependent: :destroy
-  has_many :award_emoji,              as: :awardable, dependent: :destroy
+  has_many :award_emoji,              dependent: :destroy
 
   #
   # Validations
diff --git a/app/views/admin/builds/_build.html.haml b/app/views/admin/builds/_build.html.haml
index 967151bc33be19dc70c2fb8d14f62357735af802..ce818c30c3086ed6d17ccd0b501223794452d355 100644
--- a/app/views/admin/builds/_build.html.haml
+++ b/app/views/admin/builds/_build.html.haml
@@ -1,30 +1,40 @@
 - project = build.project
-%tr.build
+%tr.build.commit
   %td.status
     = ci_status_with_icon(build.status)
 
-  %td.build-link
-    - if can?(current_user, :read_build, build.project)
-      = link_to namespace_project_build_url(build.project.namespace, build.project, build) do
-        %strong Build ##{build.id}
-    - else
-      %strong Build ##{build.id}
+  %td
+    .branch-commit
+      - if can?(current_user, :read_build, build.project)
+        = link_to namespace_project_build_url(build.project.namespace, build.project, build) do
+          %span.build-link ##{build.id}
+      - else
+        %span.build-link ##{build.id}
 
-    - if build.stuck?
-      %i.fa.fa-warning.text-warning
+      - if build.stuck?
+        %i.fa.fa-warning.text-warning
 
-  %td
-    - if project
-      = link_to project.name_with_namespace, admin_namespace_project_path(project.namespace, project)
+      - if build.ref
+        = link_to build.ref, namespace_project_commits_path(build.project.namespace, build.project, build.ref), class: "monospace branch-name"
+      - else
+        .light none
+      = custom_icon("icon_commit")
 
-  %td
-    = link_to build.short_sha, namespace_project_commit_path(build.project.namespace, build.project, build.sha), class: "monospace"
+      = link_to build.short_sha, namespace_project_commit_path(build.project.namespace, build.project, build.sha), class: "monospace commit-id"
+
+      .label-container
+        - if build.tags.any?
+          - build.tags.each do |tag|
+            %span.label.label-primary
+              = tag
+        - if build.try(:trigger_request)
+          %span.label.label-info triggered
+        - if build.try(:allow_failure)
+          %span.label.label-danger allowed to fail
 
   %td
-    - if build.ref
-      = link_to build.ref, namespace_project_commits_path(build.project.namespace, build.project, build.ref)
-    - else
-      .light none
+    - if project
+      = link_to project.name_with_namespace, admin_namespace_project_path(project.namespace, project)
 
   %td
     - if build.try(:runner)
@@ -36,22 +46,15 @@
     #{build.stage} / #{build.name}
 
   %td
-    - if build.tags.any?
-      - build.tags.each do |tag|
-        %span.label.label-primary
-          = tag
-    - if build.try(:trigger_request)
-      %span.label.label-info triggered
-    - if build.try(:allow_failure)
-      %span.label.label-danger allowed to fail
-
-  %td.duration
     - if build.duration
-      #{duration_in_words(build.finished_at, build.started_at)}
+      %p.duration
+        = custom_icon("icon_timer")
+        = duration_in_numbers(build.finished_at, build.started_at)
 
-  %td.timestamp
     - if build.finished_at
-      %span #{time_ago_with_tooltip(build.finished_at)}
+      %p.finished-at
+        = icon("calendar")
+        %span #{time_ago_with_tooltip(build.finished_at)}
 
   - if defined?(coverage) && coverage
     %td.coverage
diff --git a/app/views/admin/builds/index.html.haml b/app/views/admin/builds/index.html.haml
index 1e60205f91a1e605540e9977d4d91c9c0f3d40ec..9ea3cca0ecb0e8cc691ec951fceeb55b0def3ccb 100644
--- a/app/views/admin/builds/index.html.haml
+++ b/app/views/admin/builds/index.html.haml
@@ -27,7 +27,7 @@
   .row-content-block.second-block
     #{(@scope || 'all').capitalize} builds
 
-  %ul.content-list
+  %ul.content-list.builds-content-list
     - if @builds.blank?
       %li
         .nothing-here-block No builds to show
@@ -37,15 +37,11 @@
           %thead
             %tr
               %th Status
-              %th Build ID
-              %th Project
               %th Commit
-              %th Ref
+              %th Project
               %th Runner
               %th Name
-              %th Tags
-              %th Duration
-              %th Finished at
+              %th
               %th
 
           - @builds.each do |build|
diff --git a/app/views/dashboard/todos/index.html.haml b/app/views/dashboard/todos/index.html.haml
index fc42e5dcc661c84444d18e383d6c95137cbf2556..4e340b6ec16f3dad72ee06eb91ab93c8a717af5b 100644
--- a/app/views/dashboard/todos/index.html.haml
+++ b/app/views/dashboard/todos/index.html.haml
@@ -9,14 +9,14 @@
         %span
           To do
         %span.badge
-          = todos_pending_count
+          = number_with_delimiter(todos_pending_count)
     - todo_done_active = ('active' if params[:state] == 'done')
     %li{class: "todos-done #{todo_done_active}"}
       = link_to todos_filter_path(state: 'done') do
         %span
           Done
         %span.badge
-          = todos_done_count
+          = number_with_delimiter(todos_done_count)
 
   .nav-controls
     - if @todos.any?(&:pending?)
diff --git a/app/views/projects/builds/index.html.haml b/app/views/projects/builds/index.html.haml
index 381b3754cd532199cca4617099c8c5b68de87778..85c31dfd918207433a70ee6a27b9988e4a715cab 100644
--- a/app/views/projects/builds/index.html.haml
+++ b/app/views/projects/builds/index.html.haml
@@ -36,7 +36,7 @@
         = link_to ci_lint_path, class: 'btn btn-default' do
           %span CI Lint
 
-  %ul.content-list
+  %ul.content-list.builds-content-list
     - if @builds.blank?
       %li
         .nothing-here-block No builds to show
@@ -46,14 +46,10 @@
           %thead
             %tr
               %th Status
-              %th Build ID
               %th Commit
-              %th Ref
               %th Stage
               %th Name
-              %th Tags
-              %th Duration
-              %th Finished at
+              %th
               - if @project.build_coverage_enabled?
                 %th Coverage
               %th
diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml
index 5bd6e3f0ebc67ad4c8042d3afe183611e9daf5da..e1b42b2cfa5c3ce09063ed137d752e551a0cfa3a 100644
--- a/app/views/projects/ci/builds/_build.html.haml
+++ b/app/views/projects/ci/builds/_build.html.haml
@@ -1,32 +1,45 @@
-%tr.build
+%tr.build.commit
   %td.status
     - if can?(current_user, :read_build, build)
       = ci_status_with_icon(build.status, namespace_project_build_url(build.project.namespace, build.project, build))
     - else
       = ci_status_with_icon(build.status)
 
-  %td.build-link
-    - if can?(current_user, :read_build, build)
-      = link_to namespace_project_build_url(build.project.namespace, build.project, build) do
-        %strong ##{build.id}
-    - else
-      %strong ##{build.id}
+  %td
+    .branch-commit
+      - if can?(current_user, :read_build, build)
+        = link_to namespace_project_build_url(build.project.namespace, build.project, build) do
+          %span ##{build.id}
+      - else
+        %span ##{build.id}
 
-    - if build.stuck?
-      = icon('warning', class: 'text-warning has-tooltip', title: 'Build is stuck. Check runners.')
-    - if defined?(retried) && retried
-      = icon('warning', class: 'text-warning has-tooltip', title: 'Build was retried.')
+      - if build.stuck?
+        = icon('warning', class: 'text-warning has-tooltip', title: 'Build is stuck. Check runners.')
+      - if defined?(retried) && retried
+        = icon('warning', class: 'text-warning has-tooltip', title: 'Build was retried.')
 
-  - if defined?(commit_sha) && commit_sha
-    %td
-      = link_to build.short_sha, namespace_project_commit_path(build.project.namespace, build.project, build.sha), class: "monospace"
+      - if defined?(ref) && ref
+        - if build.ref
+          = link_to build.ref, namespace_project_commits_path(build.project.namespace, build.project, build.ref), class: "monospace branch-name"
+        - else
+          .light none
+        = custom_icon("icon_commit")
+
+      - if defined?(commit_sha) && commit_sha
+        = link_to build.short_sha, namespace_project_commit_path(build.project.namespace, build.project, build.sha), class: "commit-id monospace"
+
+      .label-container
+        - if build.tags.any?
+          - build.tags.each do |tag|
+            %span.label.label-primary
+              = tag
+        - if build.try(:trigger_request)
+          %span.label.label-info triggered
+        - if build.try(:allow_failure)
+          %span.label.label-danger allowed to fail
+        - if defined?(retried) && retried
+          %span.label.label-warning retried
 
-  - if defined?(ref) && ref
-    %td
-      - if build.ref
-        = link_to build.ref, namespace_project_commits_path(build.project.namespace, build.project, build.ref)
-      - else
-        .light none
 
   - if defined?(runner) && runner
     %td
@@ -43,25 +56,14 @@
     = build.name
 
   %td
-    .label-container
-      - if build.tags.any?
-        - build.tags.each do |tag|
-          %span.label.label-primary
-            = tag
-      - if build.try(:trigger_request)
-        %span.label.label-info triggered
-      - if build.try(:allow_failure)
-        %span.label.label-danger allowed to fail
-      - if defined?(retried) && retried
-        %span.label.label-warning retried
-
-  %td.duration
     - if build.duration
-      #{duration_in_words(build.finished_at, build.started_at)}
-
-  %td.timestamp
+      %p.duration
+        = custom_icon("icon_timer")
+        = duration_in_numbers(build.finished_at, build.started_at)
     - if build.finished_at
-      %span #{time_ago_with_tooltip(build.finished_at)}
+      %p.finished-at
+        = icon("calendar")
+        %span #{time_ago_with_tooltip(build.finished_at)}
 
   - if defined?(coverage) && coverage
     %td.coverage
@@ -79,4 +81,4 @@
             = icon('remove', class: 'cred')
         - elsif defined?(allow_retry) && allow_retry && build.retryable?
           = link_to retry_namespace_project_build_path(build.project.namespace, build.project, build, return_to: request.original_url), method: :post, title: 'Retry', class: 'btn btn-build' do
-            = icon('refresh')
+            = icon('repeat')
diff --git a/app/views/projects/ci/pipelines/_pipeline.html.haml b/app/views/projects/ci/pipelines/_pipeline.html.haml
index af8dd5cd02c5daa79744b909a8f8a5c3840989e4..4ef72ff5d2a2b611a45d14fa95b5d0c8fdd8b4a9 100644
--- a/app/views/projects/ci/pipelines/_pipeline.html.haml
+++ b/app/views/projects/ci/pipelines/_pipeline.html.haml
@@ -1,17 +1,18 @@
 - status = pipeline.status
 %tr.commit
   %td.commit-link
-    = link_to namespace_project_pipeline_path(@project.namespace, @project, pipeline.id), class: "ci-status ci-#{status}" do
-      = ci_icon_for_status(status)
-      %strong ##{pipeline.id}
+    = link_to namespace_project_pipeline_path(@project.namespace, @project, pipeline.id) do
+      = ci_status_with_icon(status)
+
 
   %td
-    %div.branch-commit
+    .branch-commit
+      = link_to namespace_project_pipeline_path(@project.namespace, @project, pipeline.id) do
+        %span ##{pipeline.id}
       - if pipeline.ref
-        = link_to pipeline.ref, namespace_project_commits_path(@project.namespace, @project, pipeline.ref), class: "monospace"
-        &middot;
+        = link_to pipeline.ref, namespace_project_commits_path(@project.namespace, @project, pipeline.ref), class: "monospace branch-name"
+        = custom_icon("icon_commit")
       = link_to pipeline.short_sha, namespace_project_commit_path(@project.namespace, @project, pipeline.sha), class: "commit-id monospace"
-      &nbsp;
       - if pipeline.tag?
         %span.label.label-primary tag
       - elsif pipeline.latest?
@@ -25,6 +26,7 @@
 
       %p.commit-title
         - if commit = pipeline.commit
+          = commit_author_avatar(commit, size: 20)
           = link_to_gfm truncate(commit.title, length: 60), namespace_project_commit_path(@project.namespace, @project, commit.id), class: "commit-row-message"
         - else
           Cant find HEAD commit for this branch
@@ -45,22 +47,37 @@
   %td
     - if pipeline.started_at && pipeline.finished_at
       %p.duration
+        = custom_icon("icon_timer")
         = duration_in_numbers(pipeline.finished_at, pipeline.started_at)
+    - if pipeline.finished_at
+      %p.finished-at
+        = icon("calendar")
+        #{time_ago_with_tooltip(pipeline.finished_at)}
 
-  %td
+  %td.pipeline-actions
     .controls.hidden-xs.pull-right
       - artifacts = pipeline.builds.latest.select { |b| b.artifacts? }
       - if artifacts.present?
-        .dropdown.inline.build-artifacts
-          %button.dropdown-toggle.btn{type: 'button', 'data-toggle' => 'dropdown'}
-            = icon('download')
-            %b.caret
-          %ul.dropdown-menu.dropdown-menu-align-right
-            - artifacts.each do |build|
+        .btn-group.inline
+          .btn-group
+            %a.dropdown-toggle.btn.btn-default{type: 'button', 'data-toggle' => 'dropdown'}
+              = icon("play")
+              %b.caret
+            %ul.dropdown-menu.dropdown-menu-align-right
               %li
-                = link_to download_namespace_project_build_artifacts_path(@project.namespace, @project, build), rel: 'nofollow' do
-                  = icon("download")
-                  %span Download '#{build.name}' artifacts
+                = link_to '#' do
+                  = icon("play")
+                  %span Deploy to production
+          .btn-group
+            %a.dropdown-toggle.btn.btn-default.build-artifacts{type: 'button', 'data-toggle' => 'dropdown'}
+              = icon("download")
+              %b.caret
+            %ul.dropdown-menu.dropdown-menu-align-right
+              - artifacts.each do |build|
+                %li
+                  = link_to download_namespace_project_build_artifacts_path(@project.namespace, @project, build), rel: 'nofollow' do
+                    = icon("download")
+                    %span Download '#{build.name}' artifacts
 
       - if can?(current_user, :update_pipeline, @project)
         - if pipeline.retryable?
diff --git a/app/views/projects/commit/_pipeline.html.haml b/app/views/projects/commit/_pipeline.html.haml
index 0411137b7c61bea020bda1b72508087e662b91e4..41fd545942905323bff2f67a360c58af7d5bb6fb 100644
--- a/app/views/projects/commit/_pipeline.html.haml
+++ b/app/views/projects/commit/_pipeline.html.haml
@@ -42,9 +42,7 @@
         %th Status
         %th Build ID
         %th Name
-        %th Tags
-        %th Duration
-        %th Finished at
+        %th
         - if pipeline.project.build_coverage_enabled?
           %th Coverage
         %th
diff --git a/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml b/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml
index 5bc5c71283ede18a5fa7d540a144b05ec7e58f86..542827b2f1542db5f27be251b453bf5580cd84c2 100644
--- a/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml
+++ b/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml
@@ -50,10 +50,12 @@
 
   %td.duration
     - if generic_commit_status.duration
+      = icon("clock-o")
       #{duration_in_words(generic_commit_status.finished_at, generic_commit_status.started_at)}
 
   %td.timestamp
     - if generic_commit_status.finished_at
+      = icon("calendar")
       %span #{time_ago_with_tooltip(generic_commit_status.finished_at)}
 
   - if defined?(coverage) && coverage
diff --git a/app/views/projects/issues/index.html.haml b/app/views/projects/issues/index.html.haml
index 312bd86ed04e7747d72e326c30abf92c28114519..7612fe3719aa2c4f0be95d3f2f0c97cabf849303 100644
--- a/app/views/projects/issues/index.html.haml
+++ b/app/views/projects/issues/index.html.haml
@@ -32,7 +32,7 @@
         Code, test, and deploy together
     .blank-state
       .blank-state-icon
-        = navbar_icon("issues", size: 50)
+        = custom_icon("issues", size: 50)
       %h3.blank-state-title
         You don't have any issues right now.
       %p.blank-state-text
diff --git a/app/views/projects/pipelines/index.html.haml b/app/views/projects/pipelines/index.html.haml
index 7c225e2b2823030b8bf62ef0b2b9ca1bb48360b4..5f466bdbac2c89882907ffcce380028984590142 100644
--- a/app/views/projects/pipelines/index.html.haml
+++ b/app/views/projects/pipelines/index.html.haml
@@ -28,7 +28,7 @@
     .nav-controls
       - if can? current_user, :create_pipeline, @project
         = link_to new_namespace_project_pipeline_path(@project.namespace, @project), class: 'btn btn-create' do
-          New pipeline
+          Run pipeline
 
         - unless @repository.gitlab_ci_yml
           = link_to 'Get started with Pipelines', help_page_path('ci/quick_start/README'), class: 'btn btn-info'
@@ -45,13 +45,13 @@
       .table-holder
         %table.table.builds
           %tbody
-            %th ID
+            %th Status
             %th Commit
             - stages.each do |stage|
               %th.stage
                 %span.has-tooltip{ title: "#{stage.titleize}" }
                   = stage.titleize
-            %th Duration
+            %th
             %th
           = render @pipelines, commit_sha: true, stage: true, allow_retry: true, stages: stages
 
diff --git a/app/views/projects/snippets/index.html.haml b/app/views/projects/snippets/index.html.haml
index 6c994ae486b98c33167b27d3fcc64f1b364e0a5f..1646bcf4b8ab023bd9e6cf694a61caecace0bf10 100644
--- a/app/views/projects/snippets/index.html.haml
+++ b/app/views/projects/snippets/index.html.haml
@@ -1,6 +1,6 @@
 - page_title "Snippets"
 
-.row-content-block.top-block
+.sub-header-block
   .pull-right
     - if can?(current_user, :create_project_snippet, @project)
       = link_to new_namespace_project_snippet_path(@project.namespace, @project), class: "btn btn-new", title: "New Snippet" do
diff --git a/app/views/shared/icons/_icon_commit.svg b/app/views/shared/icons/_icon_commit.svg
new file mode 100644
index 0000000000000000000000000000000000000000..0e96035b7b74ec9232d18f33ba094f4f2bdb9bb7
--- /dev/null
+++ b/app/views/shared/icons/_icon_commit.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
+  <path fill="#8F8F8F" fill-rule="evenodd" d="M28.7769836,18 C27.8675252,13.9920226 24.2831748,11 20,11 C15.7168252,11 12.1324748,13.9920226 11.2230164,18 L4.0085302,18 C2.90195036,18 2,18.8954305 2,20 C2,21.1122704 2.8992496,22 4.0085302,22 L11.2230164,22 C12.1324748,26.0079774 15.7168252,29 20,29 C24.2831748,29 27.8675252,26.0079774 28.7769836,22 L35.9914698,22 C37.0980496,22 38,21.1045695 38,20 C38,18.8877296 37.1007504,18 35.9914698,18 L28.7769836,18 L28.7769836,18 Z M20,25 C22.7614237,25 25,22.7614237 25,20 C25,17.2385763 22.7614237,15 20,15 C17.2385763,15 15,17.2385763 15,20 C15,22.7614237 17.2385763,25 20,25 L20,25 Z"/>
+</svg>
diff --git a/app/views/shared/icons/_icon_timer.svg b/app/views/shared/icons/_icon_timer.svg
new file mode 100644
index 0000000000000000000000000000000000000000..0b1e5804427f1d0f1a3ed05cbae46cd23f88fa20
--- /dev/null
+++ b/app/views/shared/icons/_icon_timer.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><g fill="#8F8F8F" fill-rule="evenodd"><path d="M29.513 10.134A15.922 15.922 0 0 0 23 7.28V6h2.993C26.55 6 27 5.552 27 5V2a1 1 0 0 0-1.007-1H14.007C13.45 1 13 1.448 13 2v3a1 1 0 0 0 1.007 1H17v1.28C9.597 8.686 4 15.19 4 23c0 8.837 7.163 16 16 16s16-7.163 16-16c0-3.461-1.099-6.665-2.967-9.283l1.327-1.58a2.498 2.498 0 0 0-.303-3.53 2.499 2.499 0 0 0-3.528.315l-1.016 1.212zM20 34c6.075 0 11-4.925 11-11s-4.925-11-11-11S9 16.925 9 23s4.925 11 11 11z"/><path d="M19 21h-4.002c-.552 0-.998.452-.998 1.01v1.98c0 .567.447 1.01.998 1.01h7.004c.274 0 .521-.111.701-.291a.979.979 0 0 0 .297-.704v-8.01c0-.54-.452-.995-1.01-.995h-1.98a.997.997 0 0 0-1.01.995V21z"/></g></svg>
\ No newline at end of file
diff --git a/db/migrate/20160712171823_remove_award_emojis_with_no_user.rb b/db/migrate/20160712171823_remove_award_emojis_with_no_user.rb
new file mode 100644
index 0000000000000000000000000000000000000000..668c22bb51c7a33192b0f640aedd778aaad43be2
--- /dev/null
+++ b/db/migrate/20160712171823_remove_award_emojis_with_no_user.rb
@@ -0,0 +1,21 @@
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class RemoveAwardEmojisWithNoUser < ActiveRecord::Migration
+  include Gitlab::Database::MigrationHelpers
+
+  # When using the methods "add_concurrent_index" or "add_column_with_default"
+  # you must disable the use of transactions as these methods can not run in an
+  # existing transaction. When using "add_concurrent_index" make sure that this
+  # method is the _only_ method called in the migration, any other changes
+  # should go in a separate migration. This ensures that upon failure _only_ the
+  # index creation fails and can be retried or reverted easily.
+  #
+  # To disable transactions uncomment the following line and remove these
+  # comments:
+  # disable_ddl_transaction!
+
+  def up
+    AwardEmoji.joins('LEFT JOIN users ON users.id = user_id').where('users.id IS NULL').destroy_all
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 9d31947d80f013fbbbea9a0b9a931acb81d2d223..f24e47b85b29830d8f890fa1e93af4b3d64308c6 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 20160707104333) do
+ActiveRecord::Schema.define(version: 20160712171823) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
diff --git a/lib/gitlab/diff/inline_diff.rb b/lib/gitlab/diff/inline_diff.rb
index 789c14518b003260f302c86ac14928ec69c52cb2..28ad637fda455b646e3faab3ec207499e0ad0814 100644
--- a/lib/gitlab/diff/inline_diff.rb
+++ b/lib/gitlab/diff/inline_diff.rb
@@ -1,16 +1,30 @@
 module Gitlab
   module Diff
     class InlineDiff
+      # Regex to find a run of deleted lines followed by the same number of added lines
+      LINE_PAIRS_PATTERN = %r{
+        # Runs start at the beginning of the string (the first line) or after a space (for an unchanged line)
+        (?:\A|\s)
+
+        # This matches a number of `-`s followed by the same number of `+`s through recursion
+        (?<del_ins>
+          -
+          \g<del_ins>?
+          \+
+        )
+
+        # Runs end at the end of the string (the last line) or before a space (for an unchanged line)
+        (?=\s|\z)
+      }x.freeze
+
       attr_accessor :old_line, :new_line, :offset
 
       def self.for_lines(lines)
-        local_edit_indexes = self.find_local_edits(lines)
+        changed_line_pairs = self.find_changed_line_pairs(lines)
 
         inline_diffs = []
 
-        local_edit_indexes.each do |index|
-          old_index = index
-          new_index = index + 1
+        changed_line_pairs.each do |old_index, new_index|
           old_line = lines[old_index]
           new_line = lines[new_index]
 
@@ -51,18 +65,28 @@ module Gitlab
 
       private
 
-      def self.find_local_edits(lines)
-        line_prefixes = lines.map { |line| line.match(/\A([+-])/) ? $1 : ' ' }
-        joined_line_prefixes = " #{line_prefixes.join} "
-
-        offset = 0
-        local_edit_indexes = []
-        while index = joined_line_prefixes.index(" -+ ", offset)
-          local_edit_indexes << index
-          offset = index + 1
+      # Finds pairs of old/new line pairs that represent the same line that changed
+      def self.find_changed_line_pairs(lines)
+        # Prefixes of all diff lines, indicating their types
+        # For example: `" - +  -+  ---+++ --+  -++"`
+        line_prefixes = lines.each_with_object("") { |line, s| s << line[0] }.gsub(/[^ +-]/, ' ')
+
+        changed_line_pairs = []
+        line_prefixes.scan(LINE_PAIRS_PATTERN) do
+          # For `"---+++"`, `begin_index == 0`, `end_index == 6`
+          begin_index, end_index = Regexp.last_match.offset(:del_ins)
+
+          # For `"---+++"`, `changed_line_count == 3`
+          changed_line_count = (end_index - begin_index) / 2
+
+          halfway_index = begin_index + changed_line_count
+          (begin_index...halfway_index).each do |i|
+            # For `"---+++"`, index 1 maps to 1 + 3 = 4
+            changed_line_pairs << [i, i + changed_line_count]
+          end
         end
 
-        local_edit_indexes
+        changed_line_pairs
       end
 
       def longest_common_prefix(a, b)
diff --git a/lib/support/nginx/gitlab b/lib/support/nginx/gitlab
index d521de28e8a293a943f5bfa57f54e1cf6ed2f9f0..4a4892a2e07ac5a93f4dfcf0ae85614b9a52c3a8 100644
--- a/lib/support/nginx/gitlab
+++ b/lib/support/nginx/gitlab
@@ -49,7 +49,12 @@ server {
 
     proxy_http_version 1.1;
 
-    proxy_set_header    Host                $http_host;
+    ## By overwriting Host and clearing X-Forwarded-Host we ensure that
+    ## internal HTTP redirects generated by GitLab always send users to
+    ## YOUR_SERVER_FQDN.
+    proxy_set_header    Host                YOUR_SERVER_FQDN;
+    proxy_set_header    X-Forwarded-Host    "";
+
     proxy_set_header    X-Real-IP           $remote_addr;
     proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
     proxy_set_header    X-Forwarded-Proto   $scheme;
diff --git a/lib/support/nginx/gitlab-ssl b/lib/support/nginx/gitlab-ssl
index bf014b56cf68062d3da68c1416aea7e7d09c83de..0b93d7f292f12b6f6303dd3ab06bc6083d9e3af4 100644
--- a/lib/support/nginx/gitlab-ssl
+++ b/lib/support/nginx/gitlab-ssl
@@ -93,7 +93,12 @@ server {
 
     proxy_http_version 1.1;
 
-    proxy_set_header    Host                $http_host;
+    ## By overwriting Host and clearing X-Forwarded-Host we ensure that
+    ## internal HTTP redirects generated by GitLab always send users to
+    ## YOUR_SERVER_FQDN.
+    proxy_set_header    Host                YOUR_SERVER_FQDN;
+    proxy_set_header    X-Forwarded-Host    "";
+
     proxy_set_header    X-Real-IP           $remote_addr;
     proxy_set_header    X-Forwarded-Ssl     on;
     proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
diff --git a/spec/finders/notes_finder_spec.rb b/spec/finders/notes_finder_spec.rb
index 1bd354815e47a7fc4b27d1fb3e23d332edbfe1d6..8db897b16466bfe3f61d622f50f108a8ac7a0e38 100644
--- a/spec/finders/notes_finder_spec.rb
+++ b/spec/finders/notes_finder_spec.rb
@@ -11,7 +11,7 @@ describe NotesFinder do
     project.team << [user, :master]
   end
 
-  describe :execute do
+  describe '#execute' do
     let(:params)  { { target_id: commit.id, target_type: 'commit', last_fetched_at: 1.hour.ago.to_i } }
 
     before do
diff --git a/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb b/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
index bad439bc48937e990fa883eef7717647da5133de..bcbf409c8b013d1286dfa08b1ce8c9663e7171a3 100644
--- a/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
+++ b/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
@@ -31,7 +31,7 @@ module Ci
         })
       end
 
-      describe :only do
+      describe 'only' do
         it "does not return builds if only has another branch" do
           config = YAML.dump({
                                before_script: ["pwd"],
@@ -187,7 +187,7 @@ module Ci
         end
       end
 
-      describe :except do
+      describe 'except' do
         it "returns builds if except has another branch" do
           config = YAML.dump({
                                before_script: ["pwd"],
diff --git a/spec/lib/gitlab/build_data_builder_spec.rb b/spec/lib/gitlab/build_data_builder_spec.rb
index 38be9448794ee07aee275fdfee80f2b7a6d1a268..23ae5cfacc4c0e256cb8d449b01679ff06a1513c 100644
--- a/spec/lib/gitlab/build_data_builder_spec.rb
+++ b/spec/lib/gitlab/build_data_builder_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 describe 'Gitlab::BuildDataBuilder' do
   let(:build) { create(:ci_build) }
 
-  describe :build do
+  describe '.build' do
     let(:data) do
       Gitlab::BuildDataBuilder.build(build)
     end
diff --git a/spec/lib/gitlab/diff/file_spec.rb b/spec/lib/gitlab/diff/file_spec.rb
index 1cb513d5229fec358db273ea4320807b39805c47..0460dcf4658afd8fa0be42def6d40591de575eaa 100644
--- a/spec/lib/gitlab/diff/file_spec.rb
+++ b/spec/lib/gitlab/diff/file_spec.rb
@@ -8,14 +8,14 @@ describe Gitlab::Diff::File, lib: true do
   let(:diff) { commit.diffs.first }
   let(:diff_file) { Gitlab::Diff::File.new(diff, diff_refs: commit.diff_refs, repository: project.repository) }
 
-  describe :diff_lines do
+  describe '#diff_lines' do
     let(:diff_lines) { diff_file.diff_lines }
 
     it { expect(diff_lines.size).to eq(30) }
     it { expect(diff_lines.first).to be_kind_of(Gitlab::Diff::Line) }
   end
 
-  describe :mode_changed? do
+  describe '#mode_changed?' do
     it { expect(diff_file.mode_changed?).to be_falsey }
   end
 
diff --git a/spec/lib/gitlab/diff/inline_diff_spec.rb b/spec/lib/gitlab/diff/inline_diff_spec.rb
index 95a993d26cf70be4c9be3f01a688cb7278b75e5a..8ca3f73509e471c8be4402df601cd6f9c7f61f3f 100644
--- a/spec/lib/gitlab/diff/inline_diff_spec.rb
+++ b/spec/lib/gitlab/diff/inline_diff_spec.rb
@@ -3,14 +3,19 @@ require 'spec_helper'
 describe Gitlab::Diff::InlineDiff, lib: true do
   describe '.for_lines' do
     let(:diff) do
-      <<eos
- class Test
--  def initialize(test = true)
-+  def initialize(test = false)
-     @test = test
-   end
- end
-eos
+      <<-EOF.strip_heredoc
+         class Test
+        -  def initialize(test = true)
+        +  def initialize(test = false)
+             @test = test
+        -    if true
+        -      @foo = "bar"
+        +    unless false
+        +      @foo = "baz"
+             end
+           end
+         end
+      EOF
     end
 
     let(:subject) { described_class.for_lines(diff.lines) }
@@ -20,8 +25,11 @@ eos
       expect(subject[1]).to eq([25..27])
       expect(subject[2]).to eq([25..28])
       expect(subject[3]).to be_nil
-      expect(subject[4]).to be_nil
-      expect(subject[5]).to be_nil
+      expect(subject[4]).to eq([5..10])
+      expect(subject[5]).to eq([17..17])
+      expect(subject[6]).to eq([5..15])
+      expect(subject[7]).to eq([17..17])
+      expect(subject[8]).to be_nil
     end
   end
 
diff --git a/spec/lib/gitlab/diff/parser_spec.rb b/spec/lib/gitlab/diff/parser_spec.rb
index cdff063a9ed548d5dfa75fa9124a27b3eaeaebd1..c33596276522c9532f26a1f9c8f4fdb0bc02183f 100644
--- a/spec/lib/gitlab/diff/parser_spec.rb
+++ b/spec/lib/gitlab/diff/parser_spec.rb
@@ -8,7 +8,7 @@ describe Gitlab::Diff::Parser, lib: true do
   let(:diff) { commit.diffs.first }
   let(:parser) { Gitlab::Diff::Parser.new }
 
-  describe :parse do
+  describe '#parse' do
     let(:diff) do
       <<eos
 --- a/files/ruby/popen.rb
diff --git a/spec/lib/gitlab/ldap/access_spec.rb b/spec/lib/gitlab/ldap/access_spec.rb
index f5b66b8156f0739ab87e5be0d9cee4089fc951ba..acd5394382c72a77e5488498a2f5b9dd685a2952 100644
--- a/spec/lib/gitlab/ldap/access_spec.rb
+++ b/spec/lib/gitlab/ldap/access_spec.rb
@@ -4,7 +4,7 @@ describe Gitlab::LDAP::Access, lib: true do
   let(:access) { Gitlab::LDAP::Access.new user }
   let(:user) { create(:omniauth_user) }
 
-  describe :allowed? do
+  describe '#allowed?' do
     subject { access.allowed? }
 
     context 'when the user cannot be found' do
diff --git a/spec/lib/gitlab/ldap/user_spec.rb b/spec/lib/gitlab/ldap/user_spec.rb
index 03199a2523e288d77e39e24780c4c1a4fabc284a..949f6e2b19a3ee76af0ef57b29455a5f2353f2c2 100644
--- a/spec/lib/gitlab/ldap/user_spec.rb
+++ b/spec/lib/gitlab/ldap/user_spec.rb
@@ -25,7 +25,7 @@ describe Gitlab::LDAP::User, lib: true do
     OmniAuth::AuthHash.new(uid: 'my-uid', provider: 'ldapmain', info: info_upper_case)
   end
 
-  describe :changed? do
+  describe '#changed?' do
     it "marks existing ldap user as changed" do
       create(:omniauth_user, extern_uid: 'my-uid', provider: 'ldapmain')
       expect(ldap_user.changed?).to be_truthy
diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb
index 34507cf508323b9ce13b95cbfd5bbf14b026d31b..4e5481f9154f052aed94b1d27bf63f198be7dd52 100644
--- a/spec/models/ci/pipeline_spec.rb
+++ b/spec/models/ci/pipeline_spec.rb
@@ -15,7 +15,7 @@ describe Ci::Pipeline, models: true do
   it { is_expected.to respond_to :git_author_email }
   it { is_expected.to respond_to :short_sha }
 
-  describe :valid_commit_sha do
+  describe '#valid_commit_sha' do
     context 'commit.sha can not start with 00000000' do
       before do
         pipeline.sha = '0' * 40
@@ -26,7 +26,7 @@ describe Ci::Pipeline, models: true do
     end
   end
 
-  describe :short_sha do
+  describe '#short_sha' do
     subject { pipeline.short_sha }
 
     it 'has 8 items' do
@@ -35,10 +35,10 @@ describe Ci::Pipeline, models: true do
     it { expect(pipeline.sha).to start_with(subject) }
   end
 
-  describe :create_next_builds do
+  describe '#create_next_builds' do
   end
 
-  describe :retried do
+  describe '#retried' do
     subject { pipeline.retried }
 
     before do
@@ -51,7 +51,7 @@ describe Ci::Pipeline, models: true do
     end
   end
 
-  describe :create_builds do
+  describe '#create_builds' do
     let!(:pipeline) { FactoryGirl.create :ci_pipeline, project: project, ref: 'master', tag: false }
 
     def create_builds(trigger_request = nil)
diff --git a/spec/models/ci/variable_spec.rb b/spec/models/ci/variable_spec.rb
index 98f60087cf5e957db2c795a7117255b01bf6f2a4..4e7833c31623f31ed37a5f8503735047c5f3394e 100644
--- a/spec/models/ci/variable_spec.rb
+++ b/spec/models/ci/variable_spec.rb
@@ -9,7 +9,7 @@ describe Ci::Variable, models: true do
     subject.value = secret_value
   end
 
-  describe :value do
+  describe '#value' do
     it 'stores the encrypted value' do
       expect(subject.encrypted_value).not_to be_nil
     end
diff --git a/spec/models/commit_status_spec.rb b/spec/models/commit_status_spec.rb
index 96397d7c8a9cf10852ec7f1ac49b8772f337f775..05f22c7a9ebd79749178366ee2524b9a20dd94a4 100644
--- a/spec/models/commit_status_spec.rb
+++ b/spec/models/commit_status_spec.rb
@@ -24,14 +24,14 @@ describe CommitStatus, models: true do
   it { is_expected.to respond_to :running? }
   it { is_expected.to respond_to :pending? }
 
-  describe :author do
+  describe '#author' do
     subject { commit_status.author }
     before { commit_status.author = User.new }
 
     it { is_expected.to eq(commit_status.user) }
   end
 
-  describe :started? do
+  describe '#started?' do
     subject { commit_status.started? }
 
     context 'without started_at' do
@@ -57,7 +57,7 @@ describe CommitStatus, models: true do
     end
   end
 
-  describe :active? do
+  describe '#active?' do
     subject { commit_status.active? }
 
     %w(pending running).each do |state|
@@ -77,7 +77,7 @@ describe CommitStatus, models: true do
     end
   end
 
-  describe :complete? do
+  describe '#complete?' do
     subject { commit_status.complete? }
 
     %w(success failed canceled).each do |state|
@@ -97,7 +97,7 @@ describe CommitStatus, models: true do
     end
   end
 
-  describe :duration do
+  describe '#duration' do
     subject { commit_status.duration }
 
     it { is_expected.to eq(120.0) }
@@ -122,7 +122,7 @@ describe CommitStatus, models: true do
     end
   end
 
-  describe :latest do
+  describe '.latest' do
     subject { CommitStatus.latest.order(:id) }
 
     before do
@@ -138,7 +138,7 @@ describe CommitStatus, models: true do
     end
   end
 
-  describe :running_or_pending do
+  describe '.running_or_pending' do
     subject { CommitStatus.running_or_pending.order(:id) }
 
     before do
diff --git a/spec/models/concerns/mentionable_spec.rb b/spec/models/concerns/mentionable_spec.rb
index 0344dae8b5d13e40238115bedb4e3445d24eec9c..5e652660e2c4cd3db1e898f75563e4bda939e5ac 100644
--- a/spec/models/concerns/mentionable_spec.rb
+++ b/spec/models/concerns/mentionable_spec.rb
@@ -7,7 +7,7 @@ describe Mentionable do
     nil
   end
 
-  describe :references do
+  describe 'references' do
     let(:project) { create(:project) }
 
     it 'excludes JIRA references' do
diff --git a/spec/models/forked_project_link_spec.rb b/spec/models/forked_project_link_spec.rb
index fa1a0d4e0c77f37960cb3394f61634ec9dafc9fc..f94987dcaff81ad42f78fb7878d3bf16f36dfbb8 100644
--- a/spec/models/forked_project_link_spec.rb
+++ b/spec/models/forked_project_link_spec.rb
@@ -18,7 +18,7 @@ describe ForkedProjectLink, "add link on fork" do
   end
 end
 
-describe :forked_from_project do
+describe '#forked?' do
   let(:forked_project_link) { build(:forked_project_link) }
   let(:project_from) { create(:project) }
   let(:project_to) { create(:project, forked_project_link: forked_project_link) }
diff --git a/spec/models/generic_commit_status_spec.rb b/spec/models/generic_commit_status_spec.rb
index c4e781dd1dcaba14d3a230c382a3ade2aab264ed..615cfe3142b1b78dc8adc9c178d635a03cc61b09 100644
--- a/spec/models/generic_commit_status_spec.rb
+++ b/spec/models/generic_commit_status_spec.rb
@@ -4,33 +4,33 @@ describe GenericCommitStatus, models: true do
   let(:pipeline) { FactoryGirl.create :ci_pipeline }
   let(:generic_commit_status) { FactoryGirl.create :generic_commit_status, pipeline: pipeline }
 
-  describe :context do
+  describe '#context' do
     subject { generic_commit_status.context }
     before { generic_commit_status.context = 'my_context' }
 
     it { is_expected.to eq(generic_commit_status.name) }
   end
 
-  describe :tags do
+  describe '#tags' do
     subject { generic_commit_status.tags }
 
     it { is_expected.to eq([:external]) }
   end
 
-  describe :set_default_values do
+  describe 'set_default_values' do
     before do
       generic_commit_status.context = nil
       generic_commit_status.stage = nil
       generic_commit_status.save
     end
 
-    describe :context do
+    describe '#context' do
       subject { generic_commit_status.context }
 
       it { is_expected.not_to be_nil }
     end
 
-    describe :stage do
+    describe '#stage' do
       subject { generic_commit_status.stage }
 
       it { is_expected.not_to be_nil }
diff --git a/spec/models/global_milestone_spec.rb b/spec/models/global_milestone_spec.rb
index 197c99cd007ea9c80f30ef2474210b85d1d57907..ae77ec5b3489e2064c93940559a24142a2197321 100644
--- a/spec/models/global_milestone_spec.rb
+++ b/spec/models/global_milestone_spec.rb
@@ -14,7 +14,7 @@ describe GlobalMilestone, models: true do
   let(:milestone2_project2) { create(:milestone, title: "VD-123", project: project2) }
   let(:milestone2_project3) { create(:milestone, title: "VD-123", project: project3) }
 
-  describe :build_collection do
+  describe '.build_collection' do
     before do
       milestones =
         [
@@ -42,7 +42,7 @@ describe GlobalMilestone, models: true do
     end
   end
 
-  describe :initialize do
+  describe '#initialize' do
     before do
       milestones =
         [
@@ -63,7 +63,7 @@ describe GlobalMilestone, models: true do
     end
   end
 
-  describe :safe_title do
+  describe '#safe_title' do
     let(:milestone) { create(:milestone, title: "git / test", project: project1) }
 
     it 'should strip out slashes and spaces' do
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb
index a878ff1b2278536d2f3b88ad2887ef562eb23103..266c46213a695645246134f271861e4226571317 100644
--- a/spec/models/group_spec.rb
+++ b/spec/models/group_spec.rb
@@ -97,22 +97,22 @@ describe Group, models: true do
     end
   end
 
-  describe :users do
+  describe '#users' do
     it { expect(group.users).to eq(group.owners) }
   end
 
-  describe :human_name do
+  describe '#human_name' do
     it { expect(group.human_name).to eq(group.name) }
   end
 
-  describe :add_users do
+  describe '#add_user' do
     let(:user) { create(:user) }
     before { group.add_user(user, GroupMember::MASTER) }
 
     it { expect(group.group_members.masters.map(&:user)).to include(user) }
   end
 
-  describe :add_users do
+  describe '#add_users' do
     let(:user) { create(:user) }
     before { group.add_users([user.id], GroupMember::GUEST) }
 
@@ -124,7 +124,7 @@ describe Group, models: true do
     end
   end
 
-  describe :avatar_type do
+  describe '#avatar_type' do
     let(:user) { create(:user) }
     before { group.add_user(user, GroupMember::MASTER) }
 
diff --git a/spec/models/members/project_member_spec.rb b/spec/models/members/project_member_spec.rb
index 4c10346243357e085a9f7b4a2f9fa69d023fe1d5..ba622dfb9becdc4309d22872e8b851333a36bd8e 100644
--- a/spec/models/members/project_member_spec.rb
+++ b/spec/models/members/project_member_spec.rb
@@ -101,7 +101,7 @@ describe ProjectMember, models: true do
     end
   end
 
-  describe :add_users_into_projects do
+  describe '.add_users_into_projects' do
     before do
       @project_1 = create :project
       @project_2 = create :project
@@ -123,7 +123,7 @@ describe ProjectMember, models: true do
     it { expect(@project_2.users).to include(@user_2) }
   end
 
-  describe :truncate_teams do
+  describe '.truncate_teams' do
     before do
       @project_1 = create :project
       @project_2 = create :project
diff --git a/spec/models/milestone_spec.rb b/spec/models/milestone_spec.rb
index 1e18c788b503d0c48f306bda2b05cb02fb9fb285..d661dc0e59ab1067486b1f31c3a37f1fe45b1da8 100644
--- a/spec/models/milestone_spec.rb
+++ b/spec/models/milestone_spec.rb
@@ -70,7 +70,7 @@ describe Milestone, models: true do
     end
   end
 
-  describe :expired? do
+  describe '#expired?' do
     context "expired" do
       before do
         allow(milestone).to receive(:due_date).and_return(Date.today.prev_year)
@@ -88,7 +88,7 @@ describe Milestone, models: true do
     end
   end
 
-  describe :percent_complete do
+  describe '#percent_complete' do
     before do
       allow(milestone).to receive_messages(
         closed_items_count: 3,
@@ -111,11 +111,11 @@ describe Milestone, models: true do
     it { expect(milestone.is_empty?(user)).to be_falsey }
   end
 
-  describe :can_be_closed? do
+  describe '#can_be_closed?' do
     it { expect(milestone.can_be_closed?).to be_truthy }
   end
 
-  describe :total_items_count do
+  describe '#total_items_count' do
     before do
       create :closed_issue, milestone: milestone
       create :merge_request, milestone: milestone
@@ -126,7 +126,7 @@ describe Milestone, models: true do
     end
   end
 
-  describe :can_be_closed? do
+  describe '#can_be_closed?' do
     before do
       milestone = create :milestone
       create :closed_issue, milestone: milestone
diff --git a/spec/models/namespace_spec.rb b/spec/models/namespace_spec.rb
index 5f68cd2b066925bdab9d0151b47fb63164cc3695..a162da0208e96a10ce1627c933875d0d4e0ce028 100644
--- a/spec/models/namespace_spec.rb
+++ b/spec/models/namespace_spec.rb
@@ -18,11 +18,11 @@ describe Namespace, models: true do
     it { is_expected.to respond_to(:to_param) }
   end
 
-  describe :to_param do
+  describe '#to_param' do
     it { expect(namespace.to_param).to eq(namespace.path) }
   end
 
-  describe :human_name do
+  describe '#human_name' do
     it { expect(namespace.human_name).to eq(namespace.owner_name) }
   end
 
@@ -54,7 +54,7 @@ describe Namespace, models: true do
     end
   end
 
-  describe :move_dir do
+  describe '#move_dir' do
     before do
       @namespace = create :namespace
       @project = create :project, namespace: @namespace
@@ -98,7 +98,7 @@ describe Namespace, models: true do
     end
   end
 
-  describe :find_by_path_or_name do
+  describe '.find_by_path_or_name' do
     before do
       @namespace = create(:namespace, name: 'WoW', path: 'woW')
     end
diff --git a/spec/models/project_security_spec.rb b/spec/models/project_security_spec.rb
index e12258c0874200f7ca0cf71d183d3ac7cc4ed711..2142c7c13ef9fa5587f324eb33100ed862bf9a83 100644
--- a/spec/models/project_security_spec.rb
+++ b/spec/models/project_security_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Project, models: true do
-  describe :authorization do
+  describe 'authorization' do
     before do
       @p1 = create(:project)
 
diff --git a/spec/models/project_services/buildkite_service_spec.rb b/spec/models/project_services/buildkite_service_spec.rb
index 60364df20154469aabebe1d5a036330c5a3c9647..0866e1532dd2b03a9469a411ecc1792315662369 100644
--- a/spec/models/project_services/buildkite_service_spec.rb
+++ b/spec/models/project_services/buildkite_service_spec.rb
@@ -57,7 +57,7 @@ describe BuildkiteService, models: true do
       )
     end
 
-    describe :webhook_url do
+    describe '#webhook_url' do
       it 'returns the webhook url' do
         expect(@service.webhook_url).to eq(
           'https://webhook.buildkite.com/deliver/secret-sauce-webhook-token'
@@ -65,7 +65,7 @@ describe BuildkiteService, models: true do
       end
     end
 
-    describe :commit_status_path do
+    describe '#commit_status_path' do
       it 'returns the correct status page' do
         expect(@service.commit_status_path('2ab7834c')).to eq(
           'https://gitlab.buildkite.com/status/secret-sauce-status-token.json?commit=2ab7834c'
@@ -73,7 +73,7 @@ describe BuildkiteService, models: true do
       end
     end
 
-    describe :build_page do
+    describe '#build_page' do
       it 'returns the correct build page' do
         expect(@service.build_page('2ab7834c', nil)).to eq(
           'https://buildkite.com/account-name/example-project/builds?commit=2ab7834c'
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb
index 24e49c8def344c24db97e0bf1b175f8bcbc9ea5f..b39b958450c0ef17d9375824bc846f6ad024d993 100644
--- a/spec/models/repository_spec.rb
+++ b/spec/models/repository_spec.rb
@@ -16,7 +16,7 @@ describe Repository, models: true do
     repository.commit(merge_commit_sha)
   end
 
-  describe :branch_names_contains do
+  describe '#branch_names_contains' do
     subject { repository.branch_names_contains(sample_commit.id) }
 
     it { is_expected.to include('master') }
@@ -24,7 +24,7 @@ describe Repository, models: true do
     it { is_expected.not_to include('fix') }
   end
 
-  describe :tag_names_contains do
+  describe '#tag_names_contains' do
     subject { repository.tag_names_contains(sample_commit.id) }
 
     it { is_expected.to include('v1.1.0') }
@@ -72,13 +72,13 @@ describe Repository, models: true do
     end
   end
 
-  describe :last_commit_for_path do
+  describe '#last_commit_for_path' do
     subject { repository.last_commit_for_path(sample_commit.id, '.gitignore').id }
 
     it { is_expected.to eq('c1acaa58bbcbc3eafe538cb8274ba387047b69f8') }
   end
 
-  describe :find_commits_by_message do
+  describe '#find_commits_by_message' do
     subject { repository.find_commits_by_message('submodule').map{ |k| k.id } }
 
     it { is_expected.to include('5937ac0a7beb003549fc5fd26fc247adbce4a52e') }
@@ -87,7 +87,7 @@ describe Repository, models: true do
     it { is_expected.not_to include('913c66a37b4a45b9769037c55c2d238bd0942d2e') }
   end
 
-  describe :blob_at do
+  describe '#blob_at' do
     context 'blank sha' do
       subject { repository.blob_at(Gitlab::Git::BLANK_SHA, '.gitignore') }
 
@@ -95,7 +95,7 @@ describe Repository, models: true do
     end
   end
 
-  describe :merged_to_root_ref? do
+  describe '#merged_to_root_ref?' do
     context 'merged branch' do
       subject { repository.merged_to_root_ref?('improve/awesome') }
 
@@ -103,7 +103,7 @@ describe Repository, models: true do
     end
   end
 
-  describe :can_be_merged? do
+  describe '#can_be_merged?' do
     context 'mergeable branches' do
       subject { repository.can_be_merged?('0b4bc9a49b562e85de7cc9e834518ea6828729b9', 'master') }
 
@@ -305,7 +305,7 @@ describe Repository, models: true do
     end
   end
 
-  describe :add_branch do
+  describe '#add_branch' do
     context 'when pre hooks were successful' do
       it 'should run without errors' do
         hook = double(trigger: [true, nil])
@@ -349,7 +349,7 @@ describe Repository, models: true do
     end
   end
 
-  describe :rm_branch do
+  describe '#rm_branch' do
     context 'when pre hooks were successful' do
       it 'should run without errors' do
         allow_any_instance_of(Gitlab::Git::Hook).to receive(:trigger).and_return([true, nil])
@@ -386,7 +386,7 @@ describe Repository, models: true do
     end
   end
 
-  describe :commit_with_hooks do
+  describe '#commit_with_hooks' do
     context 'when pre hooks were successful' do
       before do
         expect_any_instance_of(GitHooksService).to receive(:execute).
diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb
index 96bbbec9ea11be23879cf285454b8a2c70459294..67b3783d5145839b1c12694658059b9da99b9622 100644
--- a/spec/models/service_spec.rb
+++ b/spec/models/service_spec.rb
@@ -22,11 +22,11 @@ describe Service, models: true do
         @testable = @service.can_test?
       end
 
-      describe :can_test do
+      describe '#can_test?' do
         it { expect(@testable).to eq(true) }
       end
 
-      describe :test do
+      describe '#test' do
         let(:data) { 'test' }
 
         it 'test runs execute' do
@@ -45,7 +45,7 @@ describe Service, models: true do
         @testable = @service.can_test?
       end
 
-      describe :can_test do
+      describe '#can_test?' do
         it { expect(@testable).to eq(true) }
       end
     end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 3984b30ddf8a11f5df51fc4633537d7c3740bf0b..ff39f187759192ac471f73dca05ec845f5662259 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -427,7 +427,7 @@ describe User, models: true do
     end
   end
 
-  describe :not_in_project do
+  describe '.not_in_project' do
     before do
       User.delete_all
       @user = create :user
@@ -598,7 +598,7 @@ describe User, models: true do
     end
   end
 
-  describe :avatar_type do
+  describe '#avatar_type' do
     let(:user) { create(:user) }
 
     it "should be true if avatar is image" do
@@ -612,7 +612,7 @@ describe User, models: true do
     end
   end
 
-  describe :requires_ldap_check? do
+  describe '#requires_ldap_check?' do
     let(:user) { User.new }
 
     it 'is false when LDAP is disabled' do
@@ -651,7 +651,7 @@ describe User, models: true do
   end
 
   context 'ldap synchronized user' do
-    describe :ldap_user? do
+    describe '#ldap_user?' do
       it 'is true if provider name starts with ldap' do
         user = create(:omniauth_user, provider: 'ldapmain')
         expect(user.ldap_user?).to be_truthy
@@ -668,7 +668,7 @@ describe User, models: true do
       end
     end
 
-    describe :ldap_identity do
+    describe '#ldap_identity' do
       it 'returns ldap identity' do
         user = create :omniauth_user
         expect(user.ldap_identity.provider).not_to be_empty
@@ -825,7 +825,7 @@ describe User, models: true do
     end
   end
 
-  describe :can_be_removed? do
+  describe '#can_be_removed?' do
     subject { create(:user) }
 
     context 'no owned groups' do
diff --git a/spec/services/ci/create_trigger_request_service_spec.rb b/spec/services/ci/create_trigger_request_service_spec.rb
index ae4b7aca8206bd78b36bb313f2677fb299fb6f43..b72e0bd3dbeb4708fda3c6481c1923562aadbd0b 100644
--- a/spec/services/ci/create_trigger_request_service_spec.rb
+++ b/spec/services/ci/create_trigger_request_service_spec.rb
@@ -9,7 +9,7 @@ describe Ci::CreateTriggerRequestService, services: true do
     stub_ci_pipeline_to_return_yaml_file
   end
 
-  describe :execute do
+  describe '#execute' do
     context 'valid params' do
       subject { service.execute(project, trigger, 'master') }
 
diff --git a/spec/services/ci/image_for_build_service_spec.rb b/spec/services/ci/image_for_build_service_spec.rb
index 476a888e394fb8878f154bc8620b6b6d375767d9..3a3e3efe709ada4756d963b511f126560017fc6a 100644
--- a/spec/services/ci/image_for_build_service_spec.rb
+++ b/spec/services/ci/image_for_build_service_spec.rb
@@ -8,7 +8,7 @@ module Ci
     let(:commit) { project.ensure_pipeline(commit_sha, 'master') }
     let(:build) { FactoryGirl.create(:ci_build, pipeline: commit) }
 
-    describe :execute do
+    describe '#execute' do
       before { build }
 
       context 'branch name' do
diff --git a/spec/services/ci/register_build_service_spec.rb b/spec/services/ci/register_build_service_spec.rb
index f28f2f1438ddf2e8cba207e0464cbe8d2ce4044b..026d0ca65340146400d3c9f1a43f244eb44a1bf4 100644
--- a/spec/services/ci/register_build_service_spec.rb
+++ b/spec/services/ci/register_build_service_spec.rb
@@ -13,7 +13,7 @@ module Ci
       specific_runner.assign_to(project)
     end
 
-    describe :execute do
+    describe '#execute' do
       context 'runner follow tag list' do
         it "picks build with the same tag" do
           pending_build.tag_list = ["linux"]
diff --git a/spec/services/create_commit_builds_service_spec.rb b/spec/services/create_commit_builds_service_spec.rb
index 309213bd44ccc17fa014ed26273b1b1d06d0f1e6..4d09bc5fb12cee43b1cab104368aac1b32b2b32e 100644
--- a/spec/services/create_commit_builds_service_spec.rb
+++ b/spec/services/create_commit_builds_service_spec.rb
@@ -9,7 +9,7 @@ describe CreateCommitBuildsService, services: true do
     stub_ci_pipeline_to_return_yaml_file
   end
 
-  describe :execute do
+  describe '#execute' do
     context 'valid params' do
       let(:pipeline) do
         service.execute(project, user,
diff --git a/spec/services/event_create_service_spec.rb b/spec/services/event_create_service_spec.rb
index f6dc9d4008f3e19ace0d6cf1dfa0d677bb390f6f..789836f71bb2d339182190bbb3329135046a7ac5 100644
--- a/spec/services/event_create_service_spec.rb
+++ b/spec/services/event_create_service_spec.rb
@@ -4,7 +4,7 @@ describe EventCreateService, services: true do
   let(:service) { EventCreateService.new }
 
   describe 'Issues' do
-    describe :open_issue do
+    describe '#open_issue' do
       let(:issue) { create(:issue) }
 
       it { expect(service.open_issue(issue, issue.author)).to be_truthy }
@@ -14,7 +14,7 @@ describe EventCreateService, services: true do
       end
     end
 
-    describe :close_issue do
+    describe '#close_issue' do
       let(:issue) { create(:issue) }
 
       it { expect(service.close_issue(issue, issue.author)).to be_truthy }
@@ -24,7 +24,7 @@ describe EventCreateService, services: true do
       end
     end
 
-    describe :reopen_issue do
+    describe '#reopen_issue' do
       let(:issue) { create(:issue) }
 
       it { expect(service.reopen_issue(issue, issue.author)).to be_truthy }
@@ -36,7 +36,7 @@ describe EventCreateService, services: true do
   end
 
   describe 'Merge Requests' do
-    describe :open_mr do
+    describe '#open_mr' do
       let(:merge_request) { create(:merge_request) }
 
       it { expect(service.open_mr(merge_request, merge_request.author)).to be_truthy }
@@ -46,7 +46,7 @@ describe EventCreateService, services: true do
       end
     end
 
-    describe :close_mr do
+    describe '#close_mr' do
       let(:merge_request) { create(:merge_request) }
 
       it { expect(service.close_mr(merge_request, merge_request.author)).to be_truthy }
@@ -56,7 +56,7 @@ describe EventCreateService, services: true do
       end
     end
 
-    describe :merge_mr do
+    describe '#merge_mr' do
       let(:merge_request) { create(:merge_request) }
 
       it { expect(service.merge_mr(merge_request, merge_request.author)).to be_truthy }
@@ -66,7 +66,7 @@ describe EventCreateService, services: true do
       end
     end
 
-    describe :reopen_mr do
+    describe '#reopen_mr' do
       let(:merge_request) { create(:merge_request) }
 
       it { expect(service.reopen_mr(merge_request, merge_request.author)).to be_truthy }
@@ -80,7 +80,7 @@ describe EventCreateService, services: true do
   describe 'Milestone' do
     let(:user) { create :user }
 
-    describe :open_milestone do
+    describe '#open_milestone' do
       let(:milestone) { create(:milestone) }
 
       it { expect(service.open_milestone(milestone, user)).to be_truthy }
@@ -90,7 +90,7 @@ describe EventCreateService, services: true do
       end
     end
 
-    describe :close_mr do
+    describe '#close_mr' do
       let(:milestone) { create(:milestone) }
 
       it { expect(service.close_milestone(milestone, user)).to be_truthy }
@@ -100,7 +100,7 @@ describe EventCreateService, services: true do
       end
     end
 
-    describe :destroy_mr do
+    describe '#destroy_mr' do
       let(:milestone) { create(:milestone) }
 
       it { expect(service.destroy_milestone(milestone, user)).to be_truthy }
diff --git a/spec/services/issues/close_service_spec.rb b/spec/services/issues/close_service_spec.rb
index 62b25709a5d21370b3191bbf7067bf7a52762491..67a919ba8ee32016a6e31e0d421cf23e1dd8b792 100644
--- a/spec/services/issues/close_service_spec.rb
+++ b/spec/services/issues/close_service_spec.rb
@@ -12,7 +12,7 @@ describe Issues::CloseService, services: true do
     project.team << [user2, :developer]
   end
 
-  describe :execute do
+  describe '#execute' do
     context "valid params" do
       before do
         perform_enqueued_jobs do
diff --git a/spec/services/merge_requests/close_service_spec.rb b/spec/services/merge_requests/close_service_spec.rb
index 8443a00e70cbcd8f3daf0408e6cab0bf1ff377c8..c1db4f3284b18eec69923ac1b535811b18a58a48 100644
--- a/spec/services/merge_requests/close_service_spec.rb
+++ b/spec/services/merge_requests/close_service_spec.rb
@@ -12,7 +12,7 @@ describe MergeRequests::CloseService, services: true do
     project.team << [user2, :developer]
   end
 
-  describe :execute do
+  describe '#execute' do
     context 'valid params' do
       let(:service) { MergeRequests::CloseService.new(project, user, {}) }
 
diff --git a/spec/services/merge_requests/create_service_spec.rb b/spec/services/merge_requests/create_service_spec.rb
index e433f49872de010a96c080ee28268ee3bf14ec8d..d0b55d2d5094bdbf6b908ab8f77f211cfd620841 100644
--- a/spec/services/merge_requests/create_service_spec.rb
+++ b/spec/services/merge_requests/create_service_spec.rb
@@ -5,7 +5,7 @@ describe MergeRequests::CreateService, services: true do
   let(:user) { create(:user) }
   let(:assignee) { create(:user) }
 
-  describe :execute do
+  describe '#execute' do
     context 'valid params' do
       let(:opts) do
         {
diff --git a/spec/services/merge_requests/merge_service_spec.rb b/spec/services/merge_requests/merge_service_spec.rb
index 2f72cd600715689686dc4ad10b81d5c19d4afcaa..f5bf3c1e3673d4b7c31f8151afaf7c1304e4518f 100644
--- a/spec/services/merge_requests/merge_service_spec.rb
+++ b/spec/services/merge_requests/merge_service_spec.rb
@@ -11,7 +11,7 @@ describe MergeRequests::MergeService, services: true do
     project.team << [user2, :developer]
   end
 
-  describe :execute do
+  describe '#execute' do
     context 'valid params' do
       let(:service) { MergeRequests::MergeService.new(project, user, commit_message: 'Awesome message') }
 
diff --git a/spec/services/merge_requests/refresh_service_spec.rb b/spec/services/merge_requests/refresh_service_spec.rb
index 7d5cb876063ebe31c5ef0a0fc67c6ef2afe8b753..06f56d85aa86955c733bc0ff0e90a51eff3b5469 100644
--- a/spec/services/merge_requests/refresh_service_spec.rb
+++ b/spec/services/merge_requests/refresh_service_spec.rb
@@ -5,7 +5,7 @@ describe MergeRequests::RefreshService, services: true do
   let(:user) { create(:user) }
   let(:service) { MergeRequests::RefreshService }
 
-  describe :execute do
+  describe '#execute' do
     before do
       @user = create(:user)
       group = create(:group)
diff --git a/spec/services/merge_requests/reopen_service_spec.rb b/spec/services/merge_requests/reopen_service_spec.rb
index ac0221998f55d2d06317b9084548e871fbbbe939..88c9c640514533f76918e209eafeacc165e8db47 100644
--- a/spec/services/merge_requests/reopen_service_spec.rb
+++ b/spec/services/merge_requests/reopen_service_spec.rb
@@ -11,7 +11,7 @@ describe MergeRequests::ReopenService, services: true do
     project.team << [user2, :developer]
   end
 
-  describe :execute do
+  describe '#execute' do
     context 'valid params' do
       let(:service) { MergeRequests::ReopenService.new(project, user, {}) }
 
diff --git a/spec/services/milestones/close_service_spec.rb b/spec/services/milestones/close_service_spec.rb
index 1cd6eb2ab382400f77e3b313e4826d7bf3260f5f..5d400299be0ba9a13e545351a8df958fcdbf2ad3 100644
--- a/spec/services/milestones/close_service_spec.rb
+++ b/spec/services/milestones/close_service_spec.rb
@@ -9,7 +9,7 @@ describe Milestones::CloseService, services: true do
     project.team << [user, :master]
   end
 
-  describe :execute do
+  describe '#execute' do
     before do
       Milestones::CloseService.new(project, user, {}).execute(milestone)
     end
diff --git a/spec/services/milestones/create_service_spec.rb b/spec/services/milestones/create_service_spec.rb
index c793026e300bfce2b9c6d84d41eebd6c06ac4bd1..6d29edb449a8477ddf93c2aa9cc721e747e1f321 100644
--- a/spec/services/milestones/create_service_spec.rb
+++ b/spec/services/milestones/create_service_spec.rb
@@ -4,7 +4,7 @@ describe Milestones::CreateService, services: true do
   let(:project) { create(:empty_project) }
   let(:user) { create(:user) }
 
-  describe :execute do
+  describe '#execute' do
     context "valid params" do
       before do
         project.team << [user, :master]
diff --git a/spec/services/notes/create_service_spec.rb b/spec/services/notes/create_service_spec.rb
index 35f576874b82711f13fc7c5856067e143131c6db..32753e84b314c7e7391e54ea9fc9846c79ca6c46 100644
--- a/spec/services/notes/create_service_spec.rb
+++ b/spec/services/notes/create_service_spec.rb
@@ -5,7 +5,7 @@ describe Notes::CreateService, services: true do
   let(:issue) { create(:issue, project: project) }
   let(:user) { create(:user) }
 
-  describe :execute do
+  describe '#execute' do
     context "valid params" do
       before do
         project.team << [user, :master]
diff --git a/spec/services/notes/post_process_service_spec.rb b/spec/services/notes/post_process_service_spec.rb
index d4c50f824c18017efcdb2ff1075db1a1f24319bb..e33a611929b7229d3d6d4ce7b4a73c7c7e85816a 100644
--- a/spec/services/notes/post_process_service_spec.rb
+++ b/spec/services/notes/post_process_service_spec.rb
@@ -5,7 +5,7 @@ describe Notes::PostProcessService, services: true do
   let(:issue) { create(:issue, project: project) }
   let(:user) { create(:user) }
 
-  describe :execute do
+  describe '#execute' do
     before do
       project.team << [user, :master]
       note_opts = {
diff --git a/spec/services/notification_service_spec.rb b/spec/services/notification_service_spec.rb
index d3dddfb4817989d6f7b118e7cd4338a47e0362c1..9fc93f325f72919fd3849a400106de5a04bfe15e 100644
--- a/spec/services/notification_service_spec.rb
+++ b/spec/services/notification_service_spec.rb
@@ -50,7 +50,7 @@ describe NotificationService, services: true do
         update_custom_notification(:new_note, @u_custom_global)
       end
 
-      describe :new_note do
+      describe '#new_note' do
         it do
           add_users_with_subscription(note.project, issue)
 
@@ -306,7 +306,7 @@ describe NotificationService, services: true do
         project.team << [merge_request.assignee, :master]
       end
 
-      describe :new_note do
+      describe '#new_note' do
         it "records sent notifications" do
           # Ensure create SentNotification by noteable = merge_request 6 times, not noteable = note
           expect(SentNotification).to receive(:record_note).with(note, any_args).exactly(4).times.and_call_original
diff --git a/spec/services/test_hook_service_spec.rb b/spec/services/test_hook_service_spec.rb
index f034f251ba4dfcd5148457a3fc79aec2ab8d029a..4f47e89b4b57d7bb2dc892291d87eb47cd37584b 100644
--- a/spec/services/test_hook_service_spec.rb
+++ b/spec/services/test_hook_service_spec.rb
@@ -5,7 +5,7 @@ describe TestHookService, services: true do
   let(:project) { create :project }
   let(:hook)    { create :project_hook, project: project }
 
-  describe :execute do
+  describe '#execute' do
     it "should execute successfully" do
       stub_request(:post, hook.url).to_return(status: 200)
       expect(TestHookService.new.execute(hook, user)).to be_truthy