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:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-11-14 11:41:52 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-11-14 11:41:52 +0300
commit585826cb22ecea5998a2c2a4675735c94bdeedac (patch)
tree5b05f0b30d33cef48963609e8a18a4dff260eab3 /lib/gitlab/seeders
parentdf221d036e5d0c6c0ee4d55b9c97f481ee05dee8 (diff)
Add latest changes from gitlab-org/gitlab@16-6-stable-eev16.6.0-rc42
Diffstat (limited to 'lib/gitlab/seeders')
-rw-r--r--lib/gitlab/seeders/ci/catalog/resource_seeder.rb114
1 files changed, 114 insertions, 0 deletions
diff --git a/lib/gitlab/seeders/ci/catalog/resource_seeder.rb b/lib/gitlab/seeders/ci/catalog/resource_seeder.rb
new file mode 100644
index 00000000000..2971dabe044
--- /dev/null
+++ b/lib/gitlab/seeders/ci/catalog/resource_seeder.rb
@@ -0,0 +1,114 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Seeders
+ module Ci
+ module Catalog
+ class ResourceSeeder
+ # This is currently disabled until it gets fixed: https://gitlab.com/gitlab-org/gitlab/-/issues/429649
+ # Initializes the class
+ #
+ # @param [String] Path of the group to find
+ # @param [Integer] Number of resources to create
+ def initialize(group_path:, seed_count:)
+ @group = Group.find_by_full_path(group_path)
+ @seed_count = seed_count
+ @current_user = @group&.first_owner
+ end
+
+ def seed
+ if @group.nil?
+ warn 'ERROR: Group was not found.'
+ return
+ end
+
+ @seed_count.times do |i|
+ create_ci_catalog_resource(i)
+ end
+ end
+
+ private
+
+ def create_project(name, index)
+ project = ::Projects::CreateService.new(
+ @current_user,
+ description: "This is Catalog resource ##{index}",
+ name: name,
+ namespace_id: @group.id,
+ path: name,
+ visibility_level: @group.visibility_level
+ ).execute
+
+ if project.saved?
+ project
+ else
+ warn project.errors.full_messages.to_sentence
+ nil
+ end
+ end
+
+ def create_template_yml(project)
+ template_content = <<~YAML
+ spec:
+ inputs:
+ stage:
+ default: test
+ ---
+ component-job:
+ script: echo job 1
+ stage: $[[ inputs.stage ]]
+ YAML
+
+ project.repository.create_file(
+ @current_user,
+ 'template.yml',
+ template_content,
+ message: 'Add template.yml',
+ branch_name: project.default_branch_or_main
+ )
+ end
+
+ def create_readme(project, index)
+ project.repository.create_file(
+ @current_user,
+ '/README.md',
+ "## Component stuff #{index}",
+ message: 'Add README.md',
+ branch_name: project.default_branch_or_main
+ )
+ end
+
+ def create_ci_catalog(project)
+ result = ::Ci::Catalog::Resources::CreateService.new(project, @current_user).execute
+ if result.success?
+ result.payload
+ else
+ warn "Project '#{project.name}' could not be converted to a Catalog resource"
+ nil
+ end
+ end
+
+ def create_ci_catalog_resource(index)
+ name = "ci_seed_resource_#{index}"
+
+ if Project.find_by_name(name).present?
+ warn "Project '#{name}' already exists!"
+ return
+ end
+
+ project = create_project(name, index)
+
+ return unless project
+
+ create_readme(project, index)
+ create_template_yml(project)
+
+ return unless create_ci_catalog(project)
+
+ warn "Project '#{name}' was saved successfully!"
+ end
+ end
+ end
+ end
+ end
+end