diff --git "a/tools/oepkgs-check-rpmbuild/doc/oepkgs\351\227\250\347\246\201\350\277\201\347\247\273\350\256\276\350\256\241.md" "b/tools/oepkgs-check-rpmbuild/doc/oepkgs\351\227\250\347\246\201\350\277\201\347\247\273\350\256\276\350\256\241.md"
new file mode 100644
index 0000000000000000000000000000000000000000..a692e465cb2a6dcfd601a287d21f3b6186dbfdd1
--- /dev/null
+++ "b/tools/oepkgs-check-rpmbuild/doc/oepkgs\351\227\250\347\246\201\350\277\201\347\247\273\350\256\276\350\256\241.md"
@@ -0,0 +1,62 @@
+### oepkgs门禁迁移
+
+#### 背景概述
+
+##### 问题背景与分析
+
+oepkgs门禁构建检查不稳定,出现机器资源问题、compass-ci服务问题等,无法得到正确结果。由此导致了用户引入oepkgs软件包无法获取正确的构建结果反馈。
+
+oepkgs门禁存在的问题包括偶发性的问题如网络问题;自动化构建流程无法成功如需要root权限构建、需要大规格机器构建;pr合入后未成功引入软件包,这可能是偶发因素导致,如网络问题,可能是compass-ci服务出了问题;compass-ci自身存在的问题,如机器资源问题、测试结果写入数据库失败的问题等等。
+
+分析问题原因:
+
+1、该oepkgs门禁构建检查服务在本地服务器z9用compass-ci实现,不稳定
+
+2、compass-ci自身存在的问题导致服务经常出问题,如机器资源问题、测试结果写入数据库失败
+
+##### 解决方案
+
+希望使用oepkgs网站实现oepkgs门禁rpm构建检查。
+
+希望调用软件所的oepkgs网站的api接口实现oepkgs门禁构建检查,增强门禁稳定性,实现与现有的compass-ci门禁测试的双重保障。
+
+
+
+#### 设计概述
+
+##### 整体方案设计
+
+
+
+首先,通过gitee提交pr或评论/retest,jenkins webhook触发,调用oepkgs网站接口进行构建,构建成功后调用oepkgs网站接口获取构建结果,最后由ci-robot在pr评论返回构建结果。
+
+##### 流程设计
+
+
+
+具体流程设计:
+
+① get_oepkgs_token获取token
+
+② create_job创建构建任务
+
+③ build_job开始构建
+
+④ get_build_record获取构建结果
+
+⑤ comment_pr进行评论
+
+#### 功能设计
+
+希望设计实现的功能:
+
+① 将构建结果返回到pr评论中
+
+
+
+② oepkgs网站自动进行rpm构建
+
+
+
+最后实现oepkgs门禁使用oepkgs网站提供的rpmbuild接口进行构建测试并将结果返回到pr评论的功能,实现与原有的compass-ci门禁测试的双重保障。
+
diff --git a/tools/oepkgs-check-rpmbuild/image/1.png b/tools/oepkgs-check-rpmbuild/image/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd8e8c2659aff5aed8a81e5cdac3de3e9db31386
Binary files /dev/null and b/tools/oepkgs-check-rpmbuild/image/1.png differ
diff --git a/tools/oepkgs-check-rpmbuild/image/2.png b/tools/oepkgs-check-rpmbuild/image/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..6885c206f5e3fa96a545bb4e5bcc8c6f84562492
Binary files /dev/null and b/tools/oepkgs-check-rpmbuild/image/2.png differ
diff --git a/tools/oepkgs-check-rpmbuild/image/3.png b/tools/oepkgs-check-rpmbuild/image/3.png
new file mode 100644
index 0000000000000000000000000000000000000000..0db3edd191d2674840f2b7e0cf289e11e8ebdb36
Binary files /dev/null and b/tools/oepkgs-check-rpmbuild/image/3.png differ
diff --git a/tools/oepkgs-check-rpmbuild/image/4.png b/tools/oepkgs-check-rpmbuild/image/4.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc7bb7b9c0fb3171858cc2429c74b83c55936deb
Binary files /dev/null and b/tools/oepkgs-check-rpmbuild/image/4.png differ
diff --git a/tools/oepkgs-check-rpmbuild/image/5.png b/tools/oepkgs-check-rpmbuild/image/5.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d9fc64edc7981a9a7ff64589ccfd11f2c554502
Binary files /dev/null and b/tools/oepkgs-check-rpmbuild/image/5.png differ
diff --git a/tools/oepkgs-check-rpmbuild/src/build_job.py b/tools/oepkgs-check-rpmbuild/src/build_job.py
new file mode 100644
index 0000000000000000000000000000000000000000..45381c527cf9d110241eeb642cdb1c810f5104bb
--- /dev/null
+++ b/tools/oepkgs-check-rpmbuild/src/build_job.py
@@ -0,0 +1,46 @@
+import requests
+
+
+def build_job(opekgstoken, jobname, jobid):
+ """
+ start to build job in oepkgs.net
+ :param opekgstoken: the login token of the account oepkgs_management
+ :param jobid: the id of the job
+ :param jobname: the name of the job
+ :return:
+ whether successfully build the job
+ """
+ url2 = 'https://build.dev.oepkgs.net/api/build/task/buildJob'
+ headers2 = {
+ 'authority': 'build.dev.oepkgs.net',
+ 'accept': '*/*',
+ 'accept-language': 'en-US,en;q=0.9,zh;q=0.8,zh-CN;q=0.7',
+ 'cache-control': 'no-cache',
+ 'content-type': 'application/json',
+ 'cookie':
+ 'auth_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2Vy\
+ X2lkIjoxMDksInVzZXJfbmFtZSI6ImRpZGkiLCJUWiI6IkFzaIAvU2hhb\
+ mdoYWkiLCJleHAiOjE2OTM1Mzk4MjgsImlhdCI6MTY5MzUzODAyOH0.sF\
+ ZYWM-YiKKGcD2udonHmCM_kLxyb3Dt0P6xQZs49u8',
+ 'dnt': '1',
+ 'origin': 'https://build.dev.oepkgs.net',
+ 'pragma': 'no-cache',
+ 'referer': 'https://build.dev.oepkgs.net/rpm/task',
+ 'sec-ch-ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
+ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHT\
+ ML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
+ 'x-auth-token': opekgstoken,
+ }
+ data2 = {
+ 'jobName': jobname,
+ 'jobId': jobid,
+ }
+ response2 = requests.post(url2, headers=headers2, json=data2)
+ #print(response2.status_code)
+ #print(response2.text)
+ if(response2.status_code == 200):
+ #print("success build")
+ return 'success'
+ else:
+ #print("fail build")
+ return 'fail'
diff --git a/tools/oepkgs-check-rpmbuild/src/comment_message.py b/tools/oepkgs-check-rpmbuild/src/comment_message.py
new file mode 100644
index 0000000000000000000000000000000000000000..0882c806d9bb2f96b6958cc85079958813e6bcf6
--- /dev/null
+++ b/tools/oepkgs-check-rpmbuild/src/comment_message.py
@@ -0,0 +1,67 @@
+#import logging.config
+#import argparse
+#import time
+
+
+class CommentMessage(object):
+ """
+ the result in table to comment
+ """
+
+ def __init__(self, result0, result1):
+ """
+ :param result0: the aarch64 build result
+ :param result1: the x86_64 build result
+ """
+ self._result0 = result0
+ self._result1 = result1
+
+ @classmethod
+ def table_head(cls):
+ """
+ the head of the table
+ | Arch | Check Arch | Build_Result | Result_Detail |
+ """
+ return "
Arch | Check Arch | Build_Result | Result_Detail |
"
+
+
+ @classmethod
+ def table_content(cls, arch, check_arch, result, build_num):
+ """
+ the content of the table
+ :param build_num: jenkins build id
+ """
+ href = "https://jenkins.openeuler.isrc.ac.cn/job/OepkgsNetCheck/{}/console".format(build_num)
+ return "{} | {} | {} | " \
+ "{}{} |
".format(arch, check_arch, result, href, "#", build_num)
+
+
+ def build_table(self, build_num):
+ """
+ get the build result
+ :param build_num: jenkins build id
+ :return:
+ the final table
+ """
+
+ comments = ["", self.table_head()]
+ result_table = self.get_result_table(build_num)
+ comments.extend(result_table)
+ comments.append("
")
+ return comments
+
+
+ def get_result_table(self, build_num):
+ """
+ :param build_num: jenkins build id
+ :return:
+ the build result table
+ """
+ comments = []
+ line1 = self.__class__.table_content("aarch64", "Yes", self._result0, build_num)
+ line2 = self.__class__.table_content("x86_64", "Yes", self._result1, build_num)
+ comments.append(line1)
+ comments.append(line2)
+ return comments
+
+
\ No newline at end of file
diff --git a/tools/oepkgs-check-rpmbuild/src/create_job.py b/tools/oepkgs-check-rpmbuild/src/create_job.py
new file mode 100644
index 0000000000000000000000000000000000000000..3c8192df0675a34f36d48e68aba0ef817f0f40df
--- /dev/null
+++ b/tools/oepkgs-check-rpmbuild/src/create_job.py
@@ -0,0 +1,66 @@
+import uuid
+import json
+import requests
+#from get_token import get_oepkgs_token
+
+
+def create_job(opekgstoken, repo_url, bb, build_id, buildbranch):
+ """
+ create a job in oepkgs.net
+ :param opekgstoken: the login token of the account oepkgs_management
+ :param repo_url: the repo url containing the source code of the rpm
+ :param ccArch: build arch: aarch64 or x86_64
+ :param tbranch: the branch of the url
+ :param build_id: the repo id
+ :param buildbranch: the version of openeuler to build rpm
+ :return:
+ jobid: the id of the job
+ jobname: the name of the job
+ """
+ url = 'https://build.dev.oepkgs.net/api/build/task/create'
+ headers = {
+ 'authority': 'build.dev.oepkgs.net',
+ 'accept': '*/*',
+ 'accept-language': 'en-US,en;q=0.9,zh;q=0.8,zh-CN;q=0.7',
+ 'cache-control': 'no-cache',
+ 'content-type': 'application/json',
+ 'cookie': 'auth_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxMDks\
+ InVzZXJfbmFtZSI6ImRpZGkiLCJUWiI6IkFzaWEvU2hhbmdoYWkiLCJleHAiOjE2OTMzNzAwMzMsIml\
+ hdCI6MTY5MzM2ODIzM30.szb3CB_U3DJOVG94JzHkUBqTjD0x8WM0JCJz3fNODuc',
+ 'dnt': '1',
+ 'origin': 'https://build.dev.oepkgs.net',
+ 'pragma': 'no-cache',
+ 'referer': 'https://build.dev.oepkgs.net/rpm/task/create',
+ 'sec-ch-ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
+ 'sec-ch-ua-mobile': '?0',
+ 'sec-ch-ua-platform': '"Windows"',
+ 'sec-fetch-dest': 'empty',
+ 'sec-fetch-mode': 'cors',
+ 'sec-fetch-site': 'same-origin',
+ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHT\
+ ML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
+ 'x-auth-token': opekgstoken,
+ }
+ data = {
+ 'builder': 1,
+ 'jobName': str(uuid.uuid4()),
+ 'os': 'openEuler',
+ 'osFull': buildbranch,
+ 'ccArch': bb[0],
+ 'repoId': build_id,
+ 'scmRepo': repo_url,
+ 'branch': bb[1]
+ }
+ response = requests.post(url, headers=headers, json=data)
+ #print(response.status_code)
+ #print(response.text)
+ res_data = json.loads(response.text)
+ #print(res_data)
+ if(response.status_code == 200):
+ return 'success', data['jobName'], res_data['data']['jobId']
+ else:
+ return 'fail', 'nothing', 'nothing'
+
+#token=get_oepkgs_token()
+#re=create_job(token, 'https://gitee.com/src-oepkgs/solr', 'x86_64', 'openEuler-22.03-LTS-SP1', 127,'22.03-LTS-SP1')
+#print(re)
diff --git a/tools/oepkgs-check-rpmbuild/src/get_record.py b/tools/oepkgs-check-rpmbuild/src/get_record.py
new file mode 100644
index 0000000000000000000000000000000000000000..66ad5b642ab31007e887fea64347a45e10c877d2
--- /dev/null
+++ b/tools/oepkgs-check-rpmbuild/src/get_record.py
@@ -0,0 +1,63 @@
+import time
+import json
+from get_token import get_oepkgs_token
+from logger import log_info
+import requests
+
+
+def get_build_record(opekgstoken, jobname, jobid):
+ """
+ start to build job in oepkgs.net
+ :param opekgstoken: the login token of the account oepkgs_management
+ :param jobid: the id of the job
+ :param jobname: the name of the job
+ :return:
+ the status of the job
+ """
+ iid = str(jobid)
+ url = 'https://build.dev.oepkgs.net/api/build/task/getBuildRecord/' + iid + '?pageNum=1&pageSize=5'
+ headers = {
+ 'authority': 'build.dev.oepkgs.net',
+ 'accept': '*/*',
+ 'accept-language': 'en-US,en;q=0.9,zh;q=0.8,zh-CN;q=0.7',
+ 'cache-control': 'no-cache',
+ 'content-type': 'application/json',
+ 'cookie':
+ 'auth_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxMDksInVzZXJfbmFtZSI6ImR\
+ pZGkiLCJUWiI6IkFzaWEvU2hhbmdoYWkiLCJleHAiOjE2OTM1Mzk4MjgsImlhdCI6MTY5MzUzODAyOH0.sFZYWM-\
+ YiKKGcD2udonHmCM_kLxyb3Dt0P6xQZs49u8',
+ 'dnt': '1',
+ 'pragma': 'no-cache',
+ 'referer': 'https://build.dev.oepkgs.net/rpm/task',
+ 'sec-ch-ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
+ 'x-auth-token': opekgstoken,
+ }
+ params = {
+ "jobName": jobname,
+ }
+ response = requests.get(url, headers=headers, params=params)
+ #print(response)
+ res_data = json.loads(response.text)
+ #print(res_data['data'])
+
+ wait_time = 0
+ while res_data['data']['list'] is None:
+ log_info("Time:" + str(wait_time) + "; Failed to get build record")
+ time.sleep(30)
+ wait_time = wait_time + 1
+ if wait_time > 5:
+ return "no build list"
+
+ if len(res_data['data']['list']) == 0:
+ return "no build task"
+
+ build_result = res_data['data']['list'][0]
+ #print(build_result)
+ log_info(str(build_result))
+ re = build_result['result']
+ #print(re)
+ return re
+
+#token=get_oepkgs_token()
+#re=get_build_record(token, "13369748-64fe-4e63-b2cd-aee9cc6eb315",1015)
+#print(re)
diff --git a/tools/oepkgs-check-rpmbuild/src/get_token.py b/tools/oepkgs-check-rpmbuild/src/get_token.py
new file mode 100644
index 0000000000000000000000000000000000000000..a8e9e49dc25120aec1dc0f108e83271ecdaace08
--- /dev/null
+++ b/tools/oepkgs-check-rpmbuild/src/get_token.py
@@ -0,0 +1,38 @@
+from selenium import webdriver
+from selenium.webdriver.common.by import By
+
+
+def get_oepkgs_token():
+ '''
+ use selenium to emulate login
+ account: oepkgs_management
+ :return:
+ oepkgs_token: the login token of the account oepkgs_management
+ '''
+ options = webdriver.ChromeOptions()
+ #options.add_argument("--auto-open-devtools-for-tabs")
+ options.add_argument('--headless')
+ options.add_argument('--no-sandbox')
+ options.add_argument('--disable-gpu')
+ options.add_argument('--disable-dev-shm-usage')
+ options.add_argument("--auto-open-devtools-for-tabs")
+
+ driver = webdriver.Chrome(options=options)
+ driver.get("https://build.dev.oepkgs.net/rpm/task")
+ try:
+ driver.implicitly_wait(10)
+ username_input = driver.find_element(By.NAME, "username")
+ password_input = driver.find_element(By.NAME, "password")
+ username_input.send_keys("oepkgs_management@163.com")
+ password_input.send_keys("123456Aa!")
+ login_button = driver.find_element(By.ID, "kc-login")
+ login_button.click()
+ cookies = driver.get_cookies()
+ for cookie in cookies:
+ None
+ #print(cookie['name'], cookie['value'])
+ finally:
+ driver.quit()
+ return cookie['value']
+
+#get_oepkgs_token()
\ No newline at end of file
diff --git a/tools/oepkgs-check-rpmbuild/src/gitee_message.py b/tools/oepkgs-check-rpmbuild/src/gitee_message.py
new file mode 100644
index 0000000000000000000000000000000000000000..c11d518648e49baaa35548ab6ec4f211e93605cd
--- /dev/null
+++ b/tools/oepkgs-check-rpmbuild/src/gitee_message.py
@@ -0,0 +1,36 @@
+from tools import get_requests
+
+
+class GiteeMessage(object):
+ """
+ the result in table to comment
+ """
+
+ def __init__(self, pr_num, repo_name, gitee_token):
+ """
+ :param pr_num: the pr number
+ :param repo_name: the name of the repo
+ :param gitee_token: the toen of the gitee user
+ """
+ self._pr_num = pr_num
+ self._repo_name = repo_name
+ self._gitee_token = gitee_token
+
+ def comment_pr(self, comment):
+ """
+ comment pull request
+ :param comment: the content of the comment
+ :return:
+ whether successfully comment the pr
+ """
+ #logger.debug("comment pull request %s", pr_num)
+ owner = "src-oepkgs"
+ comment_pr_url = "https://gitee.com/api/v5/repos/{}/{}/pulls/{}/comments"\
+ .format(owner, self._repo_name, self._pr_num)
+ data = {"access_token": self._gitee_token, "body": comment}
+
+ rs = get_requests("post", comment_pr_url, body=data, timeout=30)
+ if rs != 0:
+ #logger.warning("pr comment failed")
+ return False
+ return True
\ No newline at end of file
diff --git a/tools/oepkgs-check-rpmbuild/src/init_env.sh b/tools/oepkgs-check-rpmbuild/src/init_env.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e39fa7b88eaa199ca5f469e277c16e53ecbe3b4e
--- /dev/null
+++ b/tools/oepkgs-check-rpmbuild/src/init_env.sh
@@ -0,0 +1,22 @@
+pip3 install selenium
+sudo apt-get install wget
+
+#google-chrome --version
+#chromedriver --version
+
+# install google-chrome
+wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
+sudo apt install -y ./google-chrome-stable_current_amd64.deb
+google-chrome --version
+
+# install chromedriver
+wget https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/119.0.6045.159/linux64/chromedriver-linux64.zip
+unzip chromedriver-linux64.zip
+cd chromedriver-linux64
+cp chromedriver /usr/bin/
+chromedriver --version
+
+#google-chrome
+
+#python3 start.py
+sh start.sh ${giteeSourceBranch} ${giteeSourceRepoURL} ${giteeTargetRepoName} ${giteePullRequestIid} ${BUILD_ID}
\ No newline at end of file
diff --git a/tools/oepkgs-check-rpmbuild/src/logger.py b/tools/oepkgs-check-rpmbuild/src/logger.py
new file mode 100644
index 0000000000000000000000000000000000000000..e76b744f6af80a2a1592f789f24d31b095f28043
--- /dev/null
+++ b/tools/oepkgs-check-rpmbuild/src/logger.py
@@ -0,0 +1,16 @@
+import logging.config
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger("info")
+
+
+def log_info(ss):
+ logger.info(ss)
+
+
+def log_error(ss):
+ logger.error(ss)
+
+
+def log_warning(ss):
+ logger.warning(ss)
\ No newline at end of file
diff --git a/tools/oepkgs-check-rpmbuild/src/start.py b/tools/oepkgs-check-rpmbuild/src/start.py
new file mode 100644
index 0000000000000000000000000000000000000000..b47307465da047c378376609843bbfb2b5139c8d
--- /dev/null
+++ b/tools/oepkgs-check-rpmbuild/src/start.py
@@ -0,0 +1,34 @@
+import logging.config
+import argparse
+from start_build import start_build
+
+
+def init_args():
+ """
+ init args
+ get args from command line
+ :return:
+ input args
+ """
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-p", type=int, dest="pr", help="pull request number")
+ parser.add_argument("-u", type=str, dest="url", help="repo_url")
+ parser.add_argument("-r", type=str, dest="repo", help="repo_name")
+ parser.add_argument("-b", type=str, dest="branch", help="gitee branch")
+ parser.add_argument("-bb", type=str, dest="buildbranch", help="build branch")
+ parser.add_argument("-n", type=int, dest="job_id", help="jenkins build number")
+
+ return parser.parse_args()
+
+
+if "__main__" == __name__:
+ args = init_args()
+
+ logger = logging.getLogger("info")
+
+ logger.info("Start Init Environment")
+
+ logger.info("Init Success")
+
+ start_build(args)
+ logger.info("Finish")
\ No newline at end of file
diff --git a/tools/oepkgs-check-rpmbuild/src/start.sh b/tools/oepkgs-check-rpmbuild/src/start.sh
new file mode 100644
index 0000000000000000000000000000000000000000..86d631cfa2c1ec200be6bc27ba9e41520146221f
--- /dev/null
+++ b/tools/oepkgs-check-rpmbuild/src/start.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# display the information
+function log_info()
+{
+ echo "[`date +%Y-%m-%d\ %T`] [ INFO ] $@"
+}
+
+
+function log_error()
+{
+ echo -e "\033[31m"[`date +%Y-%m-%d\ %T`] [ ERROR ] $@" \033[0m"
+ exit 1
+}
+
+
+# start to check rpmbuild result
+function check_build() {
+ log_info "***** Start to check rpmbuild result *****"
+ python3 start.py -b $1 -u $2 -r $3 -p $4 -n $5 -bb $6
+ log_info "***** End to check rpmbuild result *****"
+}
+
+# the start point
+function main() {
+
+ check_build $1 $2 $3 $4 $5 $6
+}
+
+main $1 $2 $3 $4 $5 $6
\ No newline at end of file
diff --git a/tools/oepkgs-check-rpmbuild/src/start_build.py b/tools/oepkgs-check-rpmbuild/src/start_build.py
new file mode 100644
index 0000000000000000000000000000000000000000..9a5ae7f548185afe8520ca640bcaab954e30b4fb
--- /dev/null
+++ b/tools/oepkgs-check-rpmbuild/src/start_build.py
@@ -0,0 +1,148 @@
+import time
+from get_token import get_oepkgs_token
+from create_job import create_job
+from comment_message import CommentMessage
+from gitee_message import GiteeMessage
+from build_job import build_job
+from get_record import get_build_record
+from logger import log_info, log_error, log_warning
+from tools import get_branch
+
+
+class MyException(Exception):
+ '''
+ detect exception
+ '''
+ pass
+
+
+def get_info(args):
+ '''
+ process the input args
+ :param args: the input args from command line
+
+ :return:
+ buildbranch: openeuler version to build,e.g. 22.03-LTS-SP1
+ token: the login token of the account oepkgs_management
+ '''
+ buildbranch = get_branch(args.buildbranch)
+ token = get_oepkgs_token()
+ #print(token)
+ log_info("oepkgs_token:" + token)
+ return buildbranch, token
+
+
+def rpmbuild_action(token, url, bb, repoid, buildbranch):
+ """
+ start create job and build job
+ :param token: the login token of the account oepkgs_management
+ :param url: the repo url containing the source code of the rpm
+ :param arch: build arch: aarch64 or x86_64
+ :param branch: the branch of the url
+ :param repoid: the repo id
+ :param buildbranch: the version of openeuler to build rpm
+ :return:
+ jobid: the id of the job
+ jobname: the name of the job
+ """
+ create_success, jobname, jobid = create_job(token, url, bb, repoid, buildbranch)
+ if create_success == 'fail':
+ log_error("failed to create a job")
+ raise MyException("can't create a job")
+ elif create_success == 'success':
+ log_info("successfully create a job: " + "jobName " + str(jobname) + "; jobId " + str(jobid))
+
+ build_success = build_job(token, jobname, jobid)
+ if build_success == 'fail':
+ log_error("failed to build a job")
+ raise MyException("can't build a job")
+ elif build_success == 'success':
+ log_info("successfully build a job:" + "jobName " + str(jobname) + "; jobId " + str(jobid))
+
+ return jobname, jobid
+
+
+def git_comment(jobname, jobid, res):
+ '''
+ print git comment
+ '''
+ #print("git comment:")
+ log_info("jobName:" + str(jobname) + "; jobid:" + str(jobid) + "; result:" + str(res))
+ return res
+
+
+def get_result(token, jobname_list, jobid_list):
+ '''
+ get build result
+ :param token: the login token of the account oepkgs_management
+ :param jobid: the id list of the jobs
+ :param jobname: the name list of the jobs
+ :return:
+ build result
+ '''
+ get_result0 = 0
+ get_result1 = 0
+ roun = 0
+ while True:
+ if get_result0 == 0:
+ jobname = jobname_list[0]
+ jobid = jobid_list[0]
+ res = get_build_record(token, jobname, jobid)
+ if res == 'SUCCESS' or res == 'FAILURE':
+ log_info("aarch64:")
+ result0 = git_comment(jobname, jobid, res)
+ get_result0 = 1
+ if get_result1 == 0:
+ jobname = jobname_list[1]
+ jobid = jobid_list[1]
+ res = get_build_record(token, jobname, jobid)
+ if res == 'SUCCESS' or res == 'FAILURE':
+ log_info("x86_64:")
+ result1 = git_comment(jobname, jobid, res)
+ get_result1 = 1
+ if get_result1 == 1 and get_result0 == 1:
+ break
+ time.sleep(120)
+ roun = roun + 1
+ if roun > 30:
+ if get_result0 == 0:
+ result0 = 'TIME OUT'
+ if get_result1 == 0:
+ result1 = 'TIME OUT'
+ break
+
+ return result0, result1
+
+
+def start_build(args):
+ '''
+ start the check rpmbuild result process
+
+ 1)create and build job
+ 2)get build record
+ 3)comment pr in gitee
+ '''
+ url = args.url
+ branch = args.branch
+ repoid = 127
+ branch_list = ['aarch64', 'x86_64']
+
+ buildbranch, token = get_info(args)
+ jobname_list = []
+ jobid_list = []
+ for arch in branch_list:
+ bb = [arch, branch]
+ name, iid = rpmbuild_action(token, url, bb, repoid, buildbranch)
+ jobname_list.append(name)
+ jobid_list.append(iid)
+
+ result0, result1 = get_result(token, jobname_list, jobid_list)
+ ini = CommentMessage(result0, result1)
+
+ #ini=CommentMessage('SUCCESS','FAILED')
+ comment = ini.build_table(args.job_id)
+ git = GiteeMessage(args.pr, args.repo, "c951fee688f4b037d27602d7461b81fc")
+ log_info(comment)
+ git.comment_pr("\n".join(comment))
+
+
diff --git a/tools/oepkgs-check-rpmbuild/src/tools.py b/tools/oepkgs-check-rpmbuild/src/tools.py
new file mode 100644
index 0000000000000000000000000000000000000000..6a242cce6b3c717bad1d56bdb031c285fe541509
--- /dev/null
+++ b/tools/oepkgs-check-rpmbuild/src/tools.py
@@ -0,0 +1,42 @@
+import requests
+
+
+def get_requests(method, url, body=None, timeout=30, obj=None):
+ """
+ http request
+ :param method: http method
+ :param url: http[s] schema
+ :param body: json
+ :param timeout: second
+ :param obj: callback object, support list/dict/object
+ :return:
+ """
+ get_function = getattr(requests, method.lower())
+ result = get_function(url, json=body, timeout=timeout)
+
+ result_list = [requests.codes.ok, requests.codes.created, requests.codes.no_content]
+ if result.status_code not in result_list:
+ return 2
+
+ if obj is not None:
+ if isinstance(obj, dict):
+ obj.update(result.json())
+ return 0
+
+
+def get_branch(gitbranch):
+ """
+ get build branch
+ :param gitbranch: the branch of the repo
+ :return:
+ the build branch,which version of openeuler
+ """
+ branch = ''
+ if gitbranch == 'master':
+ branch = '20.03-LTS-SP1'
+ else:
+ branch = gitbranch[10:]
+ return branch
+
+#t1=get_branch('openEuler-20.03-LTS-SP3')
+#print(t1)
\ No newline at end of file