Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/factories/ci/deployable.rb')
-rw-r--r--spec/factories/ci/deployable.rb141
1 files changed, 141 insertions, 0 deletions
diff --git a/spec/factories/ci/deployable.rb b/spec/factories/ci/deployable.rb
new file mode 100644
index 00000000000..15b37e44e07
--- /dev/null
+++ b/spec/factories/ci/deployable.rb
@@ -0,0 +1,141 @@
+# frozen_string_literal: true
+
+module Factories
+ module Ci
+ module Deployable
+ def self.traits
+ <<-RUBY
+ trait :teardown_environment do
+ environment { 'staging' }
+ options do
+ {
+ script: %w(ls),
+ environment: { name: 'staging',
+ action: 'stop',
+ url: 'http://staging.example.com/$CI_JOB_NAME' }
+ }
+ end
+ end
+
+ trait :environment_with_deployment_tier do
+ environment { 'test_portal' }
+ options do
+ {
+ script: %w(ls),
+ environment: { name: 'test_portal',
+ action: 'start',
+ url: 'http://staging.example.com/$CI_JOB_NAME',
+ deployment_tier: 'testing' }
+ }
+ end
+ end
+
+ trait :deploy_to_production do
+ environment { 'production' }
+
+ options do
+ {
+ script: %w(ls),
+ environment: { name: 'production',
+ url: 'http://prd.example.com/$CI_JOB_NAME' }
+ }
+ end
+ end
+
+ trait :start_review_app do
+ environment { 'review/$CI_COMMIT_REF_NAME' }
+
+ options do
+ {
+ script: %w(ls),
+ environment: { name: 'review/$CI_COMMIT_REF_NAME',
+ url: 'http://staging.example.com/$CI_JOB_NAME',
+ on_stop: 'stop_review_app' }
+ }
+ end
+ end
+
+ trait :stop_review_app do
+ name { 'stop_review_app' }
+ environment { 'review/$CI_COMMIT_REF_NAME' }
+
+ options do
+ {
+ script: %w(ls),
+ environment: { name: 'review/$CI_COMMIT_REF_NAME',
+ url: 'http://staging.example.com/$CI_JOB_NAME',
+ action: 'stop' }
+ }
+ end
+ end
+
+ trait :prepare_staging do
+ name { 'prepare staging' }
+ environment { 'staging' }
+
+ options do
+ {
+ script: %w(ls),
+ environment: { name: 'staging', action: 'prepare' }
+ }
+ end
+
+ set_expanded_environment_name
+ end
+
+ trait :start_staging do
+ name { 'start staging' }
+ environment { 'staging' }
+
+ options do
+ {
+ script: %w(ls),
+ environment: { name: 'staging', action: 'start' }
+ }
+ end
+
+ set_expanded_environment_name
+ end
+
+ trait :stop_staging do
+ name { 'stop staging' }
+ environment { 'staging' }
+
+ options do
+ {
+ script: %w(ls),
+ environment: { name: 'staging', action: 'stop' }
+ }
+ end
+
+ set_expanded_environment_name
+ end
+
+ trait :set_expanded_environment_name do
+ after(:build) do |job, evaluator|
+ job.assign_attributes(
+ metadata_attributes: {
+ expanded_environment_name: job.expanded_environment_name
+ }
+ )
+ end
+ end
+
+ trait :with_deployment do
+ after(:build) do |job, evaluator|
+ ##
+ # Build deployment/environment relations if environment name is set
+ # to the job. If `job.deployment` has already been set, it doesn't
+ # build a new instance.
+ Environments::CreateForJobService.new.execute(job)
+ end
+
+ after(:create) do |job, evaluator|
+ Deployments::CreateForJobService.new.execute(job)
+ end
+ end
+ RUBY
+ end
+ end
+ end
+end