mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 15:42:02 +00:00
Fix run_check.py and dependencies
This commit is contained in:
parent
78e560f78e
commit
9dff6a80ab
@ -5,7 +5,7 @@ import logging
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
from typing import List, Optional
|
||||
from typing import Any, List, Optional
|
||||
|
||||
import requests # type: ignore
|
||||
|
||||
@ -18,7 +18,7 @@ def get_with_retries(
|
||||
url: str,
|
||||
retries: int = DOWNLOAD_RETRIES_COUNT,
|
||||
sleep: int = 3,
|
||||
**kwargs,
|
||||
**kwargs: Any,
|
||||
) -> requests.Response:
|
||||
logging.info(
|
||||
"Getting URL with %i tries and sleep %i in between: %s", retries, sleep, url
|
||||
@ -41,18 +41,18 @@ def get_with_retries(
|
||||
return response
|
||||
|
||||
|
||||
def get_build_name_for_check(check_name) -> str:
|
||||
return CI_CONFIG["tests_config"][check_name]["required_build"]
|
||||
def get_build_name_for_check(check_name: str) -> str:
|
||||
return CI_CONFIG["tests_config"][check_name]["required_build"] # type: ignore
|
||||
|
||||
|
||||
def read_build_urls(build_name, reports_path) -> List[str]:
|
||||
def read_build_urls(build_name: str, reports_path: str) -> List[str]:
|
||||
for root, _, files in os.walk(reports_path):
|
||||
for f in files:
|
||||
if build_name in f:
|
||||
logging.info("Found build report json %s", f)
|
||||
with open(os.path.join(root, f), "r", encoding="utf-8") as file_handler:
|
||||
build_report = json.load(file_handler)
|
||||
return build_report["build_urls"]
|
||||
return build_report["build_urls"] # type: ignore
|
||||
return []
|
||||
|
||||
|
||||
|
@ -17,7 +17,7 @@ RETRY = 5
|
||||
CommitStatuses = List[CommitStatus]
|
||||
|
||||
|
||||
def override_status(status: str, check_name: str, invert=False) -> str:
|
||||
def override_status(status: str, check_name: str, invert: bool = False) -> str:
|
||||
if CI_CONFIG["tests_config"].get(check_name, {}).get("force_tests", False):
|
||||
return "success"
|
||||
|
||||
@ -45,7 +45,7 @@ def get_commit(gh: Github, commit_sha: str, retry_count: int = RETRY) -> Commit:
|
||||
|
||||
def post_commit_status(
|
||||
gh: Github, sha: str, check_name: str, description: str, state: str, report_url: str
|
||||
):
|
||||
) -> None:
|
||||
for i in range(RETRY):
|
||||
try:
|
||||
commit = get_commit(gh, sha, 1)
|
||||
@ -64,7 +64,7 @@ def post_commit_status(
|
||||
|
||||
def post_commit_status_to_file(
|
||||
file_path: str, description: str, state: str, report_url: str
|
||||
):
|
||||
) -> None:
|
||||
if os.path.exists(file_path):
|
||||
raise Exception(f'File "{file_path}" already exists!')
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
@ -88,21 +88,21 @@ def get_commit_filtered_statuses(commit: Commit) -> CommitStatuses:
|
||||
return list(filtered.values())
|
||||
|
||||
|
||||
def remove_labels(gh: Github, pr_info: PRInfo, labels_names: List[str]):
|
||||
def remove_labels(gh: Github, pr_info: PRInfo, labels_names: List[str]) -> None:
|
||||
repo = gh.get_repo(GITHUB_REPOSITORY)
|
||||
pull_request = repo.get_pull(pr_info.number)
|
||||
for label in labels_names:
|
||||
pull_request.remove_from_labels(label)
|
||||
|
||||
|
||||
def post_labels(gh: Github, pr_info: PRInfo, labels_names: List[str]):
|
||||
def post_labels(gh: Github, pr_info: PRInfo, labels_names: List[str]) -> None:
|
||||
repo = gh.get_repo(GITHUB_REPOSITORY)
|
||||
pull_request = repo.get_pull(pr_info.number)
|
||||
for label in labels_names:
|
||||
pull_request.add_to_labels(label)
|
||||
|
||||
|
||||
def fail_mergeable_check(commit: Commit, description: str):
|
||||
def fail_mergeable_check(commit: Commit, description: str) -> None:
|
||||
commit.create_status(
|
||||
context="Mergeable Check",
|
||||
description=description,
|
||||
@ -111,7 +111,7 @@ def fail_mergeable_check(commit: Commit, description: str):
|
||||
)
|
||||
|
||||
|
||||
def reset_mergeable_check(commit: Commit, description: str = ""):
|
||||
def reset_mergeable_check(commit: Commit, description: str = "") -> None:
|
||||
commit.create_status(
|
||||
context="Mergeable Check",
|
||||
description=description,
|
||||
@ -120,7 +120,7 @@ def reset_mergeable_check(commit: Commit, description: str = ""):
|
||||
)
|
||||
|
||||
|
||||
def update_mergeable_check(gh: Github, pr_info: PRInfo, check_name: str):
|
||||
def update_mergeable_check(gh: Github, pr_info: PRInfo, check_name: str) -> None:
|
||||
if SKIP_MERGEABLE_CHECK_LABEL in pr_info.labels:
|
||||
return
|
||||
|
||||
|
@ -1,8 +1,17 @@
|
||||
#!/usr/bin/env python3
|
||||
import logging
|
||||
from dataclasses import dataclass
|
||||
|
||||
import boto3 # type: ignore
|
||||
from github import Github # type: ignore
|
||||
from github import Github
|
||||
from github.AuthenticatedUser import AuthenticatedUser
|
||||
|
||||
|
||||
@dataclass
|
||||
class Token:
|
||||
user: AuthenticatedUser
|
||||
value: str
|
||||
rest: int
|
||||
|
||||
|
||||
def get_parameter_from_ssm(name, decrypt=True, client=None):
|
||||
@ -19,7 +28,7 @@ def get_best_robot_token(token_prefix_env_name="github_robot_token_"):
|
||||
]
|
||||
)["Parameters"]
|
||||
assert parameters
|
||||
token = {"login": "", "value": "", "rest": 0}
|
||||
token = None
|
||||
|
||||
for token_name in [p["Name"] for p in parameters]:
|
||||
value = get_parameter_from_ssm(token_name, True, client)
|
||||
@ -29,12 +38,15 @@ def get_best_robot_token(token_prefix_env_name="github_robot_token_"):
|
||||
user = gh.get_user()
|
||||
rest, _ = gh.rate_limiting
|
||||
logging.info("Get token with %s remaining requests", rest)
|
||||
if token["rest"] < rest:
|
||||
token = {"user": user, "value": value, "rest": rest}
|
||||
if token is None:
|
||||
token = Token(user, value, rest)
|
||||
continue
|
||||
if token.rest < rest:
|
||||
token.user, token.value, token.rest = user, value, rest
|
||||
|
||||
assert token["value"]
|
||||
assert token
|
||||
logging.info(
|
||||
"User %s with %s remaining requests is used", token["user"].login, token["rest"]
|
||||
"User %s with %s remaining requests is used", token.user.login, token.rest
|
||||
)
|
||||
|
||||
return token["value"]
|
||||
return token.value
|
||||
|
@ -146,7 +146,7 @@ class PRInfo:
|
||||
self.body = github_event["pull_request"]["body"]
|
||||
self.labels = {
|
||||
label["name"] for label in github_event["pull_request"]["labels"]
|
||||
}
|
||||
} # type: Set[str]
|
||||
|
||||
self.user_login = github_event["pull_request"]["user"]["login"]
|
||||
self.user_orgs = set([])
|
||||
@ -178,7 +178,7 @@ class PRInfo:
|
||||
if pull_request is None or pull_request["state"] == "closed":
|
||||
# it's merged PR to master
|
||||
self.number = 0
|
||||
self.labels = {}
|
||||
self.labels = set()
|
||||
self.pr_html_url = f"{repo_prefix}/commits/{ref}"
|
||||
self.base_ref = ref
|
||||
self.base_name = self.repo_full_name
|
||||
@ -228,7 +228,7 @@ class PRInfo:
|
||||
print(json.dumps(github_event, sort_keys=True, indent=4))
|
||||
self.sha = os.getenv("GITHUB_SHA")
|
||||
self.number = 0
|
||||
self.labels = {}
|
||||
self.labels = set()
|
||||
repo_prefix = f"{GITHUB_SERVER_URL}/{GITHUB_REPOSITORY}"
|
||||
self.task_url = GITHUB_RUN_URL
|
||||
self.commit_html_url = f"{repo_prefix}/commits/{self.sha}"
|
||||
|
@ -112,7 +112,7 @@ def should_run_checks_for_pr(pr_info: PRInfo) -> Tuple[bool, str, str]:
|
||||
return True, "No special conditions apply", "pending"
|
||||
|
||||
|
||||
def check_pr_description(pr_info) -> Tuple[str, str]:
|
||||
def check_pr_description(pr_info: PRInfo) -> Tuple[str, str]:
|
||||
lines = list(
|
||||
map(lambda x: x.strip(), pr_info.body.split("\n") if pr_info.body else [])
|
||||
)
|
||||
|
@ -313,7 +313,7 @@ def check_suspicious_changed_files(changed_files):
|
||||
return False
|
||||
|
||||
|
||||
def approve_run(workflow_description: WorkflowDescription, token):
|
||||
def approve_run(workflow_description: WorkflowDescription, token: str) -> None:
|
||||
url = f"{workflow_description.api_url}/approve"
|
||||
_exec_post_with_retry(url, token)
|
||||
|
||||
@ -391,7 +391,7 @@ def rerun_workflow(workflow_description, token):
|
||||
|
||||
|
||||
def check_workflow_completed(
|
||||
event_data, workflow_description: WorkflowDescription, token: str
|
||||
event_data: dict, workflow_description: WorkflowDescription, token: str
|
||||
) -> bool:
|
||||
if workflow_description.action == "completed":
|
||||
attempt = 0
|
||||
|
Loading…
Reference in New Issue
Block a user