raise LocalError('Not found git-obs-mapping for %s branch %s' % \
(gerrit_prj, gerrit_branch))
-def create(git_url, git_project, git_tag, git_revision, build,
- obs_target_prj, obs_project):
+def create_project(git_url, git_project, git_tag, git_revision, build,
+ obs_target_prj, obs_project):
"""Create prerelease OBS project and upload sources for the build."""
# Create review project if it doesn't exist
except ObsError, error:
LocalError("Unable to create project %s: %s" % (obs_project, error))
+ upload(git_url, git_project, git_tag, git_revision, obs_project, build)
+
+ build.link_project(obs_project, src=obs_target_prj, linktype="localdep")
+
+
+def upload(git_url, git_project, git_tag, git_revision, obs_project, build):
+ """Upload _service file to OBS. Create package if doesn't exist."""
package = os.path.basename(git_project)
if not build.exists(obs_project, package):
try:
except ObsError, error:
raise LocalError("Unable to upload _service to %s: %s" % \
(obs_project, error))
- build.link_project(obs_project, src=obs_target_prj, linktype="localdep")
-
- return 0
-def main(name):
+def main(build_type):
"""
Script entry point.
Parameters:
- name - name of the script
+ build_type - type of the build (prerelease, snapshot)
"""
obs_passwd = os.getenv("OBS_API_PASSWD")
gerrit_project = os.getenv("GERRIT_PROJECT")
gerrit_refname = os.getenv("GERRIT_REFNAME")
+ gerrit_oldrev = os.getenv("GERRIT_OLDREV")
+ gerrit_newrev = os.getenv("GERRIT_NEWREV")
# Triggered by Gerrit - use GERRIT_REFNAME to get tag
git_tag = gerrit_refname.split("refs/tags/")[1]
obs_target_prjs = git_obs_map(os.getenv("GERRIT_PROJECT"), git_branch)
build = BuildService(obs_api, obs_user, obs_passwd)
for obs_target_prj, _obs_stg_prj, _obs_pkg in obs_target_prjs:
- project = get_prerelease_project_name(obs_target_prj, git_tag)
- if is_ref_deleted(os.getenv("GERRIT_OLDREV"),
- os.getenv("GERRIT_NEWREV")):
- rcode = build.cleanup(project, "Cleaned by %s" % name)
- else:
- url = 'ssh://%s:%s' % (os.getenv('GERRIT_HOSTNAME'),
- os.getenv('GERRIT_SSHPORT'))
- rcode = create(url, gerrit_project, git_tag,
- os.getenv("GERRIT_NEWREV"),
- build, obs_target_prj, project)
- if rcode:
- return rcode
+ url = 'ssh://%s:%s' % (os.getenv('GERRIT_HOSTNAME'),
+ os.getenv('GERRIT_SSHPORT'))
+ if build_type == 'prerelease':
+ project = get_prerelease_project_name(obs_target_prj, git_tag)
+ if is_ref_deleted(gerrit_oldrev, gerrit_newrev):
+ build.cleanup(project, "Cleaned by %s" % name)
+ else:
+ create_project(url, gerrit_project, git_tag, gerrit_newrev,
+ build, obs_target_prj, project)
+ elif build_type == 'snapshot':
+ if not is_ref_deleted(gerrit_oldrev, gerrit_newrev):
+ # Upload _service to target project
+ upload(url, gerrit_project, git_tag, gerrit_newrev,
+ obs_target_prj, build)
if __name__ == '__main__':
try:
- sys.exit(main(os.path.basename(sys.argv[0])))
+ sys.exit(main(os.path.basename(sys.argv[1])))
except LocalError, err:
print err
sys.exit(1)