Merge branch 'ignore-environment-validation-failure' into 'master'
Ignore environment validation failure See merge request gitlab-org/gitlab-ce!23100
This commit is contained in:
commit
0f25d2b33f
4 changed files with 78 additions and 0 deletions
|
@ -13,6 +13,10 @@ module Deployable
|
||||||
name: expanded_environment_name
|
name: expanded_environment_name
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# If we failed to persist envirionment record by validation error, such as name with invalid character,
|
||||||
|
# the job will fall back to a non-environment job.
|
||||||
|
return unless environment.persisted?
|
||||||
|
|
||||||
create_deployment!(
|
create_deployment!(
|
||||||
project_id: environment.project_id,
|
project_id: environment.project_id,
|
||||||
environment: environment,
|
environment: environment,
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Ignore environment validation failure
|
||||||
|
merge_request: 23100
|
||||||
|
author:
|
||||||
|
type: fixed
|
|
@ -49,5 +49,26 @@ describe Deployable do
|
||||||
expect(environment).to be_nil
|
expect(environment).to be_nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when environment scope contains invalid character' do
|
||||||
|
let(:job) do
|
||||||
|
create(
|
||||||
|
:ci_build,
|
||||||
|
name: 'job:deploy-to-test-site',
|
||||||
|
environment: '$CI_JOB_NAME',
|
||||||
|
options: {
|
||||||
|
environment: {
|
||||||
|
name: '$CI_JOB_NAME',
|
||||||
|
url: 'http://staging.example.com/$CI_JOB_NAME',
|
||||||
|
on_stop: 'stop_review_app'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not create a deployment and environment record' do
|
||||||
|
expect(deployment).to be_nil
|
||||||
|
expect(environment).to be_nil
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -608,5 +608,53 @@ describe Ci::CreatePipelineService do
|
||||||
.to eq variables_attributes.map(&:with_indifferent_access)
|
.to eq variables_attributes.map(&:with_indifferent_access)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when pipeline has a job with environment' do
|
||||||
|
let(:pipeline) { execute_service }
|
||||||
|
|
||||||
|
before do
|
||||||
|
stub_ci_pipeline_yaml_file(YAML.dump(config))
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when environment name is valid' do
|
||||||
|
let(:config) do
|
||||||
|
{
|
||||||
|
review_app: {
|
||||||
|
script: 'deploy',
|
||||||
|
environment: {
|
||||||
|
name: 'review/${CI_COMMIT_REF_NAME}',
|
||||||
|
url: 'http://${CI_COMMIT_REF_SLUG}-staging.example.com'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'has a job with environment' do
|
||||||
|
expect(pipeline.builds.count).to eq(1)
|
||||||
|
expect(pipeline.builds.first.persisted_environment.name).to eq('review/master')
|
||||||
|
expect(pipeline.builds.first.deployment).to be_created
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when environment name is invalid' do
|
||||||
|
let(:config) do
|
||||||
|
{
|
||||||
|
'job:deploy-to-test-site': {
|
||||||
|
script: 'deploy',
|
||||||
|
environment: {
|
||||||
|
name: '${CI_JOB_NAME}',
|
||||||
|
url: 'https://$APP_URL'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'has a job without environment' do
|
||||||
|
expect(pipeline.builds.count).to eq(1)
|
||||||
|
expect(pipeline.builds.first.persisted_environment).to be_nil
|
||||||
|
expect(pipeline.builds.first.deployment).to be_nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue