Fix async pipeline and remove unrelated changes

This commit is contained in:
Grzegorz Bizon 2016-10-03 12:45:34 +02:00
parent 4567e624a0
commit 68774452a4
6 changed files with 16 additions and 26 deletions

View file

@ -67,7 +67,7 @@ module Ci
environment: build.environment, environment: build.environment,
status_event: 'enqueue' status_event: 'enqueue'
) )
MergeRequests::AddTodoWhenBuildFailsService.new(build.project, nil).close(new_build.pipeline) MergeRequests::AddTodoWhenBuildFailsService.new(build.project, nil).close(new_build)
build.pipeline.mark_as_processable_after_stage(build.stage_idx) build.pipeline.mark_as_processable_after_stage(build.stage_idx)
new_build new_build
end end

View file

@ -73,14 +73,6 @@ module Ci
after_transition do |pipeline, transition| after_transition do |pipeline, transition|
pipeline.execute_hooks unless transition.loopback? pipeline.execute_hooks unless transition.loopback?
end end
after_transition [:created, :pending, :running] => :success do |pipeline|
MergeRequests::MergeWhenBuildSucceedsService.new(pipeline.project, nil).trigger(pipeline)
end
after_transition any => :failed do |pipeline|
MergeRequests::AddTodoWhenBuildFailsService.new(pipeline.project, nil).execute(pipeline)
end
end end
# ref can't be HEAD or SHA, can only be branch/tag name # ref can't be HEAD or SHA, can only be branch/tag name

View file

@ -69,11 +69,6 @@ class CommitStatus < ActiveRecord::Base
commit_status.update_attributes finished_at: Time.now commit_status.update_attributes finished_at: Time.now
end end
after_transition any => [:success, :failed, :canceled] do |commit_status|
commit_status.pipeline.try(:process!)
true
end
after_transition [:created, :pending, :running] => :success do |commit_status| after_transition [:created, :pending, :running] => :success do |commit_status|
MergeRequests::MergeWhenBuildSucceedsService.new(commit_status.pipeline.project, nil).trigger(commit_status) MergeRequests::MergeWhenBuildSucceedsService.new(commit_status.pipeline.project, nil).trigger(commit_status)
end end
@ -86,7 +81,7 @@ class CommitStatus < ActiveRecord::Base
if commit_status.pipeline && !transition.loopback? if commit_status.pipeline && !transition.loopback?
ProcessPipelineWorker.perform_async( ProcessPipelineWorker.perform_async(
commit_status.pipeline.id, commit_status.pipeline.id,
process: HasStatus.COMPLETED_STATUSES.include?(commit_status.status)) process: HasStatus::COMPLETED_STATUSES.include?(commit_status.status))
end end
true true

View file

@ -1,15 +1,15 @@
module MergeRequests module MergeRequests
class AddTodoWhenBuildFailsService < MergeRequests::BaseService class AddTodoWhenBuildFailsService < MergeRequests::BaseService
# Adds a todo to the parent merge_request when a CI build fails # Adds a todo to the parent merge_request when a CI build fails
def execute(pipeline) def execute(commit_status)
each_merge_request(pipeline) do |merge_request| each_merge_request(commit_status) do |merge_request|
todo_service.merge_request_build_failed(merge_request) todo_service.merge_request_build_failed(merge_request)
end end
end end
# Closes any pending build failed todos for the parent MRs when a build is retried # Closes any pending build failed todos for the parent MRs when a build is retried
def close(pipeline) def close(commit_status)
each_merge_request(pipeline) do |merge_request| each_merge_request(commit_status) do |merge_request|
todo_service.merge_request_build_retried(merge_request) todo_service.merge_request_build_retried(merge_request)
end end
end end

View file

@ -42,11 +42,11 @@ module MergeRequests
super(:merge_request) super(:merge_request)
end end
def merge_request_from(pipeline) def merge_request_from(commit_status)
branches = pipeline.ref branches = commit_status.ref
# This is for ref-less builds # This is for ref-less builds
branches ||= @project.repository.branch_names_contains(pipeline.sha) branches ||= @project.repository.branch_names_contains(commit_status.sha)
return [] if branches.blank? return [] if branches.blank?
@ -56,11 +56,14 @@ module MergeRequests
merge_requests.uniq.select(&:source_project) merge_requests.uniq.select(&:source_project)
end end
def each_merge_request(pipeline) def each_merge_request(commit_status)
merge_request_from(commit_status).each do |merge_request| merge_request_from(commit_status).each do |merge_request|
next unless pipeline == merge_request.pipeline pipeline = merge_request.pipeline
yield merge_request next unless pipeline
next unless pipeline.sha == commit_status.sha
yield merge_request, pipeline
end end
end end
end end

View file

@ -10,7 +10,7 @@ class ProcessPipelineWorker
return return
end end
pipeline.process! if params[:process] pipeline.process! if params['process']
pipeline.update_status pipeline.update_status
end end