summaryrefslogtreecommitdiff
path: root/app/models/ci/pipeline.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/ci/pipeline.rb')
-rw-r--r--app/models/ci/pipeline.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 48354cdbefb..359c517b27b 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -254,6 +254,24 @@ module Ci
builds.latest.failed_but_allowed.any?
end
+ def recovered?
+ success? && previous_pipeline.try(:failed?)
+ end
+
+ def first_success?
+ success? && previous_pipeline.nil?
+ end
+
+ def previous_pipeline
+ return @previous_pipeline if defined?(@previous_pipeline)
+
+ @previous_pipeline =
+ project.pipelines.
+ where(ref: ref).
+ where("#{self.class.quoted_table_name}.id < ?", id).
+ order(id: :desc).first
+ end
+
def config_processor
return nil unless ci_yaml_file
return @config_processor if defined?(@config_processor)