diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/ci/build.rb | 8 | ||||
-rw-r--r-- | app/models/ci/pipeline.rb | 4 | ||||
-rw-r--r-- | app/models/ci/stage.rb | 4 |
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 |