2015-08-25 21:42:46 -04:00
|
|
|
module Ci
|
|
|
|
class CreateProjectService
|
|
|
|
include Gitlab::Application.routes.url_helpers
|
|
|
|
|
2015-09-16 05:43:16 -04:00
|
|
|
def execute(current_user, params, forked_project = nil)
|
2015-08-25 21:42:46 -04:00
|
|
|
@project = Ci::Project.parse(params)
|
|
|
|
|
|
|
|
Ci::Project.transaction do
|
|
|
|
@project.save!
|
|
|
|
|
2015-09-11 07:38:37 -04:00
|
|
|
gl_project = ::Project.find(@project.gitlab_id)
|
|
|
|
gl_project.build_missing_services
|
2015-09-16 05:43:16 -04:00
|
|
|
gl_project.gitlab_ci_service.update_attributes(active: true, token: @project.token)
|
2015-08-25 21:42:46 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
if forked_project
|
|
|
|
# Copy settings
|
|
|
|
settings = forked_project.attributes.select do |attr_name, value|
|
|
|
|
["public", "shared_runners_enabled", "allow_git_fetch"].include? attr_name
|
|
|
|
end
|
|
|
|
|
|
|
|
@project.update(settings)
|
|
|
|
end
|
|
|
|
|
|
|
|
Ci::EventService.new.create_project(current_user, @project)
|
|
|
|
|
|
|
|
@project
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|