Update order of build transition callbacks
This commit is contained in:
		
							parent
							
								
									ebeee31100
								
							
						
					
					
						commit
						f57cfdb6b5
					
				|  | @ -69,6 +69,21 @@ class CommitStatus < ActiveRecord::Base | |||
|       commit_status.update_attributes finished_at: Time.now | ||||
|     end | ||||
| 
 | ||||
|     after_transition do |commit_status, transition| | ||||
|       commit_status.pipeline.tap do |pipeline| | ||||
|         return if transition.loopback? | ||||
|         return unless pipeline | ||||
| 
 | ||||
|         if commit_status.complete? | ||||
|           ProcessPipelineWorker.perform_async(pipeline.id) | ||||
|         end | ||||
| 
 | ||||
|         UpdatePipelineWorker.perform_async(pipeline.id) | ||||
|       end | ||||
| 
 | ||||
|       true | ||||
|     end | ||||
| 
 | ||||
|     after_transition [:created, :pending, :running] => :success do |commit_status| | ||||
|       MergeRequests::MergeWhenBuildSucceedsService.new(commit_status.pipeline.project, nil).trigger(commit_status) | ||||
|     end | ||||
|  | @ -76,20 +91,6 @@ class CommitStatus < ActiveRecord::Base | |||
|     after_transition any => :failed do |commit_status| | ||||
|       MergeRequests::AddTodoWhenBuildFailsService.new(commit_status.pipeline.project, nil).execute(commit_status) | ||||
|     end | ||||
| 
 | ||||
|     after_transition do |commit_status, transition| | ||||
|       return if transition.loopback? | ||||
| 
 | ||||
|       commit_status.pipeline.try(:id).try do |pipeline_id| | ||||
|         if commit_status.complete? | ||||
|           ProcessPipelineWorker.perform_async(pipeline_id) | ||||
|         end | ||||
| 
 | ||||
|         UpdatePipelineWorker.perform_async(pipeline_id) | ||||
|       end | ||||
| 
 | ||||
|       true | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   delegate :sha, :short_sha, to: :pipeline | ||||
|  |  | |||
|  | @ -19,12 +19,11 @@ module MergeRequests | |||
|     end | ||||
| 
 | ||||
|     # Triggers the automatic merge of merge_request once the build succeeds | ||||
|     def trigger(pipeline) | ||||
|       return unless pipeline.success? | ||||
| 
 | ||||
|       each_merge_request(pipeline) do |merge_request| | ||||
|     def trigger(commit_status) | ||||
|       each_merge_request(commit_status) do |merge_request, pipeline| | ||||
|         next unless merge_request.merge_when_build_succeeds? | ||||
|         next unless merge_request.mergeable? | ||||
|         next unless pipeline.success? | ||||
| 
 | ||||
|         MergeWorker.perform_async(merge_request.id, merge_request.merge_user_id, merge_request.merge_params) | ||||
|       end | ||||
|  |  | |||
|  | @ -4,9 +4,8 @@ class ProcessPipelineWorker | |||
|   sidekiq_options queue: :default | ||||
| 
 | ||||
|   def perform(pipeline_id) | ||||
|     pipeline = Ci::Pipeline.find_by(id: pipeline_id) | ||||
|     return unless pipeline | ||||
| 
 | ||||
|     pipeline.process! | ||||
|     Ci::Pipeline.find_by(id: pipeline_id).try do |pipeline| | ||||
|       pipeline.process! | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -4,9 +4,8 @@ class UpdatePipelineWorker | |||
|   sidekiq_options queue: :default | ||||
| 
 | ||||
|   def perform(pipeline_id) | ||||
|     pipeline = Ci::Pipeline.find_by(id: pipeline_id) | ||||
|     return unless pipeline | ||||
| 
 | ||||
|     pipeline.update_status | ||||
|     Ci::Pipeline.find_by(id: pipeline_id).try do |pipeline| | ||||
|       pipeline.update_status | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue