summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2015-10-05 12:38:00 +0200
committerKamil Trzcinski <ayufan@ayufan.eu>2015-10-05 12:38:00 +0200
commit361dc3641dd28c4ecefbda94f7a8dad299c349aa (patch)
treec2ac5788696ae8a16b82134bd92f5c6d37ef4e52 /app
parent317a7469545d0e9a70e54a87a540b8aabe4c418b (diff)
downloadgitlab-ce-361dc3641dd28c4ecefbda94f7a8dad299c349aa.tar.gz
Fix builds_without_retry
Diffstat (limited to 'app')
-rw-r--r--app/models/ci/build.rb2
-rw-r--r--app/models/ci/commit.rb17
-rw-r--r--app/views/ci/builds/show.html.haml4
3 files changed, 10 insertions, 13 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 79f040b8954..30a8b5aa816 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -47,7 +47,7 @@ module Ci
scope :failed, ->() { where(status: "failed") }
scope :unstarted, ->() { where(runner_id: nil) }
scope :running_or_pending, ->() { where(status:[:running, :pending]) }
- scope :latest, ->() { group(:name).order(stage_idx: :asc, created_at: :desc) }
+ scope :latest, ->() { where(id: unscope(:select).select('max(id)').group(:name)).order(stage_idx: :asc) }
scope :ignore_failures, ->() { where(allow_failure: false) }
scope :for_ref, ->(ref) { where(ref: ref) }
diff --git a/app/models/ci/commit.rb b/app/models/ci/commit.rb
index 59d4932d434..31da7e8f2b6 100644
--- a/app/models/ci/commit.rb
+++ b/app/models/ci/commit.rb
@@ -114,14 +114,11 @@ module Ci
end
def builds_without_retry
- @builds_without_retry ||=
- begin
- grouped_builds = builds.group_by(&:name)
- latest_builds = grouped_builds.map do |name, builds|
- builds.sort_by(&:id).last
- end
- latest_builds.sort_by(&:stage_idx)
- end
+ builds.latest
+ end
+
+ def builds_without_retry_for_ref(ref)
+ builds.for_ref(ref).latest
end
def retried_builds
@@ -181,7 +178,7 @@ module Ci
end
def duration_for_ref(ref)
- builds_without_retry.for_ref(ref).select(&:duration).sum(&:duration).to_i
+ builds_without_retry_for_ref(ref).select(&:duration).sum(&:duration).to_i
end
def finished_at
@@ -198,7 +195,7 @@ module Ci
end
def matrix_for_ref?(ref)
- builds_without_retry.for_ref(ref).pluck(:id).size > 1
+ builds_without_retry_for_ref(ref).pluck(:id).size > 1
end
def config_processor
diff --git a/app/views/ci/builds/show.html.haml b/app/views/ci/builds/show.html.haml
index e4ec190ada5..c42d11bf05d 100644
--- a/app/views/ci/builds/show.html.haml
+++ b/app/views/ci/builds/show.html.haml
@@ -1,7 +1,7 @@
#up-build-trace
- if @commit.matrix_for_ref?(@build.ref)
%ul.center-top-menu
- - @commit.builds_without_retry.for_ref(build.ref).each do |build|
+ - @commit.builds_without_retry_for_ref(build.ref).each do |build|
%li{class: ('active' if build == @build) }
= link_to ci_project_build_url(@project, build) do
= ci_icon_for_status(build.status)
@@ -12,7 +12,7 @@
= build.id
- - unless @commit.builds_without_retry.for_ref(@build.ref).include?(@build)
+ - unless @commit.builds_without_retry_for_ref(@build.ref).include?(@build)
%li.active
%a
Build ##{@build.id}