Skip to content
代码片段 群组 项目
未验证 提交 2ebc2bfa 编辑于 作者: Zamir Martins's avatar Zamir Martins 提交者: GitLab
浏览文件

Add seed for group level dependencies

上级 e51c984c
No related branches found
No related tags found
无相关合并请求
......@@ -166,6 +166,12 @@ bundle exec rake "gitlab:seed:project_environments[flightjs/Flight]"
bundle exec rake "gitlab:seed:project_environments[flightjs/Flight, 25, FLIGHT_ENV_]"
```
#### Seed a group with dependencies
```shell
bundle exec rake gitlab:seed:dependencies
```
#### Seed CI variables
You can seed a project, group, or instance with [CI variables](../ci/variables/index.md).
......
# frozen_string_literal: true
module Quality
module Seeders
class Dependencies
UNIQUE_COMPONENT_COUNT = 3
PROJECT_COUNT = 2
def initialize
create_new_group
end
def seed!
seed_data!
end
private
attr_reader :group
def seed_data!
PROJECT_COUNT.times do
project = create_new_project
pipeline = create_pipeline(project)
create_sbom_records(pipeline)
end
puts "Successfully seeded '#{group.full_path}' for Dependency list!"
puts "URL: #{Rails.application.routes.url_helpers.group_url(group)}"
end
def create_new_group
suffix = generate_suffix
@group = FactoryBot.create(
:group,
name: "Group level dependencies #{suffix}",
path: "group-level-dependencies-#{suffix}"
)
group.add_owner(admin)
end
def create_new_project
suffix = generate_suffix
FactoryBot.create(
:project,
:repository,
name: "Project level dependencies #{suffix}",
path: "project-level-dependencies-#{suffix}",
creator: admin,
namespace: group
)
end
def create_pipeline(project)
default_branch = project.default_branch
FactoryBot.create(
:ci_pipeline,
:success,
project: project,
ref: default_branch
)
end
def create_sbom_records(pipeline)
component_versions.each do |component_version|
create_occurrences(component_version, pipeline)
create_occurrences(component_version, pipeline)
end
end
def create_occurrences(component_version, pipeline)
project = pipeline.project
source = FactoryBot.create(:sbom_source, input_file_path: "qa-#{generate_suffix}/package-lock.json")
FactoryBot.create(
:sbom_occurrence,
component_version: component_version,
source: source,
project: project,
pipeline: pipeline)
end
def component_versions
@component_versions ||= Array.new(UNIQUE_COMPONENT_COUNT) do |i|
component = FactoryBot.create(:sbom_component, name: "component-#{generate_suffix}-#{i}")
FactoryBot.create(:sbom_component_version, component: component)
end
end
def admin
@admin ||= User.admins.first
end
def generate_suffix
Time.now.to_i
end
end
end
end
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Quality::Seeders::Dependencies, feature_category: :dependency_management do
let_it_be(:admin) { create(:admin) }
subject(:seed) { described_class.new }
it 'creates a new group' do
expect { seed }.to change { Group.count }.by(1)
end
describe '#seed!' do
it 'creates expected number of dependencies' do
expected_value = described_class::UNIQUE_COMPONENT_COUNT * described_class::PROJECT_COUNT * 2
expect { seed.seed! }.to change { Sbom::Occurrence.count }.by(expected_value)
end
end
end
......@@ -88,5 +88,13 @@ namespace :gitlab do
puts "\nDone."
end
end
desc "GitLab | Seed | Seed a new group with dependencies"
task :dependencies, [] => :environment do |t, args|
puts "\nSeeding a new group with dependencies"
seeder = Quality::Seeders::Dependencies.new
seeder.seed!
puts "\nDone."
end
end
end
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册