Merge pull request #829 from jberry-suse/check_source-skip-changes-only
check_source: skip staging process if only .changes modifications.
This commit is contained in:
commit
4af3945f11
@ -26,6 +26,7 @@ class CheckSource(ReviewBot.ReviewBot):
|
||||
self.devel_whitelist = None
|
||||
self.review_team = 'opensuse-review-team'
|
||||
self.repo_checker = 'factory-repo-checker'
|
||||
self.staging_group = 'factory-staging'
|
||||
self.skip_add_reviews = False
|
||||
|
||||
def check_one_request(self, request):
|
||||
@ -71,7 +72,7 @@ class CheckSource(ReviewBot.ReviewBot):
|
||||
server_service_files=True, expand_link=True)
|
||||
shutil.rmtree(os.path.join(target_package, '.osc'))
|
||||
os.rename(target_package, '_old')
|
||||
old_info = self.package_source_parse(self.apiurl, target_project, target_package)
|
||||
old_info = self.package_source_parse(target_project, target_package)
|
||||
except urllib2.HTTPError:
|
||||
self.logger.error('failed to checkout %s/%s' % (target_project, target_package))
|
||||
|
||||
@ -80,7 +81,7 @@ class CheckSource(ReviewBot.ReviewBot):
|
||||
os.rename(source_package, target_package)
|
||||
shutil.rmtree(os.path.join(target_package, '.osc'))
|
||||
|
||||
new_info = self.package_source_parse(self.apiurl, source_project, source_package, source_revision)
|
||||
new_info = self.package_source_parse(source_project, source_package, source_revision)
|
||||
if new_info['name'] != target_package:
|
||||
shutil.rmtree(dir)
|
||||
self.review_messages['declined'] = "A package submitted as %s has to build as 'Name: %s' - found Name '%s'" % (target_package, target_package, new_info['name'])
|
||||
@ -127,7 +128,13 @@ class CheckSource(ReviewBot.ReviewBot):
|
||||
if self.review_team is not None:
|
||||
self.add_review(self.request, by_group=self.review_team, msg='Please review sources')
|
||||
|
||||
if self.repo_checker is not None:
|
||||
if self.only_changes():
|
||||
self.logger.debug('only .changes modifications')
|
||||
if not self.dryrun:
|
||||
osc.core.change_review_state(self.apiurl, str(self.request.reqid), 'accepted',
|
||||
by_group=self.staging_group,
|
||||
message='skipping the staging process since only .changes modifications')
|
||||
elif self.repo_checker is not None:
|
||||
self.add_review(self.request, by_user=self.repo_checker, msg='Please review build success')
|
||||
|
||||
return True
|
||||
@ -155,7 +162,7 @@ class CheckSource(ReviewBot.ReviewBot):
|
||||
sys.stdout = _stdout
|
||||
return result
|
||||
|
||||
def package_source_parse(self, apiurl, project, package, revision=None):
|
||||
def package_source_parse(self, project, package, revision=None):
|
||||
query = {'view': 'info', 'parse': 1}
|
||||
if revision:
|
||||
query['rev'] = revision
|
||||
@ -178,6 +185,19 @@ class CheckSource(ReviewBot.ReviewBot):
|
||||
|
||||
return ret
|
||||
|
||||
def only_changes(self):
|
||||
u = osc.core.makeurl(self.apiurl, ['request', self.request.reqid],
|
||||
{'cmd': 'diff', 'view': 'xml'})
|
||||
try:
|
||||
diff = ET.parse(osc.core.http_POST(u)).getroot()
|
||||
for f in diff.findall('action/sourcediff/files/file/*[@name]'):
|
||||
if not f.get('name').endswith('.changes'):
|
||||
return False
|
||||
return True
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
|
||||
def check_action_add_role(self, request, action):
|
||||
# Decline add_role request (assumed the bot acting on requests to Factory or similar).
|
||||
message = 'Roles to packages are granted in the devel project, not in %s.' % action.tgt_project
|
||||
@ -225,6 +245,7 @@ class CommandLineInterface(ReviewBot.CommandLineInterface):
|
||||
parser.add_option('--devel-whitelist', dest='devel_whitelist_file', metavar='FILE', help='file containing whitelisted projects (one per line)')
|
||||
parser.add_option('--review-team', dest='review_team', metavar='GROUP', help='review team group added to requests with > 8 diff')
|
||||
parser.add_option('--repo-checker', dest='repo_checker', metavar='USER', help='repo checker user added after accepted review')
|
||||
parser.add_option('--staging-group', metavar='GROUP', help='group used by staging process')
|
||||
parser.add_option('--skip-add-reviews', dest='skip_add_reviews', action='store_true', default=False, help='skip adding review after completing checks')
|
||||
|
||||
return parser
|
||||
@ -240,6 +261,8 @@ class CommandLineInterface(ReviewBot.CommandLineInterface):
|
||||
bot.review_team = self.options.review_team
|
||||
if self.options.repo_checker:
|
||||
bot.repo_checker = self.options.repo_checker
|
||||
if self.options.staging_group:
|
||||
bot.staging_group = self.options.staging_group
|
||||
bot.skip_add_reviews = self.options.skip_add_reviews
|
||||
|
||||
return bot
|
||||
|
Loading…
x
Reference in New Issue
Block a user