diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 9af04964b85acaa75fdd959f50e2d2e80ff43f4d..c048eff0f80fb1c03bb23722f41c447e860701c0 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -16,7 +16,7 @@ module Ci
     scope :with_expired_artifacts, ->() { with_artifacts.where('artifacts_expire_at < ?', Time.now) }
     scope :last_month, ->() { where('created_at > ?', Date.today - 1.month) }
     scope :latest_success_with_artifacts, ->() do
-      with_artifacts.success.latest
+      with_artifacts.success.order(id: :desc)
     end
 
     mount_uploader :artifacts_file, ArtifactUploader
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index a8e6a23e1c48eed7f438fa9bfb7d854718bec940..148b056789abf2cc4078c8bbddd0a14a54d62cf0 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -20,14 +20,6 @@ module Ci
     after_touch :update_state
     after_save :keep_around_commits
 
-    scope :latest, -> do
-      max_id = unscope(:select).
-                 select("max(#{table_name}.id)").
-                 group(:ref)
-
-      where(id: max_id)
-    end
-
     def self.truncate_sha(sha)
       sha[0...8]
     end
@@ -226,7 +218,7 @@ module Ci
 
     def keep_around_commits
       return unless project
-      
+
       project.repository.keep_around(self.sha)
       project.repository.keep_around(self.before_sha)
     end
diff --git a/app/models/project.rb b/app/models/project.rb
index 77431c3f5386cce7337c65aad2d828e3b73913d6..30e8ade99ff3df0f0579b43404c8747284be7e44 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -431,7 +431,7 @@ class Project < ActiveRecord::Base
 
   # ref can't be HEAD or SHA, can only be branch/tag name
   def latest_success_pipeline_for(ref = 'master')
-    pipelines.where(ref: ref).success.latest
+    pipelines.where(ref: ref).success.order(id: :desc)
   end
 
   # ref can't be HEAD or SHA, can only be branch/tag name