Commit 3726dc4b authored by Grzegorz Bizon's avatar Grzegorz Bizon

Check if project exists before creating deployment

parent 4e934259
...@@ -2,6 +2,8 @@ require_relative 'base_service' ...@@ -2,6 +2,8 @@ require_relative 'base_service'
class CreateDeploymentService < BaseService class CreateDeploymentService < BaseService
def execute(deployable = nil) def execute(deployable = nil)
return unless executable?
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
@deployable = deployable @deployable = deployable
@environment = prepare_environment @environment = prepare_environment
...@@ -14,6 +16,10 @@ class CreateDeploymentService < BaseService ...@@ -14,6 +16,10 @@ class CreateDeploymentService < BaseService
private private
def executable?
project && name.present?
end
def deploy def deploy
project.deployments.create( project.deployments.create(
environment: @environment, environment: @environment,
......
...@@ -4,8 +4,6 @@ class BuildSuccessWorker ...@@ -4,8 +4,6 @@ class BuildSuccessWorker
def perform(build_id) def perform(build_id)
Ci::Build.find_by(id: build_id).try do |build| Ci::Build.find_by(id: build_id).try do |build|
return unless build.project
create_deployment(build) create_deployment(build)
end end
end end
......
...@@ -84,6 +84,17 @@ describe CreateDeploymentService, services: true do ...@@ -84,6 +84,17 @@ describe CreateDeploymentService, services: true do
expect(subject).to be_persisted expect(subject).to be_persisted
end end
end end
context 'when project was removed' do
let(:project) { nil }
it 'does not create deployment or environment' do
expect { subject }.not_to raise_error
expect(Environment.count).to be_zero
expect(Deployment.count).to be_zero
end
end
end end
describe 'processing of builds' do describe 'processing of builds' do
......
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