import json | |
import requests | |
# Authentication for user filing issue (must have read/write access to | |
# repository to add issue to) | |
USERNAME = 'CHANGEME' | |
PASSWORD = 'CHANGEME' | |
# The repository to add this issue to | |
REPO_OWNER = 'CHANGEME' | |
REPO_NAME = 'CHANGEME' | |
def make_github_issue(title, body=None, assignee=None, milestone=None, labels=None): | |
'''Create an issue on github.com using the given parameters.''' | |
# Our url to create issues via POST | |
url = 'https://api.github.com/repos/%s/%s/issues' % (REPO_OWNER, REPO_NAME) | |
# Create an authenticated session to create the issue | |
session = requests.session(auth=(USERNAME, PASSWORD)) | |
# Create our issue | |
issue = {'title': title, | |
'body': body, | |
'assignee': assignee, | |
'milestone': milestone, | |
'labels': labels} | |
# Add the issue to our repository | |
r = session.post(url, json.dumps(issue)) | |
if r.status_code == 201: | |
print 'Successfully created Issue "%s"' % title | |
else: | |
print 'Could not create Issue "%s"' % title | |
print 'Response:', r.content | |
make_github_issue('Issue Title', 'Body text', 'assigned_user', 3, ['bug']) |
This comment has been minimized.
This comment has been minimized.
Fixed the problem: |
This comment has been minimized.
This comment has been minimized.
Works great with the fix by nikhilgupta10 and I needed to set milestone to None |
This comment has been minimized.
This comment has been minimized.
also 'labels': [] |
This comment has been minimized.
This comment has been minimized.
|
This comment has been minimized.
This comment has been minimized.
import os
import json
import requests
# Authentication for user filing issue (must have read/write access to
# repository to add issue to)
USERNAME = 'CHANGEME'
PASSWORD = 'CHANGEME'
# The repository to add this issue to
REPO_OWNER = 'CHANGEME'
REPO_NAME = 'CHANGEME'
def make_github_issue(title, body=None, labels=None):
'''Create an issue on github.com using the given parameters.'''
# Our url to create issues via POST
url = 'https://api.github.com/repos/%s/%s/issues' % (REPO_OWNER, REPO_NAME)
# Create an authenticated session to create the issue
session = requests.Session()
session.auth = (USERNAME, PASSWORD)
# Create our issue
issue = {'title': title,
'body': body,
'labels': labels}
# Add the issue to our repository
r = session.post(url, json.dumps(issue))
if r.status_code == 201:
print ('Successfully created Issue {0:s}'.format(title))
else:
print ('Could not create Issue {0:s}'.format(title))
print ('Response:', r.content) |
This comment has been minimized.
This comment has been minimized.
Using bulk import of issues, you may cause tons of notifications as well as ban from GitHub. Use new API described at https://gist.github.com/jonmagic/5282384165e0f86ef105. Known limitation - you cannot assign more than one person to issue. New API supports issue timestamps. # -*- coding: utf-8 -*-
# Uses Python 2.7
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import requests
import json
# Authentication for user filing issue (must have read/write access to
# repository to add issue to)
USERNAME = os.environ['GITHUB_USER']
TOKEN = os.environ['GITHUB_TOKEN']
# The repository to add this issue to
REPO_OWNER = USERNAME
REPO_NAME = 'reponame'
def make_github_issue(title, body=None, created_at=None, closed_at=None, updated_at=None, assignee=None, milestone=None, closed=None, labels=None):
# Create an issue on github.com using the given parameters
# Url to create issues via POST
url = 'https://api.github.com/repos/%s/%s/import/issues' % (REPO_OWNER, REPO_NAME)
# Headers
headers = {
"Authorization": "token %s" % TOKEN,
"Accept": "application/vnd.github.golden-comet-preview+json"
}
# Create our issue
data = {'issue': {'title': title,
'body': body,
'created_at': created_at,
'closed_at': closed_at,
'updated_at': updated_at,
'assignee': assignee,
'milestone': milestone,
'closed': closed,
'labels': labels}}
payload = json.dumps(data)
# Add the issue to our repository
response = requests.request("POST", url, data=payload, headers=headers)
if response.status_code == 202:
print 'Successfully created Issue "%s"' % title
else:
print 'Could not create Issue "%s"' % title
print 'Response:', response.content
title = 'Pretty title'
body = 'Beautiful body'
created_at = "2014-01-01T12:34:58Z"
closed_at = "2014-01-02T12:24:56Z"
updated_at = "2014-01-03T11:34:53Z"
assignee = 'username'
milestone = 1
closed = False
labels = [
"bug", "low", "energy"
]
make_github_issue(title, body, created_at, closed_at, updated_at, assignee, milestone, closed, labels) |
This comment has been minimized.
This comment has been minimized.
in case someone still stumbles in this google high ranked code, there is an official github cli tool, still in beta but pretty: https://github.com/cli/cli/tree/v0.9.0 |
This comment has been minimized.
This comment has been minimized.
How do I get the bug ID shown immediately in the log when a bug is created? At the moment in the log, we can find "Successfully created Issue "%s"' % title". But how to see the newly created bug ID in the log? |
This comment has been minimized.
This comment has been minimized.
Can we "update" issue title using github API? or modifying the above code? |
This comment has been minimized.
This comment has been minimized.
I made an updated version. |
This comment has been minimized.
This comment has been minimized.
I tried using @rapekas way of posting issues but was having some trouble. I receive the 202 code which means that the request was successful but for some reason the issue does not show up when I check my account. Has anyone dealt with this? |
This comment has been minimized.
Hi, Do you have an updated version of it?
For example: session = requests.session(auth=(USERNAME, PASSWORD)) is not working with an error: TypeError: session() takes no arguments (1 given)
I changed it to "session = requests.Session(auth=(USERNAME, PASSWORD)) " and still it fails with an error: TypeError: init() got an unexpected keyword argument 'auth'
any help is much appreciated.