-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathqa_integration_results.py
60 lines (56 loc) · 2.26 KB
/
qa_integration_results.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import os
import csv
import requests
def get_user_details(login_name, token):
headers = {
"Authorization": f"token {token}",
"Accept": "application/vnd.github.v3+json"
}
url = f"https://api.github.com/users/{login_name}"
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()["name"]
else:
print("Failed to fetch user details")
return None
def get_workflow_runs(owner, repo, job_name, token):
headers = {
"Authorization": f"token {token}",
"Accept": "application/vnd.github.v3+json"
}
url = f"https://api.github.com/repos/{owner}/{repo}/actions/runs"
params = {
"event": "workflow_dispatch",
"head_branch": "main"
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
return response.json()["workflow_runs"]
else:
print(f"Failed to fetch workflow runs for job {job_name}")
return None
# Example usage:
owner = "Percona-Lab"
repo = "qa-integration"
job_names = ["PMM_PDPGSQL", "PMM_PS", "PMM_PSMDB_PBM", "PMM_PXC", "PMM_PXC_PROXYSQL"]
token = os.environ.get("PK_GITHUB_TOKEN") # Get token from environment variable
for job_name in job_names:
workflow_runs = get_workflow_runs(owner, repo, job_name, token)
if workflow_runs:
os.makedirs("results", exist_ok=True)
csv_filename = f'results/workflow_runs_{job_name}.csv'
with open(csv_filename, 'w', newline='') as csvfile:
fieldnames = ['Run ID', 'Triggered By', 'Created At', 'Conclusion']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for run in workflow_runs:
if run['name'] == job_name:
triggered_by = run["triggering_actor"]["login"]
user_name = get_user_details(triggered_by, token)
writer.writerow({
'Run ID': run["id"],
'Triggered By': user_name if user_name else triggered_by,
'Created At': run["created_at"],
'Conclusion': run["conclusion"]
})
print(f"Data exported to {csv_filename} file successfully.")