summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/ci/build.rb8
-rw-r--r--app/models/ci/pipeline.rb4
-rw-r--r--app/models/ci/stage.rb4
3 files changed, 16 insertions, 0 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 89cc082d0bc..ff790004cfe 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -786,6 +786,14 @@ module Ci
:creating
end
+ def self.alive_ratio
+ sql = <<~SQL
+ SELECT (#{alive.select('COUNT(*)').to_sql})::float / (#{select('COUNT(*)').to_sql});
+ SQL
+
+ ActiveRecord::Base.connection.execute(sql).first.values.first
+ end
+
private
def successful_deployment_status
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 20ca4a9ab24..95b891ed58e 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -794,6 +794,10 @@ module Ci
errors ? errors.full_messages.to_sentence : ""
end
+ def progress
+ (1.0 - builds.alive_ratio) * 100.0
+ end
+
private
def ci_yaml_from_repo
diff --git a/app/models/ci/stage.rb b/app/models/ci/stage.rb
index d90339d90dc..f2f6dec8de3 100644
--- a/app/models/ci/stage.rb
+++ b/app/models/ci/stage.rb
@@ -124,5 +124,9 @@ module Ci
def manual_playable?
blocked? || skipped?
end
+
+ def progress
+ (1.0 - builds.alive_ratio) * 100.0
+ end
end
end