ClickHouse/tests/ci/commit_status_helper.py
2022-03-18 16:31:19 +01:00

62 lines
1.6 KiB
Python

#!/usr/bin/env python3
import time
import os
import csv
from env_helper import GITHUB_REPOSITORY
from ci_config import CI_CONFIG
RETRY = 5
def override_status(status, check_name, invert=False):
if CI_CONFIG["tests_config"].get(check_name, {}).get("force_tests", False):
return "success"
if invert:
if status == 'success':
return 'error'
return 'success'
return status
def get_commit(gh, commit_sha, retry_count=RETRY):
for i in range(retry_count):
try:
repo = gh.get_repo(GITHUB_REPOSITORY)
commit = repo.get_commit(commit_sha)
return commit
except Exception as ex:
if i == retry_count - 1:
raise ex
time.sleep(i)
# just suppress warning
return None
def post_commit_status(gh, sha, check_name, description, state, report_url):
for i in range(RETRY):
try:
commit = get_commit(gh, sha, 1)
commit.create_status(
context=check_name,
description=description,
state=state,
target_url=report_url,
)
break
except Exception as ex:
if i == RETRY - 1:
raise ex
time.sleep(i)
def post_commit_status_to_file(file_path, description, state, report_url):
if os.path.exists(file_path):
raise Exception(f'File "{file_path}" already exists!')
with open(file_path, 'w', encoding='utf-8') as f:
out = csv.writer(f, delimiter='\t')
out.writerow([state, report_url, description])