diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2015-10-05 12:38:00 +0200 |
---|---|---|
committer | Kamil Trzcinski <ayufan@ayufan.eu> | 2015-10-05 12:38:00 +0200 |
commit | 361dc3641dd28c4ecefbda94f7a8dad299c349aa (patch) | |
tree | c2ac5788696ae8a16b82134bd92f5c6d37ef4e52 /app | |
parent | 317a7469545d0e9a70e54a87a540b8aabe4c418b (diff) | |
download | gitlab-ce-361dc3641dd28c4ecefbda94f7a8dad299c349aa.tar.gz |
Fix builds_without_retry
Diffstat (limited to 'app')
-rw-r--r-- | app/models/ci/build.rb | 2 | ||||
-rw-r--r-- | app/models/ci/commit.rb | 17 | ||||
-rw-r--r-- | app/views/ci/builds/show.html.haml | 4 |
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} |