diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-11-14 11:41:52 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-11-14 11:41:52 +0300 |
commit | 585826cb22ecea5998a2c2a4675735c94bdeedac (patch) | |
tree | 5b05f0b30d33cef48963609e8a18a4dff260eab3 /lib/gitlab/seeders | |
parent | df221d036e5d0c6c0ee4d55b9c97f481ee05dee8 (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.rb | 114 |
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 |