dest.append(i)
return dest
- def get_submit_mapping(self, project, branch=None):
+ def get_submit_mapping(self, project, branch=None, include_config=False):
"""Get submit mapping though project or branch"""
mapping = []
+ config_enabled = True
if self.mapping_obj.configure:
# if configure.enable is false then return []
if self.mapping_obj.configure.enable == 'false':
- return mapping
+ config_enabled = False
- if self.mapping_obj.branch:
+ if config_enabled and self.mapping_obj.branch:
for brch in self.mapping_obj.branch:
for prj in brch.project:
if (prj.name == project or prj.name == '/' + project) and ( branch in brch.name.split(",") ):
- mapping.append(self.__encode_to_ascii([brch.OBS_project, brch.OBS_staging_project, prj.OBS_package]))
- return mapping
+ item = self.__encode_to_ascii([brch.OBS_project, brch.OBS_staging_project, prj.OBS_package])
+ if include_config:
+ item.append(self.mapping_obj.configure)
+ mapping.append(item)
return mapping
-def git_obs_map(gerrit_prj, gerrit_branch=None, gitcache=None):
+def git_obs_map(gerrit_prj, gerrit_branch=None, gitcache=None, \
+ gerrit_hostname=None, gerrit_username=None, gerrit_sshport=None, \
+ include_config=False):
"""
Find an OBS project[s correspondent to Gerrit project and branch
by parsing git-obs-mapping.xml.
# get mappings v2
for file in mapping_v2_file_lists:
mymapping_v2 = MappingV2(file)
- obs_prjs.extend(mymapping_v2.get_submit_mapping(gerrit_prj,
- gerrit_branch))
+ obs_prjs.extend(mymapping_v2.get_submit_mapping(gerrit_prj, gerrit_branch,
+ include_config=include_config))
# remove overlapped items
obs_prjs = remove_overlaps(obs_prjs)
print 'Found git-obs-mapping: %s -> %s' % (gerrit_prj, obs_prjs)
return obs_prjs
-
+
def git_ref_map(prjdir=None, mapping_file=None, base_project=None):
"""
Find an OBS Reference Projects correspondent to base_project
obs_pre_prj, package)
def create_project(git_url, git_project, git_tag, git_revision, build,
- obs_target_prj, obs_project, submitter, package):
+ obs_target_prj, obs_project, submitter, package, build_flag=True):
"""Create prerelease OBS project and upload sources for the build."""
# Create review project if it doesn't exist
build.update_info(info, obs_project)
# unlink the project to upload packages
try:
- build.unlink_project(obs_project)
+ if build_flag == True:
+ build.unlink_project(obs_project)
except ObsError, error:
print 'Modify the meta conf to unlink failed: %s' % error
else:
description=json.dumps(info))
except ObsError, error:
LocalError("Unable to create project %s: %s" % (obs_project, error))
+
# change release name of project config in OBS
change_release_name(build, obs_project, git_tag)
except UploadError, err:
raise LocalError(err)
- build.link_project(obs_project, src=obs_target_prj, linktype="localdep")
-
# copy the maintainer list from obs_target_prj meta to corresponding
# prerelease project
copy_person_project_meta(build, obs_target_prj, obs_project)
+ if build_flag != True:
+ return
+
+ build.link_project(obs_project, src=obs_target_prj, linktype="localdep")
+
#create the 'link' package that relate the original package
create_related_packages(build, obs_target_prj, obs_project, package)
#default build flag
build.default_build_flag(obs_project, repo = None, flag="build")
-
#default publish flag
build.default_build_flag(obs_project, repo = None, flag="publish")
-
def get_branch_name(tag):
"""Get branch name by parsing info
from submit tag name.
tagger = mygit.get_tag(tag)
# get list of target projects from git-obs-mapping
- obs_target_prjs = git_obs_map(os.getenv("GERRIT_PROJECT"), git_branch)
+ obs_target_prjs = git_obs_map(os.getenv("GERRIT_PROJECT"), git_branch, include_config=True)
build = BuildService(obs_api, obs_user, obs_passwd)
# prepare submit_info
}
submit_info['pre_created'] = []
- for obs_target_prj, obs_stg_prj, obs_pkg in obs_target_prjs:
+ for obs_target_prj, obs_stg_prj, obs_pkg, build_cfg in obs_target_prjs:
+ enable_build = True
+ if build_cfg.build == 'no':
+ print 'Set disable build for %s' % (obs_target_prj)
+ enable_build = False
url = 'ssh://%s:%s' % (os.getenv('GERRIT_HOSTNAME'),
os.getenv('GERRIT_SSHPORT'))
# get package name from xml files.
while retry_count > 0:
try:
create_project(url, gerrit_project, git_tag, gerrit_newrev,
- build, obs_target_prj, project, submitter, package)
+ build, obs_target_prj, project, submitter, package, build_flag=enable_build)
if pub_enabled:
rest.publish_event("pre_created", {
"project": project,