From: Ed Bartosh Date: Fri, 26 Apr 2013 16:17:58 +0000 (+0300) Subject: Reimplemented generation of build.xml X-Git-Tag: 0.12^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=122ad642f4b3c3649c9a69781a542b0b2ecbe91e;p=services%2Fjenkins-scripts.git Reimplemented generation of build.xml Refactored and reimplemented generation of build.xml according to new download structure. Change-Id: Iff7c246200ca412294ed129eab7f9728ae2f3cf4 --- diff --git a/common/buildservice.py b/common/buildservice.py index 33de7b9..92a6363 100644 --- a/common/buildservice.py +++ b/common/buildservice.py @@ -514,3 +514,11 @@ class BuildService(OSC): """Remove pre-release OBS project.""" if self.exists(obs_project): return self.delete_project(obs_project, force=True, msg=msg) + + def get_arch(self, project, repo_name): + meta_xml = self.get_meta(project) + xml_root = ET.fromstringlist(meta_xml) + for repo_setting in xml_root.findall('repository'): + if repo_setting.attrib['name'] == repo_name: + return [node.text for node in repo_setting.findall('arch')] + return [] diff --git a/job_pre_release_obs.py b/job_pre_release_obs.py index ce75170..d5a8c2b 100755 --- a/job_pre_release_obs.py +++ b/job_pre_release_obs.py @@ -10,19 +10,47 @@ import sys import re from common.tempbuildpkg import ProjectBuildService, ProjectRepository -from common.tempbuildpkg import BuildData, RepoConf +from common.tempbuildpkg import RepoConf from common.buildtrigger import trigger_info, trigger_next from testprojects.prerelease import PreRelease2 from testprojects.prerelease import get_prerelease_project_name from common.buildservice import BuildService +from gitbuildsys import BuildData, BuildDataError + +class LocalError(Exception): + """Local error exception.""" + pass + +def get_latest_snapshot(product='tizen-2.1'): + """Gets latest snapshot id from Redis.""" + # to be implemented + return '%s_20130320.11' % product + +def gen_builddata(build, project, repo='standard'): + """Generate build.xml with repository data.""" + + build_id = '%s.pre-release.%s' % (get_latest_snapshot(), + project.split(':')[-1]) + try: + bdata = BuildData(build_id) + # get target data from OBS + target = {} + # Create or update build.xml + outf = os.path.join('/srv/obs/repos/', project.replace(':', ':/'), + 'build.xml') + if os.path.exists(outf): + bdata.load(open(outf)) + + bdata.add_target(target) + bdata.save(outf) + except BuildDataError, err: + raise LocalError("Unable to generate build.xml: %s" % err) def create_images(prerelease): """Create images using live prerelease repository.""" linked, depended = prerelease.get_parent_project() - builddata = BuildData() - # TODO, update when boss-repomaker updated repo_config = RepoConf('/etc/repos/repos.yaml') @@ -34,17 +62,6 @@ def create_images(prerelease): repo = ProjectRepository(prerelease.obs_project, repo_conf = repo_config, server_conf = server_conf) - # Fill build data - builddata.git_tag = prerelease.git_tag - builddata.git_project = prerelease.git_project - builddata.obs_target_prj = prerelease.target_project - builddata.obs_prj = prerelease.obs_project - builddata.archs.extend(prerelease.get_available_archs()) - builddata.images_path = os.path.join(repo.get_live_repo_path(), - "images") - - repo.save_builddata(builddata, repo.get_live_repo_path()) - for link_prj in linked: # TODO: get_url from repo.yaml configuration link_prj_path = repo.get_latest_repo_path(link_prj) @@ -104,16 +121,21 @@ def main(name, action): git_tag = content.get("GIT_TAG") project = get_prerelease_project_name(obs_target_prj, obs_user, git_tag) + build = BuildService(obs_api, obs_user, obs_passwd) if action == 'create_images': + gen_builddata(build, project) projectbuild = ProjectBuildService(project, obs_api, obs_user, obs_passwd) prerelease = PreRelease2(project, projectbuild) create_images(prerelease) elif action == 'cleanup': - build = BuildService(obs_api, obs_user, obs_passwd) build.cleanup(project, "Cleaned up by %s" % name) else: print "Not supported method of Pre-release jobs:", action if __name__ == '__main__': - sys.exit(main(os.path.basename(sys.argv[0]), sys.argv[1])) + try: + sys.exit(main(os.path.basename(sys.argv[0]), sys.argv[1])) + except LocalError, err: + print err + sys.exit(1)