class ObRepositorySyncsController < ApplicationController before_action :require_login before_action :load_project before_action :load_ob_repository_sync, except: [:create] before_action :authenticate_user! def index render_ok(data: @ob_repository_sync) end def create tip_exception "参数错误" if params[:github_address].blank? && params[:gitee_address].blank? project_name ="#{@project.owner.name}:#{@project.identifier}" service = ObRepositorySync::ApiService.new(project_name) project_params = params.merge({ "gitlink_address": @project.repository.url }) res = service.create_projects(project_params) tip_exception "保存失败: #{res["msg"]}" if res["code"].to_s != "200" sync_id = res["data"]["id"] ob_repository_sync = ObRepositorySync.find_or_initialize_by(project_id: @project.id) ob_repository_sync.project_id = @project.id ob_repository_sync.user_id = current_user.id ob_repository_sync.name = project_name ob_repository_sync.github_address = "#{params[:github_address]}" ob_repository_sync.gitee_address = "#{params[:gitee_address]}" ob_repository_sync.gitlink_address = @project.repository.url ob_repository_sync.github_token = "#{params[:github_token]}" ob_repository_sync.gitee_token = "#{params[:gitee_token]}" ob_repository_sync.sync_id = sync_id ob_repository_sync.save! render_ok end def delete service = ObRepositorySync::ApiService.new(@ob_repository_sync.name) res = service.delete_project @ob_repository_sync.sync_id tip_exception "保存失败: #{res["msg"]}" if res["code"].to_s != "200" if res["code"].to_s == "200" @ob_repository_sync.destroy! end end def jobs tip_exception "该项目未创建同步任务" if @ob_repository_sync.blank? service = ObRepositorySync::ApiService.new(@ob_repository_sync.name) res = service.get_projects_jobs render_ok(count: res["data"]["total"], data: res["data"]["list"]) end def create_jobs service = ObRepositorySync::ApiService.new(@ob_repository_sync.name) res = service.create_projects_jobs(params) tip_exception "保存失败: #{res["msg"]}" if res["code"].to_s != "200" job_id = res["data"]["id"] job = ObRepositorySyncJob.new job.ob_repository_sync_id = @ob_repository_sync.id job.github_branch = "#{params[:github_branch]}" job.gitee_branch = "#{params[:gitee_branch]}" job.gitlink_branch = "#{params[:gitlink_branch]}" job.job_type = "#{params[:type]}" job.base = "#{params[:base]}" job.job_id = job_id job.save render_ok end def delete_job tip_exception "缺少参数job_id" if params[:job_id].blank? service = ObRepositorySync::ApiService.new(@ob_repository_sync.name) res = service.delete_job params[:job_id] tip_exception "保存失败: #{res["msg"]}" if res["code"].to_s != "200" @ob_repository_sync.destroy! render_ok end def start_job tip_exception "缺少参数job_id" if params[:job_id].blank? service = ObRepositorySync::ApiService.new(@ob_repository_sync.name) res = service.start_job params[:job_id] tip_exception "启动错误: #{res["msg"]}" if res["code"].to_s != "200" render_ok end def stop_job tip_exception "缺少参数job_id" if params[:job_id].blank? service = ObRepositorySync::ApiService.new(@ob_repository_sync.name) res = service.stop_job params[:job_id] tip_exception "停止错误: #{res["msg"]}" if res["code"].to_s != "200" render_ok end def job_logs tip_exception "该项目未创建同步任务" if @ob_repository_sync.blank? tip_exception "缺少参数job_id" if params[:job_id].blank? service = ObRepositorySync::ApiService.new(@ob_repository_sync.name) @data = service.job_logs params[:job_id] tip_exception "请求错误: #{res["msg"]}" if res["code"].to_s != "200" render_ok(count: res["data"]["total"], data: res["data"]["list"]) end private def load_ob_repository_sync @ob_repository_sync = ObRepositorySync.find_by(project_id: @project.id) end def authenticate_user! return if @project.member?(current_user) || current_user.admin? render_forbidden('你没有权限操作') end end