From 2039c8280db1646845c33d6c5a74e5f23ca6f4de Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Mon, 27 Aug 2018 17:31:01 +0200 Subject: Disable existing offenses for the CodeReuse cops This whitelists all existing offenses for the various CodeReuse cops, of which most are triggered by the CodeReuse/ActiveRecord cop. --- app/services/ci/process_pipeline_service.rb | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'app/services/ci/process_pipeline_service.rb') diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index cafee76a33c..69341a6c263 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -60,17 +60,23 @@ module Ci end end + # rubocop: disable CodeReuse/ActiveRecord def status_for_prior_stages(index) pipeline.builds.where('stage_idx < ?', index).latest.status || 'success' end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def stage_indexes_of_created_builds created_builds.order(:stage_idx).pluck('distinct stage_idx') end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def created_builds_in_stage(index) created_builds.where(stage_idx: index) end + # rubocop: enable CodeReuse/ActiveRecord def created_builds pipeline.builds.created @@ -80,6 +86,7 @@ module Ci # This replicates what is db/post_migrate/20170416103934_upate_retried_for_ci_build.rb # and ensures that functionality will not be broken before migration is run # this updates only when there are data that needs to be updated, there are two groups with no retried flag + # rubocop: disable CodeReuse/ActiveRecord def update_retried # find the latest builds for each name latest_statuses = pipeline.statuses.latest @@ -93,6 +100,7 @@ module Ci .where.not(id: latest_statuses.map(&:first)) .update_all(retried: true) if latest_statuses.any? end + # rubocop: enable CodeReuse/ActiveRecord def enqueue_build(build) Ci::EnqueueBuildService.new(project, @user).execute(build) -- cgit v1.2.1 From c03631a99618d43c66a1b9d0b4303d7253e45866 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 17 Sep 2018 20:00:29 +0900 Subject: Support new syntax --- app/services/ci/process_pipeline_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/services/ci/process_pipeline_service.rb') diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 69341a6c263..323075d404b 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -53,7 +53,7 @@ module Ci %w[failed] when 'always' %w[success failed skipped] - when 'manual' + when 'manual', 'delayed' %w[success skipped] else [] -- cgit v1.2.1 From a7c767f16446f71f6e35a5aa3d2fdc73037fcdf5 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 21 Sep 2018 11:17:37 +0900 Subject: Add a new status to ci_builds.status --- app/services/ci/process_pipeline_service.rb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'app/services/ci/process_pipeline_service.rb') diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 323075d404b..0a13da198cd 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -37,7 +37,7 @@ module Ci def process_build(build, current_status) if valid_statuses_for_when(build.when).include?(current_status) - build.action? ? build.actionize : enqueue_build(build) + proceed_build(build) true else build.skip @@ -53,8 +53,10 @@ module Ci %w[failed] when 'always' %w[success failed skipped] - when 'manual', 'delayed' + when 'manual' %w[success skipped] + when 'delayed' + %w[success skipped] # This might be `success` only else [] end @@ -102,8 +104,14 @@ module Ci end # rubocop: enable CodeReuse/ActiveRecord - def enqueue_build(build) - Ci::EnqueueBuildService.new(project, @user).execute(build) + def proceed_build(build) + if build.schedulable? + build.schedule! + elsif build.action? + build.actionize + else + Ci::EnqueueBuildService.new(project, @user).execute(build) + end end end end -- cgit v1.2.1 From 2f03c503fb299a4a821d74f75c31aa1189fcbccb Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 25 Sep 2018 14:21:41 +0900 Subject: Introduce ProceedBuildService --- app/services/ci/process_pipeline_service.rb | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) (limited to 'app/services/ci/process_pipeline_service.rb') diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 0a13da198cd..f122fc8798c 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -37,7 +37,7 @@ module Ci def process_build(build, current_status) if valid_statuses_for_when(build.when).include?(current_status) - proceed_build(build) + Ci::ProceedBuildService.new(project, @user).execute(build) true else build.skip @@ -103,15 +103,5 @@ module Ci .update_all(retried: true) if latest_statuses.any? end # rubocop: enable CodeReuse/ActiveRecord - - def proceed_build(build) - if build.schedulable? - build.schedule! - elsif build.action? - build.actionize - else - Ci::EnqueueBuildService.new(project, @user).execute(build) - end - end end end -- cgit v1.2.1 From 27a4c03502c4eca0be03a81a27c6a9d5f5e4967e Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 25 Sep 2018 14:24:08 +0900 Subject: Rename to process build service --- app/services/ci/process_pipeline_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/services/ci/process_pipeline_service.rb') diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index f122fc8798c..07371acb3c7 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -37,7 +37,7 @@ module Ci def process_build(build, current_status) if valid_statuses_for_when(build.when).include?(current_status) - Ci::ProceedBuildService.new(project, @user).execute(build) + Ci::ProcessBuildService.new(project, @user).execute(build) true else build.skip -- cgit v1.2.1 From c514636a83987152b2a95e442f49b3ee61dcbeb8 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 26 Sep 2018 14:28:22 +0900 Subject: Simplify StuckCiJobsWorker --- app/services/ci/process_pipeline_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/services/ci/process_pipeline_service.rb') diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 07371acb3c7..1d1e39232fe 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -56,7 +56,7 @@ module Ci when 'manual' %w[success skipped] when 'delayed' - %w[success skipped] # This might be `success` only + %w[success skipped] else [] end -- cgit v1.2.1 From ddb313aebf2c499264b32567d3509f152c242d7a Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 13:52:15 +0900 Subject: Remove Scheduled Status class from pipeline --- app/services/ci/process_pipeline_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/services/ci/process_pipeline_service.rb') diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 1d1e39232fe..5e8a3976cc0 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -24,7 +24,7 @@ module Ci def process_stage(index) current_status = status_for_prior_stages(index) - return if HasStatus::BLOCKED_STATUS == current_status + return if HasStatus::BLOCKED_STATUS.include?(current_status) if HasStatus::COMPLETED_STATUSES.include?(current_status) created_builds_in_stage(index).select do |build| -- cgit v1.2.1 From 80a92650faf9d7ca7a706b6a74019d869598fe41 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 16:10:55 +0900 Subject: Add Spec for ProcessPipelineService --- app/services/ci/process_pipeline_service.rb | 30 ++--------------------------- 1 file changed, 2 insertions(+), 28 deletions(-) (limited to 'app/services/ci/process_pipeline_service.rb') diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 5e8a3976cc0..446188347df 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -29,39 +29,13 @@ module Ci if HasStatus::COMPLETED_STATUSES.include?(current_status) created_builds_in_stage(index).select do |build| Gitlab::OptimisticLocking.retry_lock(build) do |subject| - process_build(subject, current_status) + Ci::ProcessBuildService.new(project, @user) + .execute(build, current_status) end end end end - def process_build(build, current_status) - if valid_statuses_for_when(build.when).include?(current_status) - Ci::ProcessBuildService.new(project, @user).execute(build) - true - else - build.skip - false - end - end - - def valid_statuses_for_when(value) - case value - when 'on_success' - %w[success skipped] - when 'on_failure' - %w[failed] - when 'always' - %w[success failed skipped] - when 'manual' - %w[success skipped] - when 'delayed' - %w[success skipped] - else - [] - end - end - # rubocop: disable CodeReuse/ActiveRecord def status_for_prior_stages(index) pipeline.builds.where('stage_idx < ?', index).latest.status || 'success' -- cgit v1.2.1