You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by si...@apache.org on 2017/04/11 06:28:42 UTC

bookkeeper git commit: BOOKKEEPER-1021: Improve merge script to handle github reviews api

Repository: bookkeeper
Updated Branches:
  refs/heads/master f30f60889 -> ab707d2c6


BOOKKEEPER-1021: Improve merge script to handle github reviews api

Author: Sijie Guo <si...@apache.org>

Reviewers: Govind Menon <None>

Closes #123 from sijie/sijie/improve_merge_scripts


Project: http://git-wip-us.apache.org/repos/asf/bookkeeper/repo
Commit: http://git-wip-us.apache.org/repos/asf/bookkeeper/commit/ab707d2c
Tree: http://git-wip-us.apache.org/repos/asf/bookkeeper/tree/ab707d2c
Diff: http://git-wip-us.apache.org/repos/asf/bookkeeper/diff/ab707d2c

Branch: refs/heads/master
Commit: ab707d2c6b3251b2a9a30a6d14074704460b3da5
Parents: f30f608
Author: Sijie Guo <si...@apache.org>
Authored: Mon Apr 10 23:28:37 2017 -0700
Committer: Sijie Guo <si...@apache.org>
Committed: Mon Apr 10 23:28:37 2017 -0700

----------------------------------------------------------------------
 dev/bk-merge-pr.py | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/ab707d2c/dev/bk-merge-pr.py
----------------------------------------------------------------------
diff --git a/dev/bk-merge-pr.py b/dev/bk-merge-pr.py
index a3fd206..e3904a8 100755
--- a/dev/bk-merge-pr.py
+++ b/dev/bk-merge-pr.py
@@ -74,11 +74,13 @@ DEV_BRANCH_NAME = "master"
 
 DEFAULT_FIX_VERSION = os.environ.get("DEFAULT_FIX_VERSION", "0.9.1.0")
 
-def get_json(url):
+def get_json(url, preview_api = False):
     try:
         request = urllib2.Request(url)
         if GITHUB_OAUTH_KEY:
             request.add_header('Authorization', 'token %s' % GITHUB_OAUTH_KEY)
+        if preview_api:
+            request.add_header('Accept', 'application/vnd.github.black-cat-preview+json')
         return json.load(urllib2.urlopen(request))
     except urllib2.HTTPError as e:
         if "X-RateLimit-Remaining" in e.headers and e.headers["X-RateLimit-Remaining"] == '0':
@@ -395,10 +397,26 @@ def get_reviewers(pr_num):
             if approval_msg in comment['body'].lower():
                 reviewers_ids.add(comment['user']['login'])
 
+    approval_review_states = ['approved']
+    pr_reviews = get_json('{0}/pulls/{1}/reviews'.format(GITHUB_API_BASE, pr_num), True)
+    for review in pr_reviews:
+        for approval_state in approval_review_states:
+            if approval_state in review['state'].lower():
+                reviewers_ids.add(review['user']['login'])
+
+    if len(reviewers_ids) == 0:
+        fail("No approvals found in this pull request")
+
     reviewers_emails = []
     for reviewer_id in reviewers_ids:
+        username = None
+        useremail = None
         user = get_json("%s/users/%s" % (GITHUB_API_URL, reviewer_id))
-        reviewers_emails += ['%s <%s>' % (user['name'].strip(), user['email'].strip())]
+        useremail = user['email'].strip() if user['email'] or None
+        username = user['name'].strip() if user['name'] or useremail
+        if username is None:
+            continue
+        reviewers_emails.append('{0} <{1}>'.format(username, useremail))
     return ', '.join(reviewers_emails)
 
 def main():