diff options
-rw-r--r-- | app/models/ci/pipeline.rb | 12 | ||||
-rw-r--r-- | app/models/commit.rb | 2 | ||||
-rw-r--r-- | app/services/ci/image_for_build_service.rb | 2 |
3 files changed, 6 insertions, 10 deletions
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index 61d9316a5d3..d1ce43570ac 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -89,23 +89,19 @@ module Ci end end - scope :latest, -> do + # ref can't be HEAD or SHA, can only be branch/tag name + scope :latest, ->(ref = nil) do max_id = unscope(:select).select("max(#{quoted_table_name}.id)") - where(id: max_id.group(:ref, :sha)) - end - - # ref can't be HEAD or SHA, can only be branch/tag name - scope :latest_for, ->(ref) do if ref where(ref: ref) else self - end.latest + end.where(id: max_id.group(:ref, :sha)) end def self.latest_successful_for(ref) - success.latest_for(ref).first + success.latest(ref).first end def self.truncate_sha(sha) diff --git a/app/models/commit.rb b/app/models/commit.rb index b588b93b158..946bfc4712c 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -234,7 +234,7 @@ class Commit return @statuses[ref] if @statuses.key?(ref) - @statuses[ref] = pipelines.latest_for(ref).status + @statuses[ref] = pipelines.latest(ref).status end def revert_branch_name diff --git a/app/services/ci/image_for_build_service.rb b/app/services/ci/image_for_build_service.rb index d5a07ef630b..1eeb0e2363a 100644 --- a/app/services/ci/image_for_build_service.rb +++ b/app/services/ci/image_for_build_service.rb @@ -5,7 +5,7 @@ module Ci sha = opts[:sha] || ref_sha(project, ref) pipelines = project.pipelines.where(sha: sha) - image_name = image_for_status(pipelines.latest_for(ref).status) + image_name = image_for_status(pipelines.latest(ref).status) image_path = Rails.root.join('public/ci', image_name) OpenStruct.new(path: image_path, name: image_name) |