github.com/vipernet-xyz/tendermint-core@v0.32.0/scripts/release_management/github-draft.py (about) 1 #!/usr/bin/env python 2 3 # Create a draft release on GitHub. By default in the tendermint/tendermint repo. 4 # Optimized for CircleCI 5 6 import argparse 7 import httplib 8 import json 9 import os 10 from base64 import b64encode 11 12 def request(org, repo, data): 13 user_and_pass = b64encode(b"{0}:{1}".format(os.environ['GITHUB_USERNAME'], os.environ['GITHUB_TOKEN'])).decode("ascii") 14 headers = { 15 'User-Agent': 'tenderbot', 16 'Accept': 'application/vnd.github.v3+json', 17 'Authorization': 'Basic %s' % user_and_pass 18 } 19 20 conn = httplib.HTTPSConnection('api.github.com', timeout=5) 21 conn.request('POST', '/repos/{0}/{1}/releases'.format(org,repo), data, headers) 22 response = conn.getresponse() 23 if response.status < 200 or response.status > 299: 24 print("{0}: {1}".format(response.status, response.reason)) 25 conn.close() 26 raise IOError(response.reason) 27 responsedata = response.read() 28 conn.close() 29 return json.loads(responsedata) 30 31 32 def create_draft(org,repo,branch,version): 33 draft = { 34 'tag_name': version, 35 'target_commitish': '{0}'.format(branch), 36 'name': '{0} (WARNING: ALPHA SOFTWARE)'.format(version), 37 'body': '<a href=https://github.com/{0}/{1}/blob/{2}/CHANGELOG.md#{3}>https://github.com/{0}/{1}/blob/{2}/CHANGELOG.md#{3}</a>'.format(org,repo,branch,version.replace('.','')), 38 'draft': True, 39 'prerelease': False 40 } 41 data=json.dumps(draft) 42 return request(org, repo, data) 43 44 if __name__ == "__main__": 45 parser = argparse.ArgumentParser() 46 parser.add_argument("--org", default="tendermint", help="GitHub organization") 47 parser.add_argument("--repo", default="tendermint", help="GitHub repository") 48 parser.add_argument("--branch", default=os.environ.get('CIRCLE_BRANCH'), help="Branch to build from, e.g.: v1.0") 49 parser.add_argument("--version", default=os.environ.get('CIRCLE_TAG'), help="Version number for binary, e.g.: v1.0.0") 50 args = parser.parse_args() 51 52 if not os.environ.has_key('GITHUB_USERNAME'): 53 raise parser.error('environment variable GITHUB_USERNAME is required') 54 55 if not os.environ.has_key('GITHUB_TOKEN'): 56 raise parser.error('environment variable GITHUB_TOKEN is required') 57 58 release = create_draft(args.org,args.repo,args.branch,args.version) 59 60 print(release["id"]) 61