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 'lib/gitlab/seeders/ci/variables_group_seeder.rb')
-rw-r--r--lib/gitlab/seeders/ci/variables_group_seeder.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/lib/gitlab/seeders/ci/variables_group_seeder.rb b/lib/gitlab/seeders/ci/variables_group_seeder.rb
new file mode 100644
index 00000000000..e5c5ee4b75f
--- /dev/null
+++ b/lib/gitlab/seeders/ci/variables_group_seeder.rb
@@ -0,0 +1,53 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Seeders
+ module Ci
+ class VariablesGroupSeeder
+ DEFAULT_SEED_COUNT = 10
+ DEFAULT_PREFIX = 'GROUP_VAR_'
+ DEFAULT_ENV = '*'
+
+ def initialize(params)
+ @group = Group.find_by_name(params[:name])
+ @seed_count = params[:seed_count] || DEFAULT_SEED_COUNT
+ @environment_scope = params[:environment_scope] || DEFAULT_ENV
+ @prefix = params[:prefix] || DEFAULT_PREFIX
+ end
+
+ def seed
+ if @group.nil?
+ warn 'ERROR: Group name is invalid.'
+ return
+ end
+
+ max_id = group.variables.maximum(:id).to_i
+ seed_count.times do
+ max_id += 1
+ create_ci_variable(max_id)
+ end
+ end
+
+ private
+
+ attr_reader :environment_scope, :group, :prefix, :seed_count
+
+ def create_ci_variable(id)
+ env = environment_scope == 'unique' ? "env_#{id}" : environment_scope
+ key = "#{prefix}#{id}"
+
+ if group.variables.by_environment_scope(env).find_by_key(key).present?
+ warn "WARNING: Group CI Variable with key '#{key}' already exists. Skipping to next CI variable..."
+ return
+ end
+
+ group.variables.create(
+ environment_scope: env,
+ key: key,
+ value: SecureRandom.hex(32)
+ )
+ end
+ end
+ end
+ end
+end