From 11bf13c363cb8f4c964dc2148436a1b0c7b2954f Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Mon, 14 Apr 2014 18:24:42 +0200 Subject: [PATCH] Check for no open issues before build release --- dev-tools/build_release.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/dev-tools/build_release.py b/dev-tools/build_release.py index 97f895488d6..0771ac9f348 100644 --- a/dev-tools/build_release.py +++ b/dev-tools/build_release.py @@ -30,6 +30,8 @@ import socket import urllib.request from http.client import HTTPConnection +from http.client import HTTPSConnection + """ This tool builds a release from the a given elasticsearch branch. @@ -254,7 +256,33 @@ def build_release(run_tests=False, dry_run=True, cpus=1): $ apt-get install rpm # on Ubuntu et.al """) - +# Uses the github API to fetch open tickets for the given release version +# if it finds any tickets open for that version it will throw an exception +def ensure_no_open_tickets(version): + version = "v%s" % version + conn = HTTPSConnection('api.github.com') + try: + log('Checking for open tickets on Github for version %s' % version) + log('Check if node is available') + print( 'https://api.github.com:443/repos/elasticsearch/elasticsearch/issues?state=open&labels=%s' % version) + conn.request('GET', '/repos/elasticsearch/elasticsearch/issues?state=open&labels=%s' % version, headers= {'User-Agent' : 'Elasticsearch version checker'}) + res = conn.getresponse() + if res.status == 200: + issues = json.loads(res.read().decode("utf-8")) + if issues: + urls = [] + for issue in issues: + urls.append(issue['url']) + raise RuntimeError('Found open issues for release version %s see - %s' % (version, urls)) + else: + log("No open issues found for version %s" % version) + else: + raise RuntimeError('Failed to fetch issue list from Github for release version %s' % version) + except socket.error as e: + log("Failed to fetch issue list from Github for release version %s' % version - Exception: [%s]" % (version, e)) + #that is ok it might not be there yet + finally: + conn.close() def wait_for_node_startup(host='127.0.0.1', port=9200,timeout=15): for _ in range(timeout): @@ -516,6 +544,7 @@ if __name__ == '__main__': if build: release_version = find_release_version(src_branch) + ensure_no_open_tickets(release_version) if not dry_run: smoke_test_version = release_version head_hash = get_head_hash()