diff options
author | Kamil TrzciĆski <ayufan@ayufan.eu> | 2016-12-26 23:14:39 +0000 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2016-12-27 15:58:52 -0500 |
commit | 090ede2d60b18da8946a9929def77c4afd990d96 (patch) | |
tree | 90a0bf58fd6e63afc1f34d0ba76131873e50c4b6 | |
parent | 3483ae91d64b48d2c47ab6895261b8344423ea7c (diff) | |
download | gitlab-ce-090ede2d60b18da8946a9929def77c4afd990d96.tar.gz |
Merge branch 'fix-latest-pipeine-ordering-again' into 'master'
Order only for latest_successful_for
See merge request !8301
-rw-r--r-- | app/models/ci/pipeline.rb | 9 | ||||
-rw-r--r-- | changelogs/unreleased/fix-latest-pipeine-ordering.yml | 4 | ||||
-rw-r--r-- | spec/models/ci/pipeline_spec.rb | 13 |
3 files changed, 20 insertions, 6 deletions
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index f2f6453b3b9..abbbddaa4f6 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -93,11 +93,8 @@ module Ci .select("max(#{quoted_table_name}.id)") .group(:ref, :sha) - if ref - where(id: max_id, ref: ref) - else - where(id: max_id) - end + relation = ref ? where(ref: ref) : self + relation.where(id: max_id) end def self.latest_status(ref = nil) @@ -105,7 +102,7 @@ module Ci end def self.latest_successful_for(ref) - success.latest(ref).first + success.latest(ref).order(id: :desc).first end def self.truncate_sha(sha) diff --git a/changelogs/unreleased/fix-latest-pipeine-ordering.yml b/changelogs/unreleased/fix-latest-pipeine-ordering.yml new file mode 100644 index 00000000000..b155d51741b --- /dev/null +++ b/changelogs/unreleased/fix-latest-pipeine-ordering.yml @@ -0,0 +1,4 @@ +--- +title: Fix finding the latest pipeline +merge_request: 8301 +author: diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index dc377d15f15..cebaa157ef3 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -464,6 +464,19 @@ describe Ci::Pipeline, models: true do end end + describe '.latest_successful_for' do + include_context 'with some outdated pipelines' + + let!(:latest_successful_pipeline) do + create_pipeline(:success, 'ref', 'D') + end + + it 'returns the latest successful pipeline' do + expect(described_class.latest_successful_for('ref')). + to eq(latest_successful_pipeline) + end + end + describe '#status' do let!(:build) { create(:ci_build, :created, pipeline: pipeline, name: 'test') } |