diff options
author | Shinya Maeda <shinya@gitlab.com> | 2019-05-27 19:21:36 +0700 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2019-06-04 10:51:32 +0700 |
commit | 197a3d053359e66535c41935eac065ee424cbb07 (patch) | |
tree | 65b2010d5446fe8c41a378c0f9c7f359ae1eab69 /app | |
parent | 9a9c947b145e6a43ae49687aa398d1154d07a25b (diff) | |
download | gitlab-ce-197a3d053359e66535c41935eac065ee424cbb07.tar.gz |
Introduce sidekiq worker for auto merge processintroduce-auto-merge-process-worker
As we have a central domain for auto merge process today,
we should use a single worker for any auto merge process.
Diffstat (limited to 'app')
-rw-r--r-- | app/models/ci/pipeline.rb | 10 | ||||
-rw-r--r-- | app/workers/all_queues.yml | 2 | ||||
-rw-r--r-- | app/workers/auto_merge_process_worker.rb | 14 | ||||
-rw-r--r-- | app/workers/pipeline_success_worker.rb | 9 |
4 files changed, 27 insertions, 8 deletions
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index 80401ca0a1e..3727a9861aa 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -166,6 +166,16 @@ module Ci end end + after_transition any => ::Ci::Pipeline.completed_statuses do |pipeline| + pipeline.run_after_commit do + pipeline.all_merge_requests.each do |merge_request| + next unless merge_request.auto_merge_enabled? + + AutoMergeProcessWorker.perform_async(merge_request.id) + end + end + end + after_transition any => [:success, :failed] do |pipeline| pipeline.run_after_commit do PipelineNotificationWorker.perform_async(pipeline.id) diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index e4e85de93da..fd0cc5fb24e 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -1,6 +1,8 @@ --- - auto_devops:auto_devops_disable +- auto_merge:auto_merge_process + - cronjob:admin_email - cronjob:expire_build_artifacts - cronjob:gitlab_usage_ping diff --git a/app/workers/auto_merge_process_worker.rb b/app/workers/auto_merge_process_worker.rb new file mode 100644 index 00000000000..cd81cdbc60c --- /dev/null +++ b/app/workers/auto_merge_process_worker.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AutoMergeProcessWorker + include ApplicationWorker + + queue_namespace :auto_merge + + def perform(merge_request_id) + MergeRequest.find_by_id(merge_request_id).try do |merge_request| + AutoMergeService.new(merge_request.project, merge_request.merge_user) + .process(merge_request) + end + end +end diff --git a/app/workers/pipeline_success_worker.rb b/app/workers/pipeline_success_worker.rb index ce6c88c85c1..666331e6cd4 100644 --- a/app/workers/pipeline_success_worker.rb +++ b/app/workers/pipeline_success_worker.rb @@ -6,14 +6,7 @@ class PipelineSuccessWorker queue_namespace :pipeline_processing - # rubocop: disable CodeReuse/ActiveRecord def perform(pipeline_id) - Ci::Pipeline.find_by(id: pipeline_id).try do |pipeline| - pipeline.all_merge_requests.preload(:merge_user).each do |merge_request| - AutoMergeService.new(pipeline.project, merge_request.merge_user) - .process(merge_request) - end - end + # no-op end - # rubocop: enable CodeReuse/ActiveRecord end |