diff --git a/advisors/gitee.py b/advisors/gitee.py index 1acefec43d5498ffdb21eaf9a50679ec2414d505..93da5fa8a63e8ee7cdd500a67475e7b333c36cc8 100755 --- a/advisors/gitee.py +++ b/advisors/gitee.py @@ -159,6 +159,22 @@ class Gitee(): json_resp = json.loads(resp) return json_resp + def get_branch_info(self, branch): + """ + Get upgrade branch info + """ + upgrade_branches_url = self.advisor_url + "advisors/helper/upgrade_branches.yaml" + resp = self.get_gitee(upgrade_branches_url) + if not resp: + print("ERROR: upgrade_branches.yaml may not exist.") + sys.exit(1) + branches_info = yaml.load(resp, Loader=yaml.Loader) + for br_info in branches_info["branches"]: + if branch == br_info["name"]: + return br_info + print("WARNING: Don't support branch: {} in auto-upgrade.".format(branch)) + sys.exit(1) + def get_spec_exception(self): """ Get well known spec file exceptions diff --git a/advisors/helper/upgrade_branches.yaml b/advisors/helper/upgrade_branches.yaml new file mode 100644 index 0000000000000000000000000000000000000000..59238d501928c4144d5fdd2f5e5cd9e7a019ac9f --- /dev/null +++ b/advisors/helper/upgrade_branches.yaml @@ -0,0 +1,11 @@ +branches: +- name: master + recommend_type: master + obs_prj: openEuler:Mainline +- name: openEuler-20.03-LTS + recommend_type: LTS + obs_prj: openEuler:20.03:LTS +- name: openEuler-21.03 + recommend_type: master + obs_prj: openEuler:21.03 + diff --git a/advisors/simple_update_robot.py b/advisors/simple_update_robot.py index 82b9147166750aa8b1a9f334f654f1e5fb2884fb..facc3e87cb5da512356ab0ac5df755d671999ff2 100755 --- a/advisors/simple_update_robot.py +++ b/advisors/simple_update_robot.py @@ -229,27 +229,19 @@ def create_spec(gt_api, repo, spec_str, o_ver, n_ver): modify_patch(repo, pkg_spec, patch_match) -def build_pkg(u_pkg, u_branch): +def build_pkg(u_pkg, u_branch, obs_prj): """ Auto build upgrade pkg on obs """ - if u_branch == "master": - project = "openEuler:Mainline" - elif u_branch == "openEuler-20.03-LTS": - project = "openEuler:20.03:LTS" - else: - print("WARNING: Please check branch to be upgrade.") - sys.exit(1) - - subprocess.call(["osc", "branch", "{prj}".format(prj=project), "{pkg}".format(pkg=u_pkg)]) + subprocess.call(["osc", "branch", "{prj}".format(prj=obs_prj), "{pkg}".format(pkg=u_pkg)]) user_info = subprocess.getoutput(["osc user"]) user = user_info.split(':')[0] - subprocess.call(["osc", "co", "home:{usr}:branches:{prj}/{pkg}".format(usr=user, prj=project, + subprocess.call(["osc", "co", "home:{usr}:branches:{prj}/{pkg}".format(usr=user, prj=obs_prj, pkg=u_pkg)]) - if os.path.isdir("home:{usr}:branches:{prj}/{pkg}".format(usr=user, prj=project, pkg=u_pkg)): - os.chdir("home:{usr}:branches:{prj}/{pkg}".format(usr=user, prj=project, pkg=u_pkg)) + if os.path.isdir("home:{usr}:branches:{prj}/{pkg}".format(usr=user, prj=obs_prj, pkg=u_pkg)): + os.chdir("home:{usr}:branches:{prj}/{pkg}".format(usr=user, prj=obs_prj, pkg=u_pkg)) else: print("WARNING: {repo} of {br} may not exist on OBS.".format(repo=u_pkg, br=u_branch)) return False @@ -300,19 +292,18 @@ def auto_update_pkg(gt_api, u_pkg, u_branch, u_ver=None): pkg_spec = Spec.from_string(spec_str) pkg_ver = replace_macros(pkg_spec.version, pkg_spec) + branch_info = gt_api.get_branch_info(u_branch) + if not u_ver: pkg_tags = oa_upgradable.get_ver_tags(gt_api, u_pkg) if pkg_tags is None: return ver_rec = version_recommend.VersionRecommend(pkg_tags, pkg_ver, 0) - if u_branch == "master": + if branch_info["recommend_type"] == "master": u_ver = ver_rec.latest_version - elif re.search(r"LTS", u_branch): - u_ver = ver_rec.maintain_version else: - print("WARNING: Auto-upgrade current not support for {} branch.".format(u_branch)) - return + u_ver = ver_rec.maintain_version if update_ver_check(u_pkg, pkg_ver, u_ver): fork_clone_repo(gt_api, u_pkg, u_branch) @@ -322,7 +313,7 @@ def auto_update_pkg(gt_api, u_pkg, u_branch, u_ver=None): create_spec(gt_api, u_pkg, spec_str, pkg_ver, u_ver) - if not build_pkg(u_pkg, u_branch): + if not build_pkg(u_pkg, u_branch, branch_info["obs_prj"]): return push_create_pr_issue(gt_api, u_pkg, pkg_ver, u_ver, u_branch) @@ -362,6 +353,8 @@ def __manual_operate(gt_api, op_args): spec_file = Spec.from_string(spec_string) cur_version = replace_macros(spec_file.version, spec_file) + branch_info = gt_api.get_branch_info(op_args.branch) + if op_args.fork_then_clone: fork_clone_repo(gt_api, op_args.repo_pkg, op_args.branch) @@ -381,7 +374,7 @@ def __manual_operate(gt_api, op_args): create_spec(gt_api, op_args.repo_pkg, spec_string, cur_version, op_args.new_version) if op_args.build_pkg: - if not build_pkg(op_args.u_repo_pkg, op_args.u_branch): + if not build_pkg(op_args.repo_pkg, op_args.branch, branch_info["obs_prj"]): sys.exit(1) if op_args.push_create_pr_issue: diff --git a/command/tc_statistic b/command/tc_statistic deleted file mode 100644 index 1c515202f84795d2ae057a7335f9ac83a21a14df..0000000000000000000000000000000000000000 --- a/command/tc_statistic +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import signal -from signal import SIG_DFL - -try: - def sig_handler(signum, frame): - print('Exit command mode') - sys.exit(0) - - signal.signal(signal.SIGINT, sig_handler) - signal.signal(signal.SIGPIPE, SIG_DFL) -except: - pass - -from advisors.tc_statistic import main - - -if __name__ == '__main__': - try: - main() - except Exception as error: - print("WARNING: Command execution error") - print(error.message) diff --git a/advisors/tc_statistic.py b/legacy/tc_statistic.py similarity index 100% rename from advisors/tc_statistic.py rename to legacy/tc_statistic.py diff --git a/openEuler-Advisor.spec b/openEuler-Advisor.spec index a44a256a3d7e7c7526dc924fa1761306967f8fcc..323a2f184b4f42489fc3bb435a86df6ce37361d5 100644 --- a/openEuler-Advisor.spec +++ b/openEuler-Advisor.spec @@ -44,7 +44,6 @@ py.test-%{python3_version} -vv tests || : %attr(0755,root,root) %{_bindir}/psrtool %attr(0755,root,root) %{_bindir}/review_tool %attr(0755,root,root) %{_bindir}/tc_reminder -%attr(0755,root,root) %{_bindir}/tc_statistic %attr(0755,root,root) %{_bindir}/which_archived %changelog diff --git a/setup.py b/setup.py index cdef276bee1ff6986c2dd4c0c0f90d887346052d..56acfa497fbc839020efecbd3f39e8890d93d984 100644 --- a/setup.py +++ b/setup.py @@ -23,12 +23,12 @@ setup( 'advisors.psrtool', 'advisors.review_tool', 'advisors.tc_reminder', - 'advisors.tc_statistic', 'advisors.which_archived', 'advisors.yaml2url', 'advisors.gitee', 'legacy.python-packager', 'legacy.who_maintain', + 'legacy.tc_statistic', 'tests.test_yaml2url'], requires=['python_rpm_spec (>=0.10)', 'PyYAML (>=5.3.1)', @@ -50,6 +50,5 @@ setup( ('/usr/bin/', ['command/psrtool']), ('/usr/bin/', ['command/review_tool']), ('/usr/bin/', ['command/tc_reminder']), - ('/usr/bin/', ['command/tc_statistic']), ('/usr/bin/', ['command/which_archived'])] )