summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-02-14 11:38:19 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-02-14 11:38:19 +0100
commit346a7c696abcf6d3d3a7e0281d951865c0e75c79 (patch)
tree3baf260318ef41b1ad78e7617ec4fab0a2a21b92
parent3063ab45dd8a49a13ec5f8f091665600ed487bd3 (diff)
downloadgitlab-ce-346a7c696abcf6d3d3a7e0281d951865c0e75c79.tar.gz
Add after_stage scope to commit status class
-rw-r--r--app/models/ci/pipeline.rb4
-rw-r--r--app/models/commit_status.rb6
-rw-r--r--app/services/ci/retry_pipeline_service.rb12
3 files changed, 10 insertions, 12 deletions
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 72b09c12e01..8d43f3051ee 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -234,9 +234,7 @@ module Ci
end
def mark_as_processable_after_stage(stage_idx)
- builds.skipped
- .where('stage_idx > ?', stage_idx)
- .find_each(&:process)
+ builds.skipped.after_stage(stage_idx).find_each(&:process)
end
def latest?
diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb
index 9547c57b2ae..99a6326309d 100644
--- a/app/models/commit_status.rb
+++ b/app/models/commit_status.rb
@@ -23,9 +23,6 @@ class CommitStatus < ActiveRecord::Base
where(id: max_id.group(:name, :commit_id))
end
- scope :retried, -> { where.not(id: latest) }
- scope :ordered, -> { order(:name) }
-
scope :failed_but_allowed, -> do
where(allow_failure: true, status: [:failed, :canceled])
end
@@ -36,8 +33,11 @@ class CommitStatus < ActiveRecord::Base
false, all_state_names - [:failed, :canceled])
end
+ scope :retried, -> { where.not(id: latest) }
+ scope :ordered, -> { order(:name) }
scope :latest_ordered, -> { latest.ordered.includes(project: :namespace) }
scope :retried_ordered, -> { retried.ordered.includes(project: :namespace) }
+ scope :after_stage, -> (index) { where('stage_idx > ?', index) }
state_machine :status do
event :enqueue do
diff --git a/app/services/ci/retry_pipeline_service.rb b/app/services/ci/retry_pipeline_service.rb
index fd180b2c624..b062c50e82d 100644
--- a/app/services/ci/retry_pipeline_service.rb
+++ b/app/services/ci/retry_pipeline_service.rb
@@ -11,7 +11,7 @@ module Ci
# Reprocess builds in subsequent stages
#
pipeline.builds
- .where('stage_idx > ?', resume_stage.index)
+ .after_stage(resume_stage.index)
.failed_or_canceled.find_each do |build|
Ci::RetryBuildService
.new(project, current_user)
@@ -19,6 +19,11 @@ module Ci
end
##
+ # Mark skipped builds as processable again
+ #
+ pipeline.mark_as_processable_after_stage(resume_stage.index)
+
+ ##
# Retry builds in the first unsuccessful stage
#
resume_stage.builds.failed_or_canceled.find_each do |build|
@@ -26,11 +31,6 @@ module Ci
.new(project, current_user)
.retry(build)
end
-
- ##
- # Mark skipped builds as processable again
- #
- pipeline.mark_as_processable_after_stage(resume_stage.index)
end
private