"""This job will help submit the changes to a temporary OBS project when SR created.
"""
+import os
+import sys
+import re
+
from common.envparas import export
from common import utils
from common.git import Git, clone_gitproject
-from common.tempbuildpkg import TempBuildService
-from common.buildtrigger import trigger_info
-from testprojects.prerelease import PreRelease
-import os
-import tempfile
-import time
-import sys
+from common.tempbuildpkg import TempBuildService, ProjectRepository
+from common.buildtrigger import trigger_info, trigger_next
+from testprojects.prerelease import PreRelease, PreRelease2
envparas = ['JENKINS_HOME',
'WORKSPACE',
else:
print "WARN: Temporary repo doesn't exist!"
+
+def create_images(prerelease):
+
+ linked, depended = prerelease.get_parent_project()
+ repo = ProjectRepository(project)
+
+ print linked, depended
+ for link_prj in linked:
+ # TODO: get_url from repo.yaml configuration
+ link_prj_path = repo.get_latest_repo_path(link_prj) or '/srv/snapshots/trunk/common/latest'
+ print link_prj_path
+ repo.extract_image_ks(repo.get_live_repo_path(),
+ link_prj_path)
+
+ ks_info = repo.get_valid_image_ks(os.path.join(repo.get_live_repo_path(),
+ 'builddata'))
+
+ url_replace = {}
+
+ new_repo_line = "repo --name=prerelease --baseurl=%s --save --ssl_verify=no --priority 1" \
+ %repo.get_live_repo_pub_url()
+
+ # TODO: url_replace
+ url_replace['Tizen-main'] = ""
+ url_replace['Tizen-base'] = ""
+ for ks in ks_info.keys():
+ new_ks_lines = []
+ with open(os.path.join(repo.get_live_repo_path(),'builddata',
+ ks_info[ks]['path'])) as ks_fh:
+ for line in ks_fh.readlines():
+ if line.startswith('repo') and \
+ 'baseurl=' in line and \
+ '@BUILD_ID@' in line:
+ for name in url_replace.keys():
+ if line.find('--name=%s' %name) > 0:
+ line = re.sub(r'--baseurl=http.*/repos/([a-zA-z\-]*)',
+ r'--baseurl=%s' %url_replace[name],
+ line)
+ new_ks_lines.append(line.strip())
+ print new_ks_lines
+ new_ks_lines.insert(new_ks_lines.index('%packages')-1,
+ new_repo_line)
+
+ ks_info[ks]['kickstart'] = '\n'.join(new_ks_lines)
+
+ for index, image_info in enumerate(ks_info.values()):
+ trigger_next('%s/image_trigger_%s' %(WORKSPACE, index),
+ image_info)
+
if __name__ == '__main__':
action = sys.argv[1]
locals().update(trigger_info(TRIGGER_INFO))
- prerelease = PreRelease(OBS_REQ_PRJ, OBS_API_USERNAME, GIT_TAG, GIT_PROJECT)
-
if action == 'create':
+ prerelease = PreRelease(OBS_REQ_PRJ, OBS_API_USERNAME,
+ GIT_TAG, GIT_PROJECT)
create(prerelease)
elif action == 'cleanup':
+ prerelease = PreRelease(OBS_REQ_PRJ, OBS_API_USERNAME,
+ GIT_TAG, GIT_PROJECT)
cleanup(prerelease)
+ elif action == 'create_images':
+ build = TempBuildService(project, OBS_API_URL,
+ OBS_API_USERNAME, OBS_API_PASSWD)
+ prerelease = PreRelease2(project, build)
+ create_images(prerelease)
else:
print "Not support method of Pre-release jobs"
class PreRelease2(PreRelease):
"""pre-release project class for repo maker"""
- def __init__(self, obs_project, bs):
+ def __init__(self, obs_project, packagebuild):
match = re.match("home:(.*):prerelease:(.*):([\.\w-]*)", obs_project)
if not match:
raise Exception, "Ivalid project name found, %s" %obs_project
-
+ self.packagebuild = packagebuild
self.user = match.group(1)
self.target_project = match.group(2)
+
PreRelease.__init__(self, self.target_project, self.user, '', '')
self.obs_project = obs_project
self.tag_time_stamp = match.group(3)
- self.bs = bs
+ self.update_git_info()
- def get_repo_id(self, extr_repo=None):
+ def get_parent_project(self, repo_category = 'standard'):
+ return self.packagebuild.bs.get_parent_project(self.obs_project,
+ repo_category)
- if extr_repo:
- return "%s.%s" %(os.path.basename(os.path.realpath("%s/latest" %(extr_repo['SnapshotDir']))),
- self.tag_time_stamp)
- else:
- # TODO, not support yet
- return self.tag_time_stamp
+ def update_git_info(self):
+ desp = self.packagebuild.bs.get_project_desp(self.obs_project)
+ for line in desp.split('\n'):
+ if line.startswith('GIT_TAG'):
+ self.git_tag = line.split(':')[1].strip()
+ elif line.startswith('GIT_PROJECT'):
+ self.git_project = line.split(':')[1].strip()
def repo_define(self, event_fields, server_conf, repos_conf):
import yaml