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,11 +84,22 @@ describe CreateDeploymentService, services: true do ...@@ -84,11 +84,22 @@ 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
let(:environment) { nil } let(:environment) { nil }
shared_examples 'does not create environment and deployment' do shared_examples 'does not create environment and deployment' do
it 'does not create a new environment' do it 'does not create a new environment' do
expect { subject }.not_to change { Environment.count } expect { subject }.not_to change { Environment.count }
...@@ -133,12 +144,12 @@ describe CreateDeploymentService, services: true do ...@@ -133,12 +144,12 @@ describe CreateDeploymentService, services: true do
context 'without environment specified' do context 'without environment specified' do
let(:build) { create(:ci_build, project: project) } let(:build) { create(:ci_build, project: project) }
it_behaves_like 'does not create environment and deployment' do it_behaves_like 'does not create environment and deployment' do
subject { build.success } subject { build.success }
end end
end end
context 'when environment is specified' do context 'when environment is specified' do
let(:pipeline) { create(:ci_pipeline, project: project) } let(:pipeline) { create(:ci_pipeline, project: project) }
let(:build) { create(:ci_build, pipeline: pipeline, environment: 'production', options: options) } let(:build) { create(:ci_build, pipeline: pipeline, environment: 'production', options: options) }
......
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