diff options
| author | Shinya Maeda <shinya@gitlab.com> | 2018-09-21 11:17:37 +0900 |
|---|---|---|
| committer | Alessio Caiazza <acaiazza@gitlab.com> | 2018-10-02 17:02:11 +0200 |
| commit | a7c767f16446f71f6e35a5aa3d2fdc73037fcdf5 (patch) | |
| tree | 6f0f2a85f44d796a31ae0813e1ce6d5434bc8fda /app/models/concerns | |
| parent | af51b95442aa867bd570b99d32f8b580f554675d (diff) | |
| download | gitlab-ce-a7c767f16446f71f6e35a5aa3d2fdc73037fcdf5.tar.gz | |
Add a new status to ci_builds.status
Diffstat (limited to 'app/models/concerns')
| -rw-r--r-- | app/models/concerns/has_status.rb | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/app/models/concerns/has_status.rb b/app/models/concerns/has_status.rb index e2700db1438..0a97e4cdfc4 100644 --- a/app/models/concerns/has_status.rb +++ b/app/models/concerns/has_status.rb @@ -4,14 +4,15 @@ module HasStatus extend ActiveSupport::Concern DEFAULT_STATUS = 'created'.freeze - BLOCKED_STATUS = 'manual'.freeze - AVAILABLE_STATUSES = %w[created pending running success failed canceled skipped manual].freeze - STARTED_STATUSES = %w[running success failed skipped manual].freeze + BLOCKED_STATUS = %w[manual scheduled].freeze + AVAILABLE_STATUSES = %w[created pending running success failed canceled skipped manual scheduled].freeze + STARTED_STATUSES = %w[running success failed skipped manual scheduled].freeze ACTIVE_STATUSES = %w[pending running].freeze COMPLETED_STATUSES = %w[success failed canceled skipped].freeze - ORDERED_STATUSES = %w[failed pending running manual canceled success skipped created].freeze + ORDERED_STATUSES = %w[failed pending running manual scheduled canceled success skipped created].freeze STATUSES_ENUM = { created: 0, pending: 1, running: 2, success: 3, - failed: 4, canceled: 5, skipped: 6, manual: 7 }.freeze + failed: 4, canceled: 5, skipped: 6, manual: 7, + scheduled: 8 }.freeze UnknownStatusError = Class.new(StandardError) @@ -24,6 +25,7 @@ module HasStatus created = scope_relevant.created.select('count(*)').to_sql success = scope_relevant.success.select('count(*)').to_sql manual = scope_relevant.manual.select('count(*)').to_sql + scheduled = scope_relevant.scheduled.select('count(*)').to_sql pending = scope_relevant.pending.select('count(*)').to_sql running = scope_relevant.running.select('count(*)').to_sql skipped = scope_relevant.skipped.select('count(*)').to_sql @@ -31,6 +33,7 @@ module HasStatus warnings = scope_warnings.select('count(*) > 0').to_sql.presence || 'false' "(CASE + WHEN (#{scheduled})>0 THEN 'scheduled' WHEN (#{builds})=(#{skipped}) AND (#{warnings}) THEN 'success' WHEN (#{builds})=(#{skipped}) THEN 'skipped' WHEN (#{builds})=(#{success}) THEN 'success' @@ -92,8 +95,7 @@ module HasStatus scope :failed_or_canceled, -> { where(status: [:failed, :canceled]) } scope :cancelable, -> do - where("status IN ('running', 'pending', 'created') OR " \ - "(status = 'manual' AND EXISTS (select 1 from ci_build_schedules where ci_builds.id = ci_build_schedules.build_id))") + where("status IN ('running', 'pending', 'created', 'scheduled')") end end |
