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