the script now checks for project name on every line read from the log file and appends it to a list named by the project, if the branch is master then it appends all lines into one list, then it checks if there is any data in the list and uploads them to the correct tab that matches the project name or master
91 lines
3.1 KiB
YAML
91 lines
3.1 KiB
YAML
name: Upload Test Results to Google Sheets
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
workflow_call:
|
|
|
|
jobs:
|
|
upload:
|
|
runs-on: self-hosted
|
|
steps:
|
|
- name: Install dependencies
|
|
run: |
|
|
pip install gspread google-auth --break-system-packages
|
|
|
|
- name: Upload test_data.log to Google Sheets
|
|
env:
|
|
GOOGLE_SERVICE_ACCOUNT_JSON: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_JSON }}
|
|
SPREADSHEET_ID: ${{ secrets.SPREADSHEET_ID }}
|
|
run: |
|
|
echo "$GOOGLE_SERVICE_ACCOUNT_JSON" > service_account.json
|
|
|
|
python <<'PYCODE'
|
|
import gspread, json, subprocess
|
|
|
|
creds = json.load(open("service_account.json"))
|
|
gc = gspread.service_account_from_dict(creds)
|
|
sh = gc.open_by_key("${{ secrets.SPREADSHEET_ID }}")
|
|
v = subprocess.run(['git','rev-parse','--show-toplevel'], capture_output=True).stdout.decode().strip()
|
|
print(f"{v}/test_data.log")
|
|
|
|
|
|
def writeRowsToSpreadsheet(data_list, worksheet):
|
|
existing_rows = len(worksheet.get_all_values())
|
|
start_row = existing_rows + 3
|
|
rows_to_append = [row.split() for row in data_list]
|
|
print(f"{rows_to_append}")
|
|
|
|
for i, row in enumerate(rows_to_append):
|
|
worksheet.insert_row(row, start_row + i)
|
|
|
|
|
|
with open(f"{v}/test_data.log", "r") as f:
|
|
lines = [line.strip() for line in f if line.strip()]
|
|
|
|
isMaster = False
|
|
project = lines[0].lower()
|
|
if project == "master":
|
|
isMaster = True
|
|
|
|
engine_data = []
|
|
server_data = []
|
|
ui_data = []
|
|
master_data = []
|
|
|
|
for entry in lines:
|
|
if not isMaster and entry == "engine":
|
|
project = "engine"
|
|
elif not isMaster and entry == "server":
|
|
project = "server"
|
|
elif not isMaster and entry == "ui":
|
|
project = "ui"
|
|
|
|
if project == "engine" and entry != "engine":
|
|
engine_data.append(entry)
|
|
elif project == "server" and entry != "server":
|
|
server_data.append(entry)
|
|
elif project == "ui" and entry != "ui":
|
|
ui_data.append(entry)
|
|
elif project == "master" and entry != "master":
|
|
master_data.append(entry)
|
|
|
|
print("PRINTING FILTERED DATA\n\n")
|
|
print(f"engine\n{engine_data}")
|
|
print(f"server\n{server_data}")
|
|
print(f"ui\n{ui_data}")
|
|
print("\n\n\n")
|
|
|
|
if isMaster and len(master_data) != 0:
|
|
worksheet = sh.worksheet("master")
|
|
writeRowsToSpreadsheet(master_data, worksheet)
|
|
exit(0)
|
|
|
|
if len(engine_data) != 0:
|
|
writeRowsToSpreadsheet(engine_data, sh.worksheet("engine"))
|
|
if len(server_data) != 0:
|
|
writeRowsToSpreadsheet(server_data, sh.worksheet("server"))
|
|
if len(ui_data) != 0:
|
|
writeRowsToSpreadsheet(ui_data, sh.worksheet("ui"))
|
|
|
|
PYCODE
|