class GBSBuild:
"""A class which supports with statement"""
- def __init__(self, gbsbuild_tag, obs_prj, basic_url, snapshot_num, trigger_category, new_pkg_list, rm_pkg_list, gbsbuild_workspace):
+ def __init__(self, gbsbuild_tag, obs_prj, basic_url, snapshot_num, trigger_category, new_pkg_list, rm_pkg_list, rm_from_img_list, gbsbuild_workspace):
""" Initialize GBSBuild class"""
print "-----------------------------------------------------"
print "Initialize GBS Build Class"
if each_line.find(git_name) != -1:
rm_pkg_found = 'true'
break
+ #if rm package is found in manifest file, don't perform adding each_line to manifest file
if rm_pkg_found == 'true':
continue
gbs_update_dashboard(bypass_data, via='direct_call')
def get_snapshot_id(obs_prj):
- #psk temprary for building test
- curr_date=datetime.today().strftime("%Y%m%d")
- #curr_date='20180305'
+ curr_date = os.getenv('SPECIFIC_DATE_BUILD')
+ if not curr_date:
+ curr_date=datetime.today().strftime("%Y%m%d")
basic_url= os.getenv('URL_PUBLIC_REPO_BASE') + '/snapshots/tizen/'
profile = obs_prj.replace("Tizen:","").replace(":","-").lower()
profile_url = basic_url+profile+'/'
"source_snapshot": snapshot,
"main_project" : obs_prj,
"mode" : "queued",
+ "git_ref_mapping_info": contents['git_ref_mapping_info'],
}
# submitter='sk7.park@samsung.com'
# transform_packages=[{'platform/core/dotnet/build-tools': {'commit': '5bc00509597ae289c30bf4498bbb96e51dfe13b5', 'image': 'include', 'build': 'include'}}]
trigger_category = os.getenv('TRIGGER_CATEGORY')
new_pkg_list = os.getenv('NEW_PKG_LIST')
rm_pkg_list = os.getenv('RM_PKG_LIST')
- rm_from_img = os.getenv('RM_FROM_IMG')
+ rm_from_img_list = os.getenv('RM_FROM_IMG')
# If there is no direct input from input parameters, let build parameters come from trigger_info
if not obs_prj:
if pkg.values()[0]['build'] != 'include':
rm_pkg_list += (pkg.keys()[0]+' ')
rm_pkg_list.rstrip(' ')
+ if not rm_from_img_list:
+ rm_from_img_list = ''
+ if contents.get("packages"):
+ for pkg in contents.get("packages"):
+ if pkg.values()[0]['build'] == 'include' and pkg.values()[0]['image'] != 'include':
+ rm_from_img_list += (pkg.keys()[0]+' ')
+ rm_from_img_list.rstrip(' ')
gbsbuild_tag = contents.get("tag")
- print "Build Parameters:\nobs_prj: %s\nsnapshot_num: %s\ntrigger_category: %s\nnew_pkg_list: %s\nrm_pkg_list: %s\ngbsbuild_tag:%s\n" %(obs_prj,snapshot_num,trigger_category,new_pkg_list,rm_pkg_list,gbsbuild_tag)
+ print "Build Parameters:\nobs_prj: %s\nsnapshot_num: %s\ntrigger_category: %s\nnew_pkg_list: %s\nrm_pkg_list: %s\nrm_from_img_list: %s\ngbsbuild_tag:%s\n" %(obs_prj,snapshot_num,trigger_category,new_pkg_list,rm_pkg_list,rm_from_img_list,gbsbuild_tag)
global buildmonitor_enabled
buildmonitor_enabled = os.getenv("BUILDMONITOR_ENABLED", "0") != "0"
print 'gbs fullbuild start which links to obs project: %s' %obs_prj
- gbsbuild = GBSBuild(gbsbuild_tag, obs_prj, basic_url, snapshot_num, trigger_category, new_pkg_list, rm_pkg_list, gbsbuild_workspace)
+ gbsbuild = GBSBuild(gbsbuild_tag, obs_prj, basic_url, snapshot_num, trigger_category, new_pkg_list, rm_pkg_list, rm_from_img_list, gbsbuild_workspace)
gbsbuild_dic = gbsbuild.convert_gbsbuild_to_dictionary()
print "gbsbuild_dic : %s" %gbsbuild_dic
'repository':repo,
'architecture':arch,
'new_pkg_list':new_pkg_list,
- 'rm_pkg_list':rm_pkg_list})
+ 'rm_pkg_list':rm_pkg_list,
+ 'rm_from_img_list':rm_from_img_list})
if buildmonitor_enabled:
gbs_update_data = {"tag" : gbsbuild_dic['gbsbuild_tag'],
gbs_update_dashboard(gbs_update_data,via='trigger',trigger_name=mode)
# TRIGGER NEXT GBSFULLBUILD-CREATE-SNAPSHOT
+ git_ref_mapping_info = contents.get('git_ref_mapping_info',{})
trigger_next("gbsdbbuild-create-snapshot",\
- {'gbsbuild_dic':gbsbuild_dic})
+ {'gbsbuild_dic':gbsbuild_dic,
+ 'git_ref_mapping_info':git_ref_mapping_info
+ })
if __name__ == '__main__':
from common.snapshot import Snapshot, SnapshotError, snapshot_project_enabled
from common.utils import make_latest_link
from common.send_mail import prepare_mail
-from common.gbsutils import GBSBuild,gbs_remote_jenkins_build_job,gbs_update_dashboard
+from common.gbsutils import gbs_remote_jenkins_build_job,gbs_update_dashboard
class LocalError(Exception):
"""Local error exception."""
'snapshot_name':gbsbuild_dic['snapshot_build_id'],
'gbsfullbuild_string': update_message})
+ # trigger gbsdbbuild update meta in case of reference snapshot building
+ git_ref_mapping_info = fields.get('git_ref_mapping_info',{})
if gbsbuild_dic["gbsbuild_tag"].startswith('REF') and overall_gbsbuild_status == 'S':
- gbsmeta_data = {"triggered_from": 'gbsdbbuild_create_snapshot'
+ gbsmeta_data = {"triggered_from" : 'gbsdbbuild_create_snapshot',
+ "git_ref_mapping_info" : git_ref_mapping_info
}
trigger_next("gbsdbbuild-update-meta",gbsmeta_data)
architecture = content['architecture']
new_pkg_list = content['new_pkg_list']
rm_pkg_list = content['rm_pkg_list']
+ rm_from_img_list = content['rm_from_img_list']
global buildmonitor_enabled
buildmonitor_enabled = os.getenv("BUILDMONITOR_ENABLED", "0") != "0"
gbsbuild_sub = GBSBuild(gbsbuild_dic['gbsbuild_tag'], gbsbuild_dic['obs_prj'], basic_url,\
gbsbuild_dic['snapshot_num'], gbsbuild_dic['trigger_category'], new_pkg_list, rm_pkg_list,\
- gbsbuild_dic['gbsbuild_workspace'])
+ rm_from_img_list, gbsbuild_dic['gbsbuild_workspace'])
gbsbuild_sub_dic = gbsbuild_sub.convert_gbsbuild_to_dictionary()
print "gbsbuild_sub_dic : %s" %gbsbuild_sub_dic
print '%s, branch %s has nothing to commit' %(git_prj,git_branch)
-def prepare_ref_binary():
+def prepare_ref_binary(git_ref_mapping_info):
""" prepare_ref_binary_by_git"""
print "----------prepare_ref_binary_by_git start--------"
- git_prj = 'scm/git-ref-mapping'
- git_branch = GIT_REF_MAPPING_BRANCH
+ git_prj = git_ref_mapping_info['git_prj']
+ git_branch = git_ref_mapping_info['git_branch']
filename = 'git-ref-mapping.xml'
tmpdir = tempfile.mkdtemp(prefix=workspace+'/')
atexit.register(shutil.rmtree, tmpdir)
return 1
mygit = Git(prjdir)
mygit.checkout(git_branch)
- commit_msg=mygit.show(git_branch).split('\n')[4].replace(" ","")
- commit_log=mygit.show(git_branch)
+ commit_msg=mygit.show(git_ref_mapping_info['newrev']).split('\n')[4].replace(" ","")
+ commit_log=mygit.show(git_ref_mapping_info['newrev'])
ref_binary = {}
base_prj_list = {}
print '---[JOB STARTED]----------------------------------------'
- git_info = {}
+ git_ref_mapping_info = {}
#comment out because this job is triggered by gerrit event
event = get_gerrit_event()
# event = trigger_info(os.getenv("TRIGGER_INFO"))
"event %s! Only ref-updated events are allowed" \
%(event['event_type'], event['project'])
return 1
- if event['refname'] != GIT_REF_MAPPING_BRANCH:
- print "Configuration error: git branch of scm/git-ref-mapping mismatched!!"
- return 1
+ git_ref_mapping_info['git_prj'] = event['project']
+ git_ref_mapping_info['git_branch'] = event['refname']
+ git_ref_mapping_info['newrev'] = event['newrev']
else:
print 'gbsdbbuild-update-meta job is triggered by other jenkins job\n\
gbsdbbuild-create-snapshot'
- content = trigger_info(os.getenv("TRIGGER_INFO"))
+ contents = trigger_info(os.getenv("TRIGGER_INFO"))
is_staging = ''
- if content['triggered_from'] != 'gbsdbbuild_create_snapshot':
+ if contents['triggered_from'] != 'gbsdbbuild_create_snapshot':
print 'Trigger error: gbsdbbuild-update-meta job is not triggered by gbsdbbuild-create-snapshot!!'
return 1
+ git_ref_mapping_info = contents['git_ref_mapping_info']
- (ref_binary,commit_msg,build_profile_snapshot_id_list) = prepare_ref_binary()
+ (ref_binary,commit_msg,build_profile_snapshot_id_list) = prepare_ref_binary(git_ref_mapping_info)
print "commit_msg='%s'" %commit_msg
print 'Each reference snapshot numbers are like below'
for build_profile_snapshot_id in build_profile_snapshot_id_list:
trigger_next("gbs_build_dispatcher",\
{"menu" : "Ref Fullbuild",
+ "git_ref_mapping_info" : git_ref_mapping_info,
'build_profile_snapshot_id': build_profile_snapshot_id})
if __name__ == '__main__':