-
-
Save JeffPaine/3145490 to your computer and use it in GitHub Desktop.
| 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']) |
How can I create issue in private repository, please help me, thank you.
@tamim1992 not sure if you ever got the private repo working, but here is what I did:
import requests
import json
PROJECT_VERSIONS = {
"molstar": {
"owner": "molstar",
"repo": "molstar",
"custom_repo": "molstar",
"release": "v3.32.0"
},
"indgio": {
"owner": "epam",
"repo": "indigo",
"custom_repo": "Indigo",
"release": "indigo-1.0.7"
},
"ketcher": {
"owner": "epam",
"repo": "ketcher",
"custom_repo": "Ketcher",
"release": "v2.7.2"
}
}
RELEASES_URL = "https://api.github.com/repos/{owner}/{repo}/releases"
ISSUE_URL = "https://api.github.com/repos/{owner}/{repo}/issues"
ISSUES_ADD_LABEL = "https://api.github.com/repos/{owner}/{repo}/issues/{issue_id}"
ORGANIZATION = "QuanMol"
TOKEN = "" # This is the PAT token
headers = {
"Authorization": f"token {TOKEN}",
"Accept": "application/vnd.github+json"
}
# Create an authenticated session to create the issue
session = requests.Session()
session = requests.Session()
session.auth = ("luna215", TOKEN)
def add_label_to_issue(custom_repo: str, issue_id: str):
labels = {
"labels": ["P0 - Critical"]
}
session.post(ISSUES_ADD_LABEL.format(owner=ORGANIZATION, repo=custom_repo, issue_id=issue_id), data=json.dumps(labels))
print(f"Labels added to issue {issue_id}")
def create_update_issue(latest_release: str, current_release: str, custom_repo: str):
"""Create an issue that describes to update the project"""
issue = {
"title": f"Update package to {latest_release}!",
"body": f"The package is currently using {current_release} and we need to update it to {latest_release}"
}
response = session.post(ISSUE_URL.format(owner=ORGANIZATION, repo=custom_repo), data=json.dumps(issue)).json()
issue_id = response["number"]
add_label_to_issue(custom_repo, issue_id)
if __name__ == "__main__":
for project_name, project_info in PROJECT_VERSIONS.items():
owner = project_info["owner"]
repo = project_info["repo"]
custom_repo = project_info["custom_repo"]
current_release = project_info["release"]
response = requests.get(RELEASES_URL.format(owner=owner, repo=repo))
data = response.json()
latest_release = data[0]["tag_name"]
if latest_release != current_release:
# TODO: check if issue exists to update project
print(f"{project_name} needs to be updated! {current_release} --> {latest_release}")
create_update_issue(latest_release, current_release, custom_repo)
I'll test this script this weekend, its got me thinking of ways to improve upon what you did.
- Creating a database of choices
- Add this code to my data_workbench when I do EDA.
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.
try this bud, my latest gist post
If you like to upload images to a GitHub issue, you can use gitshot: uses release assets + CLI to post images
Thanks a lot @DerBla