From c1c183b12e62190079f07b4d23cb37c18641cc44 Mon Sep 17 00:00:00 2001 From: liwen <408815583@qq.com> Date: Fri, 26 May 2023 09:08:47 +0000 Subject: [PATCH 1/5] add script/relevance_issue_analysis.rb. Signed-off-by: liwen <408815583@qq.com> --- script/relevance_issue_analysis.rb | 120 +++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 script/relevance_issue_analysis.rb diff --git a/script/relevance_issue_analysis.rb b/script/relevance_issue_analysis.rb new file mode 100644 index 0000000..bf71efb --- /dev/null +++ b/script/relevance_issue_analysis.rb @@ -0,0 +1,120 @@ +require "rest-client" +require "json" +require "base64" + +class RelevanceIssueAnalysis + def initialize(repo, head_sha, pr_iid, access_token_str) + + @repo = repo + @access_token = Base64.decode64(access_token_str)[0...32] + @head_sha = head_sha + @pr_iid = pr_iid + end + + def exec + create_check_run + processing + end + + def create_check_run + data = { + access_token: @access_token, + details_url: "https://gitee.com/liwen", + name: "关联 Issue 检测", + head_sha: @head_sha + } + url = "https://gitee.com/api/v5/repos/#{@repo}/check-runs" + @response_json = RestClient.post url, data + @response = JSON.parse(@response_json) + @check_run_id = @response["id"] + puts "@check_run_id => #{@check_run_id}" + end + + def processing + url = "https://gitee.com/api/v5/repos/#{@repo}/check-runs/#{@check_run_id}" + data = { + access_token: @access_token, + status: "in_progress" + } + RestClient.patch url, data + analyse_and_finished_check + end + + def analyse_and_finished_check + puts "begining analyse repo" + + if analyse_issue_exist? + conclusion = "success" + summary = "🚀 Good job! 此 PR 已关联了 Issue" + text = "" + else + conclusion = "failure" + summary = "💀 Oh, my God! 此 PR 竟然还未关联 Issue" + text = "注意:没有关联 Issue 的 PR 不能被合并;即时管理员临时合并了,也需要补充关联" + end + + + url = "https://gitee.com/api/v5/repos/#{@repo}/check-runs/#{@check_run_id}" + data = { + access_token: @access_token, + conclusion: conclusion, + output: { + title: "Issue 关联检测", + summary: summary, + text: text, + annotations: [] + } + } + puts "finished analyse, completed check run, data: \n #{data}" + response = RestClient.patch url, data + puts "response: #{response.body}" + update_pr_label(conclusion) + end + + def analyse_issue_exist? + response = RestClient.get "https://gitee.com/api/v5/repos/#{@repo}/pulls/#{@pr_iid}/issues?access_token=#{@access_token}" + issues = JSON.parse(response) rescue [] + !issues.empty? + end + + def update_pr_label(conclusion) + response = RestClient.get "https://gitee.com/api/v5/repos/#{@repo}/pulls/#{@pr_iid}/labels?access_token=#{@access_token}" + labels = JSON.parse(response) rescue [] + label_names = labels.map {|label| label["name"]} + if conclusion == "success" + delete_pr_label("未关联Issue") if label_names.include?("未关联Issue") + insert_pr_label("关联Issue") unless label_names.include?("关联Issue") + else + delete_pr_label("关联Issue") if label_names.include?("关联Issue") + insert_pr_label("未关联Issue") unless label_names.include?("未关联Issue") + end + end + + def delete_pr_label(label_name) + begin + url = "https://gitee.com/api/v5/repos/#{@repo}/pulls/#{@pr_iid}/labels/#{label_name}?access_token=#{@access_token}" + RestClient.delete URI.escape(url) + rescue Exception => e + puts "delete label: #{label_name} failure, e => #{e}" + end + end + + def insert_pr_label(label_name) + begin + url = "https://gitee.com/api/v5/repos/#{@repo}/pulls/#{@pr_iid}/labels?access_token=#{@access_token}" + RestClient.post URI.escape(url), [label_name].to_json, {content_type: :json, accept: :json} + rescue Exception => e + puts "insert label: #{label_name} failure, e => #{e}" + end + end + +end + +inputted_strings = ARGV +if ARGV.empty? + puts "nothing :(" +else + repo, head_sha, pr_iid, access_token_str = inputted_strings + puts "repo: #{repo}, head_sha: #{head_sha}" + RelevanceIssueAnalysis.new(repo, head_sha, pr_iid, access_token_str).exec +end -- Gitee From c90b9f7bcde95b1886605740e4b7c7918439ef5b Mon Sep 17 00:00:00 2001 From: liwen <408815583@qq.com> Date: Fri, 26 May 2023 09:09:15 +0000 Subject: [PATCH 2/5] add .workflow/issue_check.yml. Signed-off-by: liwen <408815583@qq.com> --- .workflow/issue_check.yml | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .workflow/issue_check.yml diff --git a/.workflow/issue_check.yml b/.workflow/issue_check.yml new file mode 100644 index 0000000..22600de --- /dev/null +++ b/.workflow/issue_check.yml @@ -0,0 +1,43 @@ +version: '1.0' +name: issue-check-run +displayName: issue_check_run +triggers: + trigger: auto + pr: + branches: + include: + - master +variables: + global: + - ACCESS_TOKEN + - SYSTEM_CLONE_DEPTH +stages: + - name: stage_name_26 + displayName: stage_display_name_27 + strategy: naturally + trigger: auto + steps: + - step: build@ruby + name: build_ruby_31 + displayName: Issue检测 + rubyVersion: 2.6.8 + commands: + - Int: + - echo `ruby -v` + - echo `pwd` + - APT GET: + - apt-get update + - apt-get install cmake + - apt-get install pkg-config + - Install RubyENV: + - gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ + - gem install rest-client + - gem install json + - gem install base64 + - Run Script: + - git fetch origin pull/${AGILE_PULL_ID}/head:pr_${AGILE_PULL_ID} + - git checkout pr_${AGILE_PULL_ID} + - ruby "./script/rubocop_check.rb" ${AGILE_MODULE_NAME} ${AGILE_SOURCE_REVISION} ${AGILE_PULL_ID} ${ACCESS_TOKEN} +permissions: + - role: admin + members: [] -- Gitee From aacb209261664e90e64d0cf19e7409c11c879369 Mon Sep 17 00:00:00 2001 From: liwen <408815583@qq.com> Date: Fri, 26 May 2023 09:17:01 +0000 Subject: [PATCH 3/5] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20.wor?= =?UTF-8?q?kflow/issue=5Fcheck.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .workflow/issue_check.yml | 43 --------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 .workflow/issue_check.yml diff --git a/.workflow/issue_check.yml b/.workflow/issue_check.yml deleted file mode 100644 index 22600de..0000000 --- a/.workflow/issue_check.yml +++ /dev/null @@ -1,43 +0,0 @@ -version: '1.0' -name: issue-check-run -displayName: issue_check_run -triggers: - trigger: auto - pr: - branches: - include: - - master -variables: - global: - - ACCESS_TOKEN - - SYSTEM_CLONE_DEPTH -stages: - - name: stage_name_26 - displayName: stage_display_name_27 - strategy: naturally - trigger: auto - steps: - - step: build@ruby - name: build_ruby_31 - displayName: Issue检测 - rubyVersion: 2.6.8 - commands: - - Int: - - echo `ruby -v` - - echo `pwd` - - APT GET: - - apt-get update - - apt-get install cmake - - apt-get install pkg-config - - Install RubyENV: - - gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ - - gem install rest-client - - gem install json - - gem install base64 - - Run Script: - - git fetch origin pull/${AGILE_PULL_ID}/head:pr_${AGILE_PULL_ID} - - git checkout pr_${AGILE_PULL_ID} - - ruby "./script/rubocop_check.rb" ${AGILE_MODULE_NAME} ${AGILE_SOURCE_REVISION} ${AGILE_PULL_ID} ${ACCESS_TOKEN} -permissions: - - role: admin - members: [] -- Gitee From df0c9f169d75d0d022a81624e5e889fdc162133a Mon Sep 17 00:00:00 2001 From: liwen <408815583@qq.com> Date: Fri, 26 May 2023 09:19:16 +0000 Subject: [PATCH 4/5] update .workflow/check_run-pipeline.yml. Signed-off-by: liwen <408815583@qq.com> --- .workflow/check_run-pipeline.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.workflow/check_run-pipeline.yml b/.workflow/check_run-pipeline.yml index 07c7bb0..a21cfc5 100644 --- a/.workflow/check_run-pipeline.yml +++ b/.workflow/check_run-pipeline.yml @@ -32,7 +32,8 @@ stages: - git checkout pr_${AGILE_PULL_ID} - Run Script: - - ruby "./check_run_script.rb" ${AGILE_MODULE_NAME} ${AGILE_SOURCE_REVISION} ${AGILE_REVISION}} + - ruby "./script/rubocop_check.rb.rb" ${AGILE_MODULE_NAME} ${AGILE_SOURCE_REVISION} ${AGILE_REVISION} ${AGILE_PULL_ID} ${ACCESS_TOKEN} + - ruby "./script/relevance_issue_analysis.rb" ${AGILE_MODULE_NAME} ${AGILE_SOURCE_REVISION} ${AGILE_PULL_ID} ${ACCESS_TOKEN} triggers: pr: branches: -- Gitee From b0e0eaca7ef2ebed8a9ab675006f11fc09e47a46 Mon Sep 17 00:00:00 2001 From: liwen <408815583@qq.com> Date: Mon, 29 May 2023 09:15:13 +0000 Subject: [PATCH 5/5] rename doc.md to doc.md32. Signed-off-by: liwen <408815583@qq.com> --- doc.md => doc.md32 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename doc.md => doc.md32 (100%) diff --git a/doc.md b/doc.md32 similarity index 100% rename from doc.md rename to doc.md32 -- Gitee