diff --git a/.github/workflows/pr_helper.yml b/.github/workflows/pr_helper.yml
index 65740d916d87..30eba719f776 100644
--- a/.github/workflows/pr_helper.yml
+++ b/.github/workflows/pr_helper.yml
@@ -56,15 +56,3 @@ jobs:
repo: context.repo.repo,
body: '${{env.MESSAGE}}'
})
-
- - name: Add labels for valid PR
- if: env.IS_READY_FOR_MERGE == 'True'
- uses: actions/github-script@v6
- with:
- script: |
- github.rest.issues.addLabels({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- labels: ['Ready to merge']
- })
\ No newline at end of file
diff --git a/infra/pr_helper.py b/infra/pr_helper.py
index 45abc749da86..37c378ab78f1 100644
--- a/infra/pr_helper.py
+++ b/infra/pr_helper.py
@@ -26,7 +26,7 @@
OWNER = 'google'
REPO = 'oss-fuzz'
GITHUB_URL = 'https://github.com/'
-GITHUB_NOREF_URL = 'https://www.github.com/' # Github URL that doesn't send emails on linked issues.
+GITHUB_NONREF_URL = f'https://www.github.com/{OWNER}/{REPO}' # Github URL that doesn't send emails on linked issues.
API_URL = 'https://api.github.com'
BASE_URL = f'{API_URL}/repos/{OWNER}/{REPO}'
BRANCH = 'master'
@@ -75,7 +75,7 @@ def main():
pr_author = github.get_pr_author()
# Gets all modified projects path.
projects_path = github.get_projects_path()
- verified, email = github.get_author_email()
+ email = github.get_author_email()
for project_path in projects_path:
project_url = f'{GITHUB_URL}/{OWNER}/{REPO}/tree/{BRANCH}/{project_path}'
@@ -103,6 +103,7 @@ def main():
message += (
f'{pr_author} is either the primary contact or is in the CCs list '
f'of [{project_path}]({project_url}).
')
+ continue
# Checks the previous commits.
commit_sha = github.has_author_modified_project(project_path)
@@ -115,16 +116,16 @@ def main():
continue
# If the previous commit is not associated with a pull request.
- pr_message = (
- f'{pr_author} has previously contributed to '
- f'[{project_path}]({project_url}). The previous commit was '
- f'{GITHUB_NONREF_URL}/{OWNER}/{REPO}/commit/{commit_sha}
')
+ pr_message = (f'{pr_author} has previously contributed to '
+ f'[{project_path}]({project_url}). The previous commit was '
+ f'{GITHUB_NONREF_URL}/commit/{commit_sha}
')
- pr_url = github.get_pull_request_url(commit_sha)
- if pr_url is not None:
+ previous_pr_number = github.get_pull_request_number(commit_sha)
+ if previous_pr_number is not None:
pr_message = (f'{pr_author} has previously contributed to '
f'[{project_path}]({project_url}). '
- f'The previous PR was {pr_url}
')
+ f'The previous PR was [#{previous_pr_number}]'
+ f'({GITHUB_NONREF_URL}/pull/{previous_pr_number})
')
message += pr_message
save_env(message, is_ready_for_merge, False)
@@ -151,14 +152,16 @@ def get_projects_path(self):
"""Gets the current project path."""
response = requests.get(f'{BASE_URL}/pulls/{self._pr_number}/files',
headers=self._headers)
+ if not response.ok:
+ return []
projects_path = set()
for file in response.json():
file_path = file['filename']
- dir_path = os.path.dirname(file_path)
- if dir_path is not None and dir_path.split(os.sep)[0] == 'projects':
- projects_path.add(dir_path)
- return list(set(projects_path))
+ dir_path = file_path.split(os.sep)
+ if len(dir_path) > 1 and dir_path[0] == 'projects':
+ projects_path.add(os.sep.join(dir_path[0:2]))
+ return list(projects_path)
def get_author_email(self):
"""Retrieves the author's email address for a pull request,
@@ -200,15 +203,15 @@ def get_integrated_project_info(self):
if 'project.yaml' in file_path:
return self.get_yaml_file_content(file['contents_url'])
- return None
+ return {}
- def get_pull_request_url(self, commit):
- """Gets the pull request url."""
+ def get_pull_request_number(self, commit):
+ """Gets the pull request number."""
pr_response = requests.get(f'{BASE_URL}/commits/{commit}/pulls',
headers=self._headers)
if not pr_response.ok:
return None
- return pr_response.json()[0]['html_url']
+ return pr_response.json()[0]['number']
def is_author_internal_member(self):
"""Returns if the author is an internal member."""