diff options
author | Alessio Caiazza <acaiazza@gitlab.com> | 2018-10-01 15:03:48 +0200 |
---|---|---|
committer | Alessio Caiazza <acaiazza@gitlab.com> | 2018-10-05 21:14:59 +0200 |
commit | 94fc0619365c7df284a29e76b1abc194a266efc2 (patch) | |
tree | 60770d1ed6013416831c0795ee66f30a3eb71760 /spec | |
parent | 1a90632cc9555d06edfa3a86808ab65f47558be9 (diff) | |
download | gitlab-ce-94fc0619365c7df284a29e76b1abc194a266efc2.tar.gz |
Add timed incremental rollout to Auto DevOps
Auto DevOps deployment strategies now supports timed incremental
rollout. We are deprecating the usage of INCREMENTAL_ROLLOUT_ENABLED
environment variable in Auto DevOps template.
The new behavior will be driven by the INCREMENTAL_ROLLOUT_MODE variable
that can either be manual (same as INCREMENTAL_ROLLOUT_ENABLED) or
timed.
Rollout deployments will be executed using a 5 minute delay between each
job.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/factories/project_auto_devops.rb | 12 | ||||
-rw-r--r-- | spec/models/project_auto_devops_spec.rb | 27 |
2 files changed, 27 insertions, 12 deletions
diff --git a/spec/factories/project_auto_devops.rb b/spec/factories/project_auto_devops.rb index b77f702f9e1..75ac7cc7687 100644 --- a/spec/factories/project_auto_devops.rb +++ b/spec/factories/project_auto_devops.rb @@ -5,8 +5,16 @@ FactoryBot.define do domain "example.com" deploy_strategy :continuous - trait :manual do - deploy_strategy :manual + trait :continuous_deployment do + deploy_strategy ProjectAutoDevops.deploy_strategies[:continuous] # rubocop:disable FactoryBot/DynamicAttributeDefinedStatically + end + + trait :manual_deployment do + deploy_strategy ProjectAutoDevops.deploy_strategies[:manual] # rubocop:disable FactoryBot/DynamicAttributeDefinedStatically + end + + trait :timed_incremental_deployment do + deploy_strategy ProjectAutoDevops.deploy_strategies[:timed_incremental] # rubocop:disable FactoryBot/DynamicAttributeDefinedStatically end trait :disabled do diff --git a/spec/models/project_auto_devops_spec.rb b/spec/models/project_auto_devops_spec.rb index 797d767465a..342798f730b 100644 --- a/spec/models/project_auto_devops_spec.rb +++ b/spec/models/project_auto_devops_spec.rb @@ -70,24 +70,31 @@ describe ProjectAutoDevops do end context 'when deploy_strategy is manual' do - let(:domain) { 'example.com' } - - before do - auto_devops.deploy_strategy = 'manual' + let(:auto_devops) { build_stubbed(:project_auto_devops, :manual_deployment, project: project) } + let(:expected_variables) do + [ + { key: 'INCREMENTAL_ROLLOUT_MODE', value: 'manual' }, + { key: 'STAGING_ENABLED', value: '1' }, + { key: 'INCREMENTAL_ROLLOUT_ENABLED', value: '1' } + ] end + it { expect(auto_devops.predefined_variables).to include(*expected_variables) } + end + + context 'when deploy_strategy is continuous' do + let(:auto_devops) { build_stubbed(:project_auto_devops, :continuous_deployment, project: project) } + it do expect(auto_devops.predefined_variables.map { |var| var[:key] }) - .to include("STAGING_ENABLED", "INCREMENTAL_ROLLOUT_ENABLED") + .not_to include("STAGING_ENABLED", "INCREMENTAL_ROLLOUT_ENABLED") end end - context 'when deploy_strategy is continuous' do - let(:domain) { 'example.com' } + context 'when deploy_strategy is timed_incremental' do + let(:auto_devops) { build_stubbed(:project_auto_devops, :timed_incremental_deployment, project: project) } - before do - auto_devops.deploy_strategy = 'continuous' - end + it { expect(auto_devops.predefined_variables).to include(key: 'INCREMENTAL_ROLLOUT_MODE', value: 'timed') } it do expect(auto_devops.predefined_variables.map { |var| var[:key] }) |