github-automation: Use the llvm/llvm-project repo for backport pull requests (#71727)
Now that the project uses PRs for code review, we don't need to use the llvm/llvm-project-release-prs repo for reviewing backports.
This commit is contained in:
parent
3ef20e3fc1
commit
f33e9276e2
@ -444,7 +444,7 @@ class ReleaseWorkflow:
|
|||||||
|
|
||||||
def issue_notify_pull_request(self, pull: github.PullRequest.PullRequest) -> None:
|
def issue_notify_pull_request(self, pull: github.PullRequest.PullRequest) -> None:
|
||||||
self.issue.create_comment(
|
self.issue.create_comment(
|
||||||
"/pull-request {}#{}".format(self.branch_repo_name, pull.number)
|
"/pull-request {}#{}".format(self.repo_name, pull.number)
|
||||||
)
|
)
|
||||||
|
|
||||||
def make_ignore_comment(self, comment: str) -> str:
|
def make_ignore_comment(self, comment: str) -> str:
|
||||||
@ -496,29 +496,39 @@ class ReleaseWorkflow:
|
|||||||
if self.CHERRY_PICK_FAILED_LABEL in [l.name for l in self.issue.labels]:
|
if self.CHERRY_PICK_FAILED_LABEL in [l.name for l in self.issue.labels]:
|
||||||
self.issue.remove_from_labels(self.CHERRY_PICK_FAILED_LABEL)
|
self.issue.remove_from_labels(self.CHERRY_PICK_FAILED_LABEL)
|
||||||
|
|
||||||
|
def get_main_commit(self, cherry_pick_sha: str) -> github.Commit.Commit:
|
||||||
|
commit = self.repo.get_commit(cherry_pick_sha)
|
||||||
|
message = commit.commit.message
|
||||||
|
m = re.search("\(cherry picked from commit ([0-9a-f]+)\)", message)
|
||||||
|
if not m:
|
||||||
|
return None
|
||||||
|
return self.repo.get_commit(m.group(1))
|
||||||
|
|
||||||
def pr_request_review(self, pr: github.PullRequest.PullRequest):
|
def pr_request_review(self, pr: github.PullRequest.PullRequest):
|
||||||
"""
|
"""
|
||||||
This function will try to find the best reviewers for `commits` and
|
This function will try to find the best reviewers for `commits` and
|
||||||
then add a comment requesting review of the backport and assign the
|
then add a comment requesting review of the backport and add them as
|
||||||
pull request to the selected reviewers.
|
reviewers.
|
||||||
|
|
||||||
The reviewers selected are those users who approved the patch in
|
The reviewers selected are those users who approved the pull request
|
||||||
Phabricator.
|
for the main branch.
|
||||||
"""
|
"""
|
||||||
reviewers = []
|
reviewers = []
|
||||||
for commit in pr.get_commits():
|
for commit in pr.get_commits():
|
||||||
approvers = phab_get_commit_approvers(self.phab_token, commit)
|
main_commit = self.get_main_commit(commit.sha)
|
||||||
for a in approvers:
|
if not main_commit:
|
||||||
login = phab_login_to_github_login(self.phab_token, self.repo, a)
|
continue
|
||||||
if not login:
|
for pull in main_commit.get_pulls():
|
||||||
continue
|
for review in pull.get_reviews():
|
||||||
reviewers.append(login)
|
if review.state != "APPROVED":
|
||||||
|
continue
|
||||||
|
reviewers.append(review.user.login)
|
||||||
if len(reviewers):
|
if len(reviewers):
|
||||||
message = "{} What do you think about merging this PR to the release branch?".format(
|
message = "{} What do you think about merging this PR to the release branch?".format(
|
||||||
" ".join(["@" + r for r in reviewers])
|
" ".join(["@" + r for r in reviewers])
|
||||||
)
|
)
|
||||||
pr.create_issue_comment(message)
|
pr.create_issue_comment(message)
|
||||||
pr.add_to_assignees(*reviewers)
|
pr.create_review_request(reviewers)
|
||||||
|
|
||||||
def create_branch(self, commits: List[str]) -> bool:
|
def create_branch(self, commits: List[str]) -> bool:
|
||||||
"""
|
"""
|
||||||
@ -559,7 +569,7 @@ class ReleaseWorkflow:
|
|||||||
|
|
||||||
def create_pull_request(self, owner: str, repo_name: str, branch: str) -> bool:
|
def create_pull_request(self, owner: str, repo_name: str, branch: str) -> bool:
|
||||||
"""
|
"""
|
||||||
reate a pull request in `self.branch_repo_name`. The base branch of the
|
Create a pull request in `self.repo_name`. The base branch of the
|
||||||
pull request will be chosen based on the the milestone attached to
|
pull request will be chosen based on the the milestone attached to
|
||||||
the issue represented by `self.issue_number` For example if the milestone
|
the issue represented by `self.issue_number` For example if the milestone
|
||||||
is Release 13.0.1, then the base branch will be release/13.x. `branch`
|
is Release 13.0.1, then the base branch will be release/13.x. `branch`
|
||||||
@ -567,7 +577,7 @@ class ReleaseWorkflow:
|
|||||||
https://docs.github.com/en/get-started/quickstart/github-glossary#base-branch
|
https://docs.github.com/en/get-started/quickstart/github-glossary#base-branch
|
||||||
https://docs.github.com/en/get-started/quickstart/github-glossary#compare-branch
|
https://docs.github.com/en/get-started/quickstart/github-glossary#compare-branch
|
||||||
"""
|
"""
|
||||||
repo = github.Github(self.token).get_repo(self.branch_repo_name)
|
repo = github.Github(self.token).get_repo(self.repo_name)
|
||||||
issue_ref = "{}#{}".format(self.repo_name, self.issue_number)
|
issue_ref = "{}#{}".format(self.repo_name, self.issue_number)
|
||||||
pull = None
|
pull = None
|
||||||
release_branch_for_issue = self.release_branch_for_issue
|
release_branch_for_issue = self.release_branch_for_issue
|
||||||
@ -612,9 +622,10 @@ class ReleaseWorkflow:
|
|||||||
maintainer_can_modify=False,
|
maintainer_can_modify=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
pull.as_issue().edit(milestone=self.issue.milestone)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if self.phab_token:
|
self.pr_request_review(pull)
|
||||||
self.pr_request_review(pull)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("error: Failed while searching for reviewers", e)
|
print("error: Failed while searching for reviewers", e)
|
||||||
|
|
||||||
@ -710,7 +721,7 @@ release_workflow_parser.add_argument(
|
|||||||
release_workflow_parser.add_argument(
|
release_workflow_parser.add_argument(
|
||||||
"--branch-repo",
|
"--branch-repo",
|
||||||
type=str,
|
type=str,
|
||||||
default="llvm/llvm-project-release-prs",
|
default="llvmbot/llvm-project",
|
||||||
help="The name of the repo where new branches will be pushed (e.g. llvm/llvm-project)",
|
help="The name of the repo where new branches will be pushed (e.g. llvm/llvm-project)",
|
||||||
)
|
)
|
||||||
release_workflow_parser.add_argument(
|
release_workflow_parser.add_argument(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user