Skip to content
Snippets Groups Projects
Commit ec0daedb authored by Grzegorz Bizon's avatar Grzegorz Bizon
Browse files

Add service that runs after branch removed hooks

parent be3d74e0
No related branches found
No related tags found
No related merge requests found
require_relative 'base_service'
##
# Branch can be deleted either by DeleteBranchService
# or by GitPushService.
#
class AfterBranchDeleteService < BaseService
attr_reader :branch_name
def execute(branch_name)
@branch_name = branch_name
stop_environments
end
private
def stop_environments
Ci::StopEnvironmentService
.new(project, current_user)
.execute(branch_name)
end
end
Loading
Loading
@@ -22,6 +22,7 @@ class DeleteBranchService < BaseService
end
 
if repository.rm_branch(current_user, branch_name)
execute_after_branch_delete_hooks(branch_name)
success('Branch was removed')
else
error('Failed to remove branch')
Loading
Loading
@@ -47,4 +48,12 @@ class DeleteBranchService < BaseService
"#{Gitlab::Git::BRANCH_REF_PREFIX}#{branch.name}",
[])
end
private
def execute_after_branch_delete_hooks(branch_name)
AfterBranchDeleteService
.new(project, current_user)
.execute(branch_name)
end
end
Loading
Loading
@@ -49,10 +49,7 @@ class GitPushService < BaseService
update_gitattributes if is_default_branch?
end
 
# Update merge requests that may be affected by this push. A new branch
# could cause the last commit of a merge request to change.
update_merge_requests
execute_related_hooks
perform_housekeeping
end
 
Loading
Loading
@@ -62,14 +59,24 @@ class GitPushService < BaseService
 
protected
 
def update_merge_requests
UpdateMergeRequestsWorker.perform_async(@project.id, current_user.id, params[:oldrev], params[:newrev], params[:ref])
def execute_related_hooks
# Update merge requests that may be affected by this push. A new branch
# could cause the last commit of a merge request to change.
#
UpdateMergeRequestsWorker
.perform_async(@project.id, current_user.id, params[:oldrev], params[:newrev], params[:ref])
 
EventCreateService.new.push(@project, current_user, build_push_data)
@project.execute_hooks(build_push_data.dup, :push_hooks)
@project.execute_services(build_push_data.dup, :push_hooks)
Ci::CreatePipelineService.new(@project, current_user, build_push_data).execute
ProjectCacheWorker.perform_async(@project.id)
if push_remove_branch?
AfterBranchDeleteService
.new(project, current_user)
.execute(branch_name)
end
end
 
def perform_housekeeping
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment