From: Yonghee Han Date: Fri, 27 Sep 2019 08:23:59 +0000 (+0900) Subject: Enable git-buildpackage to export of SR package X-Git-Tag: accepted/tizen/devbase/services/20200104.053715~40 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F77%2F214877%2F2;p=services%2Fjenkins-scripts.git Enable git-buildpackage to export of SR package Applies only to devbase project. create upload_obs_service_gbp function for the git-buildpackage Trigger next TEST-TRIGGER-INFO-UPDATE when only devbase project Change-Id: Ied1a62eba9d133831550efbf515f08d8c96273d8 --- diff --git a/common/prerelease.py b/common/prerelease.py index 4e101cf..f81bedd 100644 --- a/common/prerelease.py +++ b/common/prerelease.py @@ -75,3 +75,9 @@ def get_tagname_from_prerelease_name(prerelease_project): return (prerelease_project.split(project)[-1].replace(":","/")[1:]) +def is_devbase_project(project_name): + """ + Return true if the project name belong to prerelease devbase namespace + """ + return project_name.startswith("home:prerelease:Tizen:Devbase:") + diff --git a/common/upload_service.py b/common/upload_service.py index 9f2ad6e..d1405b5 100644 --- a/common/upload_service.py +++ b/common/upload_service.py @@ -58,6 +58,37 @@ def upload_obs_service(git_url, git_project, git_tag, raise UploadError("Unable to upload _service to %s: %s" % \ (obs_project, error)) +# for devbase project +def upload_obs_service_gbp(git_url, git_project, git_tag, + git_revision, obs_project, build, package): + """UPload _service file to OBS.Create package if doesn't exist.To replace + make package in local""" + if not build.exists(obs_project, package): + try: + build.create_package(obs_project, package) + except ObsError, error: + raise UploadError("Unable to create package %s/%s :%s" % \ + (obs_project, package, error)) + # Upload _service file to the project for gbs source service + print 'Upload service file' + commit_message = 'uploaded by prerelease job to build %s/%s(%s)' % \ + (git_project, git_tag, git_revision) + content = "" \ + "%s" \ + "%s" \ + "_git-meta" \ + "" % \ + (git_revision, os.path.join(git_url, git_project)) + fname = '_service' + with open(fname, 'w') as servicef: + servicef.write(content) + try: + build.commit_files(obs_project, package, + [(fname, True)], commit_message) + except ObsError, error: + raise UploadError("Unable to upload _service to %s: %s" % \ + (obs_project, error)) + def upload_obs_files(git_project, git_tag, git_revision, \ obs_project, build, package, files): """UPload _service file to OBS.Create package if doesn't exist.To replace diff --git a/common/workflow.py b/common/workflow.py index cad6070..68bb770 100644 --- a/common/workflow.py +++ b/common/workflow.py @@ -35,8 +35,8 @@ from gitbuildsys.errors import ObsError from common import utils from common.mapping import git_obs_map, git_virtual_branch_map -from common.upload_service import upload_obs_service, UploadError -from common.prerelease import get_info_from_prerelease_name +from common.upload_service import upload_obs_service, upload_obs_service_gbp, UploadError +from common.prerelease import get_info_from_prerelease_name, is_devbase_project from common.git import Git, clone_gitproject from common.gerrit import GerritEnv, GerritError from common import runner @@ -651,8 +651,13 @@ def create_project(build, obs_project, submit_list, mode=MODE_NORMAL): continue print '<< %s >>' % package[idx] sys.stdout.flush() - upload_obs_service(git_url, git_project[idx], git_tag, - git_revision[idx], obs_project, build, package[idx]) + # if obs_project is devbase project then use the gbp to export. + if is_devbase_project(obs_project): + upload_obs_service_gbp(git_url, git_project[idx], git_tag, + git_revision[idx], obs_project, build, package[idx]) + else: + upload_obs_service(git_url, git_project[idx], git_tag, + git_revision[idx], obs_project, build, package[idx]) except UploadError, err: raise LocalError(err) diff --git a/job_pre_release_obs.py b/job_pre_release_obs.py index 0d69cd1..cd294ea 100755 --- a/job_pre_release_obs.py +++ b/job_pre_release_obs.py @@ -33,7 +33,7 @@ from common.repomaker import find_files, RepoMaker, RepoMakerError from common.buildtrigger import trigger_info, trigger_next, get_pending_builds_with_parameter from common.buildservice import BuildService from common.backenddb import BackendDB -from common.prerelease import get_info_from_prerelease_name +from common.prerelease import get_info_from_prerelease_name, is_devbase_project from common.snapshot import Snapshot, SnapshotError from common.iris_rest_client import IrisRestClient @@ -678,6 +678,10 @@ def main(action): if bBuildFail == True: # NOTIFY BUILDSTATUS trigger_next("NOTIFY-BUILDSTATUS", info) + else: + # Only devbase project + if is_devbase_project(project): + trigger_next("TEST-TRIGGER-INFO-UPDATE", info) elif action == 'cleanup': # request(SR) end of life, this founction should be called to