forked from Gitlink/forgeplus
71 lines
2.2 KiB
Ruby
71 lines
2.2 KiB
Ruby
class Ci::ProjectsController < Ci::BaseController
|
|
include RepositoriesHelper
|
|
include Ci::CloudAccountManageable
|
|
|
|
before_action :load_project
|
|
before_action :load_repo, only: [:update_trustie_pipeline, :activate, :deactivate]
|
|
before_action :authorize_owner!, only: [:authorize]
|
|
before_action :find_cloud_account, only: [:authorize, :activate, :deactivate]
|
|
|
|
def authorize
|
|
@user = current_user
|
|
end
|
|
|
|
# get .trustie-pipeline.yml file
|
|
def get_trustie_pipeline
|
|
file_path_uri = URI.parse('.trustie-pipeline.yml')
|
|
interactor = Repositories::EntriesInteractor.call(@project.owner, @project.identifier, file_path_uri, ref: params[:ref] || "master")
|
|
if interactor.success?
|
|
file = interactor.result
|
|
return render json: {} if file[:status]
|
|
|
|
json = {name: file['name'], path: file['path'], sha: file['sha'], content: render_decode64_content(file['content'])}
|
|
render json: json
|
|
end
|
|
end
|
|
|
|
def update_trustie_pipeline
|
|
interactor = Gitea::UpdateFileInteractor.call(current_user.gitea_token, params[:owner], params.merge(identifier: @project.identifier))
|
|
if interactor.success?
|
|
@file = interactor.result
|
|
render_result(1, "更新成功")
|
|
else
|
|
render_error(interactor.error)
|
|
end
|
|
end
|
|
|
|
def activate
|
|
return render_error('你还未认证') unless current_user.ci_certification?
|
|
|
|
begin
|
|
ActiveRecord::Base.transaction do
|
|
if @repo
|
|
return render_error('该项目已经激活') if @repo.repo_active?
|
|
@repo.activate!(@project)
|
|
return render_ok
|
|
else
|
|
@repo = Ci::Repo.auto_create!(@ci_user, @project)
|
|
@ci_user.update_column(:user_syncing, false)
|
|
end
|
|
|
|
result = bind_hook!(current_user, @cloud_account, @repo)
|
|
@project.update_columns(open_devops: true, gitea_webhook_id: result['id'])
|
|
@project.increment!(:open_devops_count)
|
|
@cloud_account.update_column(:ci_user_id, @ci_user.user_id)
|
|
end
|
|
render_ok
|
|
rescue Exception => ex
|
|
render_error(ex.message)
|
|
end
|
|
end
|
|
|
|
def deactivate
|
|
return render_error('该项目已经取消激活') if !@repo.repo_active?
|
|
|
|
@project.update_column(:open_devops, false)
|
|
@repo.deactivate_repos!
|
|
render_ok
|
|
end
|
|
|
|
end
|