mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 23:21:59 +00:00
Merge pull request #64480 from ClickHouse/ci_critical_bugfix_category_in_pr_body
CI: Critical bugfix category in PR template
This commit is contained in:
commit
b07ba7655d
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -11,6 +11,7 @@ tests/ci/cancel_and_rerun_workflow_lambda/app.py
|
||||
- Backward Incompatible Change
|
||||
- Build/Testing/Packaging Improvement
|
||||
- Documentation (changelog entry is not required)
|
||||
- Critical Bug Fix (crash, LOGICAL_ERROR, data loss, RBAC)
|
||||
- Bug Fix (user-visible misbehavior in an official stable release)
|
||||
- CI Fix or Improvement (changelog entry is not required)
|
||||
- Not for changelog (changelog entry is not required)
|
||||
|
@ -9,7 +9,7 @@ from threading import Thread
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
import requests
|
||||
from lambda_shared.pr import Labels, check_pr_description
|
||||
from lambda_shared.pr import Labels
|
||||
from lambda_shared.token import get_cached_access_token
|
||||
|
||||
NEED_RERUN_OR_CANCELL_WORKFLOWS = {
|
||||
@ -321,21 +321,21 @@ def main(event):
|
||||
return
|
||||
|
||||
if action == "edited":
|
||||
print("PR is edited, check if the body is correct")
|
||||
error, _ = check_pr_description(
|
||||
pull_request["body"], pull_request["base"]["repo"]["full_name"]
|
||||
)
|
||||
if error:
|
||||
print(
|
||||
f"The PR's body is wrong, is going to comment it. The error is: {error}"
|
||||
)
|
||||
post_json = {
|
||||
"body": "This is an automatic comment. The PR descriptions does not "
|
||||
f"match the [template]({pull_request['base']['repo']['html_url']}/"
|
||||
"blob/master/.github/PULL_REQUEST_TEMPLATE.md?plain=1).\n\n"
|
||||
f"Please, edit it accordingly.\n\nThe error is: {error}"
|
||||
}
|
||||
_exec_post_with_retry(pull_request["comments_url"], token, json=post_json)
|
||||
print("PR is edited - do nothing")
|
||||
# error, _ = check_pr_description(
|
||||
# pull_request["body"], pull_request["base"]["repo"]["full_name"]
|
||||
# )
|
||||
# if error:
|
||||
# print(
|
||||
# f"The PR's body is wrong, is going to comment it. The error is: {error}"
|
||||
# )
|
||||
# post_json = {
|
||||
# "body": "This is an automatic comment. The PR descriptions does not "
|
||||
# f"match the [template]({pull_request['base']['repo']['html_url']}/"
|
||||
# "blob/master/.github/PULL_REQUEST_TEMPLATE.md?plain=1).\n\n"
|
||||
# f"Please, edit it accordingly.\n\nThe error is: {error}"
|
||||
# }
|
||||
# _exec_post_with_retry(pull_request["comments_url"], token, json=post_json)
|
||||
return
|
||||
|
||||
if action == "synchronize":
|
||||
|
@ -245,6 +245,10 @@ close it.
|
||||
)
|
||||
self.cherrypick_pr.add_to_labels(Labels.PR_CHERRYPICK)
|
||||
self.cherrypick_pr.add_to_labels(Labels.DO_NOT_TEST)
|
||||
if Labels.PR_CRITICAL_BUGFIX in [label.name for label in self.pr.labels]:
|
||||
self.cherrypick_pr.add_to_labels(Labels.PR_CRITICAL_BUGFIX)
|
||||
elif Labels.PR_BUGFIX in [label.name for label in self.pr.labels]:
|
||||
self.cherrypick_pr.add_to_labels(Labels.PR_BUGFIX)
|
||||
self._assign_new_pr(self.cherrypick_pr)
|
||||
# update cherrypick PR to get the state for PR.mergable
|
||||
self.cherrypick_pr.update()
|
||||
@ -280,6 +284,10 @@ close it.
|
||||
head=self.backport_branch,
|
||||
)
|
||||
self.backport_pr.add_to_labels(Labels.PR_BACKPORT)
|
||||
if Labels.PR_CRITICAL_BUGFIX in [label.name for label in self.pr.labels]:
|
||||
self.backport_pr.add_to_labels(Labels.PR_CRITICAL_BUGFIX)
|
||||
elif Labels.PR_BUGFIX in [label.name for label in self.pr.labels]:
|
||||
self.backport_pr.add_to_labels(Labels.PR_BUGFIX)
|
||||
self._assign_new_pr(self.backport_pr)
|
||||
|
||||
def ping_cherry_pick_assignees(self, dry_run: bool) -> None:
|
||||
|
@ -50,6 +50,8 @@ TRUSTED_CONTRIBUTORS = {
|
||||
|
||||
|
||||
class Labels:
|
||||
PR_BUGFIX = "pr-bugfix"
|
||||
PR_CRITICAL_BUGFIX = "pr-critical-bugfix"
|
||||
CAN_BE_TESTED = "can be tested"
|
||||
DO_NOT_TEST = "do not test"
|
||||
MUST_BACKPORT = "pr-must-backport"
|
||||
@ -68,8 +70,8 @@ class Labels:
|
||||
RELEASE_LTS = "release-lts"
|
||||
SUBMODULE_CHANGED = "submodule changed"
|
||||
|
||||
# pr-bugfix autoport can lead to issues in releases, let's do ci fixes only
|
||||
AUTO_BACKPORT = {"pr-ci"}
|
||||
# automatic backport for critical bug fixes
|
||||
AUTO_BACKPORT = {"pr-critical-bugfix"}
|
||||
|
||||
|
||||
# Descriptions are used in .github/PULL_REQUEST_TEMPLATE.md, keep comments there
|
||||
@ -84,6 +86,7 @@ LABEL_CATEGORIES = {
|
||||
"Bug Fix (user-visible misbehaviour in official stable or prestable release)",
|
||||
"Bug Fix (user-visible misbehavior in official stable or prestable release)",
|
||||
],
|
||||
"pr-critical-bugfix": ["Critical Bug Fix (crash, LOGICAL_ERROR, data loss, RBAC)"],
|
||||
"pr-build": [
|
||||
"Build/Testing/Packaging Improvement",
|
||||
"Build Improvement",
|
||||
|
@ -25,6 +25,7 @@ categories_preferred_order = (
|
||||
"New Feature",
|
||||
"Performance Improvement",
|
||||
"Improvement",
|
||||
"Critical Bug Fix",
|
||||
"Bug Fix",
|
||||
"Build/Testing/Packaging Improvement",
|
||||
"Other",
|
||||
@ -112,7 +113,7 @@ def get_descriptions(prs: PullRequests) -> Dict[str, List[Description]]:
|
||||
in_changelog = merge_commit in SHA_IN_CHANGELOG
|
||||
if in_changelog:
|
||||
desc = generate_description(pr, repos[repo_name])
|
||||
if desc is not None:
|
||||
if desc:
|
||||
if desc.category not in descriptions:
|
||||
descriptions[desc.category] = []
|
||||
descriptions[desc.category].append(desc)
|
||||
@ -187,7 +188,7 @@ def parse_args() -> argparse.Namespace:
|
||||
|
||||
|
||||
# This function mirrors the PR description checks in ClickhousePullRequestTrigger.
|
||||
# Returns False if the PR should not be mentioned changelog.
|
||||
# Returns None if the PR should not be mentioned in changelog.
|
||||
def generate_description(item: PullRequest, repo: Repository) -> Optional[Description]:
|
||||
backport_number = item.number
|
||||
if item.head.ref.startswith("backport/"):
|
||||
|
Loading…
Reference in New Issue
Block a user