From 8ec3e4bbaa7ed39a59af125afdc45c95005d6bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Wed, 10 Aug 2022 16:06:11 +0800 Subject: [PATCH 1/9] =?UTF-8?q?fixed=20Gitea::PullRequest::FilesService?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/gitea/pull_request/files_service.rb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/app/services/gitea/pull_request/files_service.rb b/app/services/gitea/pull_request/files_service.rb index a8cb26627..f7a2bd750 100644 --- a/app/services/gitea/pull_request/files_service.rb +++ b/app/services/gitea/pull_request/files_service.rb @@ -1,6 +1,6 @@ # List pull requests files class Gitea::PullRequest::FilesService < Gitea::ClientService - attr_reader :owner, :repo, :pull_number, :token + attr_reader :owner, :repo, :pull_number, :token, :params # GET /repos/{owner}/{repo}/pulls/{pull_number}/files # owner: 用户 @@ -8,22 +8,23 @@ class Gitea::PullRequest::FilesService < Gitea::ClientService # pull_number: pull request主键id # eg: # Gitea::PullRequest::FilesService.call('jasder', 'repo_identifier', 1) - def initialize(owner, repo, pull_number, token=nil) + def initialize(owner, repo, pull_number, token=nil, params={}) @owner = owner @repo = repo @token = token @pull_number = pull_number + @params = params end def call - response = get(url, params) + response = get(url, params.merge(token: token)) render_result(response) end private - def params - Hash.new.merge(token: token) - end + # def params + # Hash.new.merge(token: token) + # end def url "/repos/#{owner}/#{repo}/pulls/#{pull_number}/files".freeze From 32db15aad585d6d7005e6ba35e71d1cbb3f2fc0b Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 11 Aug 2022 09:29:12 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20commit=E6=89=BE?= =?UTF-8?q?=E4=B8=8D=E5=88=B0=E8=BF=94=E5=9B=9E404?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index fdec82b66..32bb1f0eb 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -137,6 +137,7 @@ class RepositoriesController < ApplicationController else @commit = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, current_user&.gitea_token) @commit_diff = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, current_user&.gitea_token, {diff: true}) + render_error(@commit[:message], @commit[:status]) if @commit.has_key?(:status) || @commit_diff.has_key?(:status) end end From 48846a7e31810a6d9cb631701c7902023358965d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Wed, 10 Aug 2022 16:07:20 +0800 Subject: [PATCH 3/9] =?UTF-8?q?fixed=20=E5=B7=B2=E8=AF=BB=E6=9C=AA?= =?UTF-8?q?=E8=AF=BB=E6=A0=87=E8=AE=B0=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/mark_files_controller.rb | 41 ++++++++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/app/controllers/mark_files_controller.rb b/app/controllers/mark_files_controller.rb index 88856c35a..a7ec304fd 100644 --- a/app/controllers/mark_files_controller.rb +++ b/app/controllers/mark_files_controller.rb @@ -4,17 +4,44 @@ class MarkFilesController < ApplicationController before_action :load_pull_request def index - @files_result = Gitea::PullRequest::FilesService.call(@owner.login, @project.identifier, @pull_request.gitea_number, current_user&.gitea_token) - - MarkFile.bulk_insert(*%i[pull_request_id, file_path_sha file_path created_at updated_at]) do |worker| - @files_result['Files'].echo do |file| - worker.add(pull_request_id: @pull_request.id, file_path_sha: SecureRandom.uuid.gsub("-", ""), file_path: file['Name']) - end - end + @files_result = Gitea::PullRequest::FilesService.call(@owner.login, @project.identifier, @pull_request.gitea_number, current_user&.gitea_token, { "only-file-name": true }) @mark_files = MarkFile.where(pull_request_id: @pull_request.id) end def create + # unless @pull_request.mark_files.present? + # MarkFile.bulk_insert(*%i[pull_request_id, file_path_sha file_path created_at updated_at]) do |worker| + # @files_result['Files'].each do |file| + # worker.add(pull_request_id: @pull_request.id, file_path_sha: SecureRandom.uuid.gsub("-", ""), file_path: file['Name']) + # end + # end + # end + end + + def mark_file_as_unread + tip_exception "参数错误" if params[:file_path_sha].blank? + file_path = Base64.strict_decode64(params[:file_path_sha].to_s) + mark_file = @pull_request.mark_files.find_or_initialize_by(file_path_sha: params[:file_path_sha]) + mark_file.file_path = file_path + mark_file.user_id = current_user.id + mark_file.mark_as_read = false + mark_file.save + render_ok + rescue Exception => e + tip_exception "参数解析错误" + end + + def mark_file_as_read + tip_exception "参数错误" if params[:file_path_sha].blank? + file_path = Base64.strict_decode64(params[:file_path_sha].to_s) + mark_file = @pull_request.mark_files.find_or_initialize_by(file_path_sha: params[:file_path_sha]) + mark_file.file_path = file_path + mark_file.user_id = current_user.id + mark_file.mark_as_read = true + mark_file.save + render_ok + rescue Exception => e + tip_exception "参数解析错误" end private From 7e48e5e8b80b94d652833a19297333655532abd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Wed, 10 Aug 2022 16:54:00 +0800 Subject: [PATCH 4/9] =?UTF-8?q?fixed=20=E6=B6=88=E6=81=AF=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/admins/message_templates_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/admins/message_templates_controller.rb b/app/controllers/admins/message_templates_controller.rb index af77858e1..dbe63a66b 100644 --- a/app/controllers/admins/message_templates_controller.rb +++ b/app/controllers/admins/message_templates_controller.rb @@ -11,7 +11,7 @@ class Admins::MessageTemplatesController < Admins::BaseController end def create - @message_template = MessageTemplate::CustomTip.new(ignore_params) + @message_template = MessageTemplate::CustomTip.new(message_template_params) if @message_template.save! redirect_to admins_message_templates_path From 964bef789654962b835beeb5fd46597ab1dffdec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Wed, 10 Aug 2022 17:20:29 +0800 Subject: [PATCH 5/9] =?UTF-8?q?fixed=20=E6=B6=88=E6=81=AF=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E9=85=8D=E7=BD=AEtype?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/admins/message_templates_controller.rb | 5 +++-- app/models/message_template.rb | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/controllers/admins/message_templates_controller.rb b/app/controllers/admins/message_templates_controller.rb index dbe63a66b..79a4bbc8b 100644 --- a/app/controllers/admins/message_templates_controller.rb +++ b/app/controllers/admins/message_templates_controller.rb @@ -10,7 +10,7 @@ class Admins::MessageTemplatesController < Admins::BaseController @message_template = MessageTemplate::CustomTip.new end - def create + def create @message_template = MessageTemplate::CustomTip.new(message_template_params) if @message_template.save! @@ -47,7 +47,8 @@ class Admins::MessageTemplatesController < Admins::BaseController private def message_template_params - params.require(@message_template.type.split("::").join("_").underscore.to_sym).permit! + type = @message_template.present? ? @message_template.type : "MessageTemplate::CustomTip" + params.require(type.split("::").join("_").underscore.to_sym).permit! end def get_template diff --git a/app/models/message_template.rb b/app/models/message_template.rb index 50de7d8ef..ec761ddcf 100644 --- a/app/models/message_template.rb +++ b/app/models/message_template.rb @@ -13,6 +13,7 @@ # class MessageTemplate < ApplicationRecord + self.inheritance_column = nil PLATFORM = 'GitLink' def self.build_init_data From ad8fed944037360539367470536902698404ea69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Wed, 10 Aug 2022 17:23:27 +0800 Subject: [PATCH 6/9] =?UTF-8?q?fixed=20=E6=B6=88=E6=81=AF=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E9=85=8D=E7=BD=AEtype?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/message_template.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/message_template.rb b/app/models/message_template.rb index ec761ddcf..bc6c5a714 100644 --- a/app/models/message_template.rb +++ b/app/models/message_template.rb @@ -114,6 +114,6 @@ class MessageTemplate < ApplicationRecord end def simple_type - self.type.split("::")[-1] + self.type.to_s.split("::")[-1] end end From 5c4930a362a2d5b89b8503e66fb41a7674ecbdb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Wed, 10 Aug 2022 17:25:55 +0800 Subject: [PATCH 7/9] =?UTF-8?q?fixed=20=E6=B6=88=E6=81=AF=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E9=85=8D=E7=BD=AEtype?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/admins/message_templates_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/admins/message_templates_controller.rb b/app/controllers/admins/message_templates_controller.rb index 79a4bbc8b..291a1b3f5 100644 --- a/app/controllers/admins/message_templates_controller.rb +++ b/app/controllers/admins/message_templates_controller.rb @@ -12,7 +12,7 @@ class Admins::MessageTemplatesController < Admins::BaseController def create @message_template = MessageTemplate::CustomTip.new(message_template_params) - + @message_template.type = "MessageTemplate::CustomTip" if @message_template.save! redirect_to admins_message_templates_path flash[:success] = "创建消息模板成功" From 716b29c25fa35df9046abf41cbf3c06c5c57f0fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Wed, 10 Aug 2022 17:43:27 +0800 Subject: [PATCH 8/9] =?UTF-8?q?fixed=20=E6=B6=88=E6=81=AF=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E9=85=8D=E7=BD=AEtype?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/admins/message_templates_controller.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/controllers/admins/message_templates_controller.rb b/app/controllers/admins/message_templates_controller.rb index 291a1b3f5..87a3ccfe7 100644 --- a/app/controllers/admins/message_templates_controller.rb +++ b/app/controllers/admins/message_templates_controller.rb @@ -7,7 +7,7 @@ class Admins::MessageTemplatesController < Admins::BaseController end def new - @message_template = MessageTemplate::CustomTip.new + @message_template = MessageTemplate.new end def create @@ -47,8 +47,9 @@ class Admins::MessageTemplatesController < Admins::BaseController private def message_template_params - type = @message_template.present? ? @message_template.type : "MessageTemplate::CustomTip" - params.require(type.split("::").join("_").underscore.to_sym).permit! + # type = @message_template.present? ? @message_template.type : "MessageTemplate::CustomTip" + # params.require(type.split("::").join("_").underscore.to_sym).permit! + params.require(:message_template).permit! end def get_template From 6ec7a1329316dc0072aab898c4d42b333a3e1624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Thu, 11 Aug 2022 09:31:40 +0800 Subject: [PATCH 9/9] =?UTF-8?q?fixed=20reposyncer=20=E5=88=86=E6=94=AF?= =?UTF-8?q?=E7=BB=84=E5=90=88=E5=B7=B2=E9=85=8D=E7=BD=AE=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ob_repository_syncs_controller.rb | 27 ++++++++++++++----- .../ob_repository_sync/api_service.rb | 14 +++++----- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/app/controllers/ob_repository_syncs_controller.rb b/app/controllers/ob_repository_syncs_controller.rb index 107320934..ebae8e427 100644 --- a/app/controllers/ob_repository_syncs_controller.rb +++ b/app/controllers/ob_repository_syncs_controller.rb @@ -13,7 +13,8 @@ class ObRepositorySyncsController < ApplicationController 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 }) + domain = GiteaService.gitea_config[:domain] + project_params = params.merge({ "gitlink_address": "#{domain}/#{@project.owner&.login}/#{@project.identifier}.git" }) res = service.create_projects(project_params) tip_exception "保存失败: #{res["msg"]}" if res["code"].to_s != "200" sync_id = res["data"]["id"] @@ -23,7 +24,6 @@ class ObRepositorySyncsController < ApplicationController 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 @@ -38,16 +38,30 @@ class ObRepositorySyncsController < ApplicationController if res["code"].to_s == "200" @ob_repository_sync.destroy! end + render_ok 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"]) + data = res["data"]["list"] + if params[:type] && params[:type].to_s.downcase == "github" + data = data.select { |row| row["github_branch"].present? } + elsif params[:type] && params[:type].to_s.downcase == "gitee" + data = data.select { |row| row["gitee_branch"].present? } + end + render_ok(count: res["data"]["total"], data: data) end def create_jobs + tip_exception "必须配置一个分支" if params[:github_branch].blank? && params[:gitee_branch].blank? && params[:gitlink_branch].blank? + ob_jobs = ObRepositorySyncJob.where(ob_repository_sync_id: @ob_repository_sync.id) + ob_jobs = ob_jobs.where(job_type: params[:job_type]) if params[:job_type].present? + ob_jobs = ob_jobs.where(github_branch: params[:github_branch]) if params[:github_branch].present? + ob_jobs = ob_jobs.where(gitee_branch: params[:gitee_branch]) if params[:gitee_branch].present? + ob_jobs = ob_jobs.where(gitlink_branch: params[:gitlink_branch]) if params[:gitlink_branch].present? + tip_exception "该分支组合已配置,不能重复!" if ob_jobs.count > 0 service = ObRepositorySync::ApiService.new(@ob_repository_sync.name) res = service.create_projects_jobs(params) tip_exception "保存失败: #{res["msg"]}" if res["code"].to_s != "200" @@ -57,7 +71,7 @@ class ObRepositorySyncsController < ApplicationController job.github_branch = "#{params[:github_branch]}" job.gitee_branch = "#{params[:gitee_branch]}" job.gitlink_branch = "#{params[:gitlink_branch]}" - job.job_type = "#{params[:type]}" + job.job_type = "#{params[:job_type]}" job.base = "#{params[:base]}" job.job_id = job_id job.save @@ -70,7 +84,8 @@ class ObRepositorySyncsController < ApplicationController 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! + job = ObRepositorySyncJob.find_by(ob_repository_sync_id: @ob_repository_sync.id, job_id: params[:job_id]) + job.destroy! if job.present? render_ok end @@ -94,7 +109,7 @@ class ObRepositorySyncsController < ApplicationController 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] + res = 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 diff --git a/app/services/ob_repository_sync/api_service.rb b/app/services/ob_repository_sync/api_service.rb index 7bed888e6..5ecd48afa 100644 --- a/app/services/ob_repository_sync/api_service.rb +++ b/app/services/ob_repository_sync/api_service.rb @@ -15,7 +15,9 @@ class ObRepositorySync::ApiService < ApplicationService "github_address": "#{params[:github_address]}", "gitee_address": "#{params[:gitee_address]}", "github_token": "#{params[:github_token]}", - "gitee_token": "#{params[:gitee_token]}" + "gitee_token": "#{params[:gitee_token]}", + "gitlink_address": "#{params[:gitlink_address]}", + "gitlink_token": "#{params[:gitlink_token]}" } url = URI("#{domain}/cerobot/projects") http = Net::HTTP.new(url.host, url.port) @@ -41,7 +43,7 @@ class ObRepositorySync::ApiService < ApplicationService end def get_projects_jobs - url = URI("#{domain}/cerobot/projects/#{@project_name}/jobs") + url = URI("#{domain}/cerobot/projects/#{@project_name}/jobs?pageSize=100&pageNum=1") http = Net::HTTP.new(url.host, url.port) request = Net::HTTP::Get.new(url) request["Content-Type"] = "application/json" @@ -56,7 +58,7 @@ class ObRepositorySync::ApiService < ApplicationService "github_branch": "#{params[:github_branch]}", "gitee_branch": "#{params[:gitee_branch]}", "gitlink_branch": "#{params[:gitlink_branch]}", - "type": "#{params[:type]}", + "type": "#{params[:job_type]}", "base": "#{params[:base]}" } url = URI("#{domain}/cerobot/projects/#{@project_name}/jobs") @@ -122,11 +124,7 @@ class ObRepositorySync::ApiService < ApplicationService response = http.request(request) Rails.logger.info "set_commit job response.read_body======#{response.read_body}" res = JSON.parse(response.body) - if res["code"].to_s == "200" - res["data"] - else - [] - end + res end def pull_requests