Commit 4a7fcc2a authored by Grzegorz Bizon's avatar Grzegorz Bizon

Stop environments for branch after branch removal

parent 5328e3b1
...@@ -1289,12 +1289,12 @@ class Project < ActiveRecord::Base ...@@ -1289,12 +1289,12 @@ class Project < ActiveRecord::Base
end end
def environments_for(ref, commit: nil, with_tags: false) def environments_for(ref, commit: nil, with_tags: false)
environments_query = with_tags ? 'ref=? OR tag IS TRUE' : 'ref=?' environments_query = with_tags ? 'ref = ? OR tag IS TRUE' : 'ref = ?'
environment_ids = deployments environment_ids = deployments
.group(:environment_id) .group(:environment_id)
.select(:environment_id) .select(:environment_id)
.where(environments_query, ref) .where(environments_query, ref.to_s)
envs = environments.available.where(id: environment_ids) envs = environments.available.where(id: environment_ids)
......
...@@ -203,7 +203,7 @@ class Repository ...@@ -203,7 +203,7 @@ class Repository
update_ref!(ref, newrev, oldrev) update_ref!(ref, newrev, oldrev)
end end
after_remove_branch after_remove_branch(user, branch_name)
true true
end end
...@@ -524,7 +524,12 @@ class Repository ...@@ -524,7 +524,12 @@ class Repository
end end
# Runs code after an existing branch has been removed. # Runs code after an existing branch has been removed.
def after_remove_branch def after_remove_branch(user, branch_name)
expire_branch_cache_after_removal
stop_environments_for_branch(user, branch_name)
end
def expire_branch_cache_after_removal
expire_has_visible_content_cache expire_has_visible_content_cache
expire_branch_count_cache expire_branch_count_cache
expire_branches_cache expire_branches_cache
...@@ -1165,4 +1170,10 @@ class Repository ...@@ -1165,4 +1170,10 @@ class Repository
def repository_event(event, tags = {}) def repository_event(event, tags = {})
Gitlab::Metrics.add_event(event, { path: path_with_namespace }.merge(tags)) Gitlab::Metrics.add_event(event, { path: path_with_namespace }.merge(tags))
end end
def stop_environments_for_branch(user, branch_name)
Ci::StopEnvironmentService
.new(@project, user)
.execute(branch_name)
end
end end
...@@ -21,8 +21,6 @@ class DeleteBranchService < BaseService ...@@ -21,8 +21,6 @@ class DeleteBranchService < BaseService
return error('You dont have push access to repo', 405) return error('You dont have push access to repo', 405)
end end
# StopEnvironmentService
if repository.rm_branch(current_user, branch_name) if repository.rm_branch(current_user, branch_name)
success('Branch was removed') success('Branch was removed')
else else
......
...@@ -21,7 +21,7 @@ class GitPushService < BaseService ...@@ -21,7 +21,7 @@ class GitPushService < BaseService
@project.repository.after_push_commit(branch_name, params[:newrev]) @project.repository.after_push_commit(branch_name, params[:newrev])
if push_remove_branch? if push_remove_branch?
@project.repository.after_remove_branch @project.repository.after_remove_branch(current_user, branch_name)
@push_commits = [] @push_commits = []
elsif push_to_new_branch? elsif push_to_new_branch?
@project.repository.after_create_branch @project.repository.after_create_branch
......
...@@ -111,7 +111,7 @@ module Gitlab ...@@ -111,7 +111,7 @@ module Gitlab
end end
end end
project.repository.after_remove_branch project.repository.expire_branch_cache_after_removal
end end
def restore_source_branch(pull_request) def restore_source_branch(pull_request)
......
...@@ -1182,7 +1182,18 @@ describe Repository, models: true do ...@@ -1182,7 +1182,18 @@ describe Repository, models: true do
it 'flushes the visible content cache' do it 'flushes the visible content cache' do
expect(repository).to receive(:expire_has_visible_content_cache) expect(repository).to receive(:expire_has_visible_content_cache)
repository.after_remove_branch repository.after_remove_branch(user, 'master')
end
context 'when there is environment with review app available for branch' do
before do
create(:environment, :with_review_app, project: project)
end
it 'stops environment' do
expect_any_instance_of(Environment).to receive(:stop!)
repository.after_remove_branch(user, 'master')
end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment