Last active
August 18, 2022 17:52
-
-
Save guilhermeKodama/09516f9aacf6470d1c47cefa3950db45 to your computer and use it in GitHub Desktop.
Audit Report
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import re | |
import csv | |
import requests | |
# open the file in the write mode | |
f = open('./audit.csv', 'w') | |
# csv header | |
fieldnames = ['published_at', 'tag', 'ticket', 'component', 'pod'] | |
# create the csv writer | |
writer = csv.DictWriter(f, fieldnames=fieldnames) | |
writer.writeheader() | |
def remove_duplicates(tickets): | |
dedup = {} | |
for ticket in tickets: | |
dedup[ticket] = ticket | |
return list(dedup.keys()) | |
def filter_components(components): | |
data = [] | |
for component in components: | |
data.append(component['name']) | |
return data | |
def get_jira_ticket(ticket): | |
url = "https://curebase.atlassian.net/rest/api/2/issue/" + ticket | |
payload={} | |
headers = { | |
'Authorization': 'Basic <token>', | |
'Cookie': 'atlassian.xsrf.token=<token>' | |
} | |
response = requests.request("GET", url, headers=headers, data=payload) | |
return response.json() | |
def get_releases(page): | |
url = "https://api.github.com/repos/Curebase/web-app/releases?page=" + str(page) | |
payload={} | |
headers = { | |
'Authorization': 'Basic <token>' | |
} | |
response = requests.request("GET", url, headers=headers, data=payload) | |
return response.json() | |
def filter_release(releases, tag): | |
for release in releases: | |
if tag == release['tag_name']: | |
return release | |
stream = os.popen('git show-ref --tags') | |
output = stream.read() | |
commit_list = output.splitlines() | |
report = [] | |
for page in range(1, 50): | |
releases = get_releases(page) | |
for github_release in releases: | |
# data = commit.split() | |
# commit_id = data[0] | |
# ref_tag = data[1] | |
# tag = ref_tag.split('/')[2] | |
# github_release = filter_release(releases, tag) | |
if github_release['published_at']: | |
print(github_release['tag_name']) | |
# print(commit_id) | |
# print(tag) | |
# print(github_release['body']) | |
body = github_release['body'] | |
tickets = re.findall('APP-\d+', body) | |
tickets = remove_duplicates(tickets) | |
print(tickets) | |
for ticket in tickets: | |
record = {} | |
ticket_data = get_jira_ticket(ticket) | |
components = filter_components(ticket_data['fields']['components']) | |
pod = ticket_data['fields'].get('customfield_10039') | |
# add record | |
record['published_at'] = github_release['published_at'] | |
record['tag'] = github_release['tag_name'] | |
record['ticket'] = ticket | |
record['component'] = components | |
record['pod'] = pod['value'] if pod else None | |
report.append(record) | |
# get metadata | |
# stream = os.popen('git show ' + tag + ' --quiet') | |
# metadata = stream.read() | |
# print(metadata) | |
# print(report) | |
writer.writerows(report) | |
f.close() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment