diff --git a/app/controllers/projects/builds_controller.rb b/app/controllers/projects/builds_controller.rb
index 886934a3f677e884ade8a5bf903d79f4a4ae4110..54650bc37a2094ec0652c649043427227a1d9924 100644
--- a/app/controllers/projects/builds_controller.rb
+++ b/app/controllers/projects/builds_controller.rb
@@ -91,6 +91,12 @@ class Projects::BuildsController < Projects::ApplicationController
     end
   end
 
+  def ci_cd_status
+    render json: BuildSerializer
+      .new(project: @project, user: @current_user)
+      .represent(@build)
+  end
+
   private
 
   def build
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 677a8a1a73a3f687d411d380ad8f91a87469d44a..18b1a5cb39590960409692413c2cac8c3d3ac203 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -10,7 +10,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
   before_action :module_enabled
   before_action :merge_request, only: [
     :edit, :update, :show, :diffs, :commits, :conflicts, :conflict_for_path, :pipelines, :merge, :merge_check,
-    :ci_status, :ci_environments_status, :toggle_subscription, :cancel_merge_when_pipeline_succeeds, :remove_wip, :resolve_conflicts, :assign_related_issues
+    :ci_status, :ci_cd_status, :ci_environments_status, :toggle_subscription, :cancel_merge_when_pipeline_succeeds, :remove_wip, :resolve_conflicts, :assign_related_issues
   ]
   before_action :validates_merge_request, only: [:show, :diffs, :commits, :pipelines]
   before_action :define_show_vars, only: [:show, :diffs, :commits, :conflicts, :conflict_for_path, :builds, :pipelines]
@@ -473,6 +473,12 @@ class Projects::MergeRequestsController < Projects::ApplicationController
     render json: response
   end
 
+  def ci_cd_status
+    render json: PipelineSerializer
+      .new(project: @project, user: @current_user)
+      .represent(@merge_request.head_pipeline)
+  end
+
   def ci_environments_status
     environments =
       begin
diff --git a/app/controllers/projects/pipelines_controller.rb b/app/controllers/projects/pipelines_controller.rb
index 718d9e86beaad2db77c8dd894f5ca39ac6f0f2e4..508d627889c6f29ec10b2343cbaa62db192f47e0 100644
--- a/app/controllers/projects/pipelines_controller.rb
+++ b/app/controllers/projects/pipelines_controller.rb
@@ -72,6 +72,12 @@ class Projects::PipelinesController < Projects::ApplicationController
     end
   end
 
+  def ci_cd_status
+    render json: PipelineSerializer
+      .new(project: @project, user: @current_user)
+      .represent(@pipeline)
+  end
+
   def stage
     @stage = pipeline.stage(params[:stage])
     return not_found unless @stage
diff --git a/app/serializers/build_entity.rb b/app/serializers/build_entity.rb
index 5bcbe285052ee07f25218b1419f935f6a1f64795..531b3768da37a07592ea76cd4dd9cf86bbad3a5f 100644
--- a/app/serializers/build_entity.rb
+++ b/app/serializers/build_entity.rb
@@ -19,6 +19,12 @@ class BuildEntity < Grape::Entity
   expose :created_at
   expose :updated_at
 
+  expose :status do |build, options|
+    StatusEntity.represent(
+      build.detailed_status(request.user),
+      options)
+  end
+
   private
 
   def path_to(route, build)
diff --git a/app/serializers/build_serializer.rb b/app/serializers/build_serializer.rb
new file mode 100644
index 0000000000000000000000000000000000000000..637aacc7be503d72c94dcb6d656e95b5c71d6272
--- /dev/null
+++ b/app/serializers/build_serializer.rb
@@ -0,0 +1,3 @@
+class BuildSerializer < BaseSerializer
+  entity BuildEntity
+end
diff --git a/app/serializers/status_entity.rb b/app/serializers/status_entity.rb
index 47066bebfb11075658c0888d381590d4bce27bf5..dfd9d1584a1ca631d890204dead9d9ebe77953fd 100644
--- a/app/serializers/status_entity.rb
+++ b/app/serializers/status_entity.rb
@@ -1,7 +1,7 @@
 class StatusEntity < Grape::Entity
   include RequestAwareEntity
 
-  expose :icon, :text, :label, :group
+  expose :icon, :favicon, :text, :label, :group
 
   expose :has_details?, as: :has_details
   expose :details_path
diff --git a/config/routes/project.rb b/config/routes/project.rb
index 44b8ae7aeddffa91bdb30a9ccbc3141fe0b9da3e..2c6d45187720e2f158861618ec4382d2c97a18b1 100644
--- a/config/routes/project.rb
+++ b/config/routes/project.rb
@@ -102,6 +102,7 @@ constraints(ProjectUrlConstrainer.new) do
           get :merge_widget_refresh
           post :cancel_merge_when_pipeline_succeeds
           get :ci_status
+          get :ci_cd_status
           get :ci_environments_status
           post :toggle_subscription
           post :remove_wip
@@ -152,6 +153,7 @@ constraints(ProjectUrlConstrainer.new) do
           post :cancel
           post :retry
           get :builds
+          get :ci_cd_status
         end
       end
 
@@ -203,6 +205,7 @@ constraints(ProjectUrlConstrainer.new) do
           post :erase
           get :trace
           get :raw
+          get :ci_cd_status
         end
 
         resource :artifacts, only: [] do
diff --git a/lib/gitlab/ci/status/build/failed_allowed.rb b/lib/gitlab/ci/status/build/failed_allowed.rb
index 807afe24bd5765f695cd3cf88d8c6b618a4930c8..93c7475f47d608cc138fe1e615d4df8bef6a0be6 100644
--- a/lib/gitlab/ci/status/build/failed_allowed.rb
+++ b/lib/gitlab/ci/status/build/failed_allowed.rb
@@ -13,6 +13,10 @@ module Gitlab
             'icon_status_warning'
           end
 
+          def favicon
+            'build_status_warning'
+          end
+
           def group
             'failed_with_warnings'
           end
diff --git a/lib/gitlab/ci/status/canceled.rb b/lib/gitlab/ci/status/canceled.rb
index dd6d99e90757d623a83964ca738141eb44ed6559..e8558164602d119a97307da5e99e43ae7d95b051 100644
--- a/lib/gitlab/ci/status/canceled.rb
+++ b/lib/gitlab/ci/status/canceled.rb
@@ -13,6 +13,10 @@ module Gitlab
         def icon
           'icon_status_canceled'
         end
+
+        def favicon
+          'build_status_canceled'
+        end
       end
     end
   end
diff --git a/lib/gitlab/ci/status/created.rb b/lib/gitlab/ci/status/created.rb
index 6596d7e01ca9bb48b2c1beae651a99f012e42f91..1b01210077aab2411bbceff8a8c6a97f97d70e02 100644
--- a/lib/gitlab/ci/status/created.rb
+++ b/lib/gitlab/ci/status/created.rb
@@ -13,6 +13,10 @@ module Gitlab
         def icon
           'icon_status_created'
         end
+
+        def favicon
+          'build_status_created'
+        end
       end
     end
   end
diff --git a/lib/gitlab/ci/status/failed.rb b/lib/gitlab/ci/status/failed.rb
index c5b5e3203ad6af466b7e53ffcde0ed55bf08dcae..5b180ba45fbc1717dc5b53cc17edf701c885057c 100644
--- a/lib/gitlab/ci/status/failed.rb
+++ b/lib/gitlab/ci/status/failed.rb
@@ -13,6 +13,10 @@ module Gitlab
         def icon
           'icon_status_failed'
         end
+
+        def favicon
+          'build_status_failed'
+        end
       end
     end
   end
diff --git a/lib/gitlab/ci/status/pending.rb b/lib/gitlab/ci/status/pending.rb
index d30f35a59a254bb89ec67f39c6071f5f81dcb07a..25ce6f4449e50dea77fd7a199556dc20d7acf720 100644
--- a/lib/gitlab/ci/status/pending.rb
+++ b/lib/gitlab/ci/status/pending.rb
@@ -13,6 +13,10 @@ module Gitlab
         def icon
           'icon_status_pending'
         end
+
+        def favicon
+          'build_status_pending'
+        end
       end
     end
   end
diff --git a/lib/gitlab/ci/status/running.rb b/lib/gitlab/ci/status/running.rb
index 2aba3c373c7fabbff7ecec5a019d478f90ada659..59e6bf3812d1e158c0f95af75afbcbfe08d914de 100644
--- a/lib/gitlab/ci/status/running.rb
+++ b/lib/gitlab/ci/status/running.rb
@@ -13,6 +13,10 @@ module Gitlab
         def icon
           'icon_status_running'
         end
+
+        def favicon
+          'build_status_running'
+        end
       end
     end
   end
diff --git a/lib/gitlab/ci/status/skipped.rb b/lib/gitlab/ci/status/skipped.rb
index 16282aefd03d7a6a9942f388adad8213a012311d..49ddeda5057c31cb4f56bb67dbf45917743583ab 100644
--- a/lib/gitlab/ci/status/skipped.rb
+++ b/lib/gitlab/ci/status/skipped.rb
@@ -13,6 +13,10 @@ module Gitlab
         def icon
           'icon_status_skipped'
         end
+
+        def favicon
+          'build_status_skipped'
+        end
       end
     end
   end
diff --git a/lib/gitlab/ci/status/success.rb b/lib/gitlab/ci/status/success.rb
index c09c5f006e326a4353cb07a7e1909e1499f1d656..428598d0e24d6e882189a2f3010b95eb508b0fcb 100644
--- a/lib/gitlab/ci/status/success.rb
+++ b/lib/gitlab/ci/status/success.rb
@@ -13,6 +13,10 @@ module Gitlab
         def icon
           'icon_status_success'
         end
+
+        def favicon
+          'build_status_success'
+        end
       end
     end
   end
diff --git a/lib/gitlab/ci/status/success_warning.rb b/lib/gitlab/ci/status/success_warning.rb
index d4cdab6957a00c835c7996b02aac7f62bb14e88a..8bb2a2e5e4e0ddf00ae608752ed10c8cc0a524b6 100644
--- a/lib/gitlab/ci/status/success_warning.rb
+++ b/lib/gitlab/ci/status/success_warning.rb
@@ -20,6 +20,10 @@ module Gitlab
           'icon_status_warning'
         end
 
+        def favicon
+          'build_status_warning'
+        end
+        
         def group
           'success_with_warnings'
         end