Skip to content

Instantly share code, notes, and snippets.

@guilhermeKodama
Last active August 18, 2022 17:52
Show Gist options
  • Save guilhermeKodama/09516f9aacf6470d1c47cefa3950db45 to your computer and use it in GitHub Desktop.
Save guilhermeKodama/09516f9aacf6470d1c47cefa3950db45 to your computer and use it in GitHub Desktop.
Audit Report
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