Fix(triage): Update pr-triage.sh script#7698
Conversation
…look for closingIssuesReferences instead of looking for the Issue ID in the body which can lead to wrong issues and labels being pulled in.
There was a problem hiding this comment.
Summary of Changes
Hello @srithreepo, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request refines the pr-triage.sh script to enhance its accuracy and behavior in managing pull request labels and linking to associated issues. The changes aim to make the automated triage process more robust and less prone to unintended label removals, while also improving the reliability of issue detection.
Highlights
- Label Management: The script no longer removes existing labels from pull requests, simplifying label synchronization and preventing unintended label removals.
- Issue Linking Reliability: The method for linking pull requests to issues has been improved by utilizing the more reliable 'closingIssuesReferences' field from the GitHub API, replacing less robust PR body parsing.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.
| Feature | Command | Description |
|---|---|---|
| Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
| Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
| Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
| Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Code Review
This pull request updates the PR triage script to use the more reliable closingIssuesReferences field for finding linked issues and to stop removing labels from pull requests. The changes are a good improvement, making the script's logic simpler and more robust. I have identified one potential edge case where the script might not correctly handle a null value for an issue number and have provided a suggestion to fix it.
| ISSUE_NUMBER=$(echo "${PR_BODY}" | grep -iE '(closes?|fixes?|resolves?) #[0-9]+' | grep -oE '#[0-9]+' | head -1 | sed 's/#//' 2>/dev/null || echo "") | ||
| # Get closing issue number with error handling | ||
| local ISSUE_NUMBER | ||
| if ! ISSUE_NUMBER=$(gh pr view "${PR_NUMBER}" --repo "${GITHUB_REPOSITORY}" --json closingIssuesReferences -q '.closingIssuesReferences.nodes[0].number' 2>/dev/null); then |
There was a problem hiding this comment.
The gh command with the jq query can return the string "null" if the queried field exists but its value is null. This would cause the script to proceed with ISSUE_NUMBER="null", which is not a valid issue number. You can use jq's alternative operator // to default to an empty string in this case, which will be correctly handled by the subsequent check for an empty string.
| if ! ISSUE_NUMBER=$(gh pr view "${PR_NUMBER}" --repo "${GITHUB_REPOSITORY}" --json closingIssuesReferences -q '.closingIssuesReferences.nodes[0].number' 2>/dev/null); then | |
| if ! ISSUE_NUMBER=$(gh pr view "${PR_NUMBER}" --repo "${GITHUB_REPOSITORY}" --json closingIssuesReferences -q '(.closingIssuesReferences.nodes[0].number // "")' 2>/dev/null); then |
Code Coverage Summary
CLI Package - Full Text ReportCore Package - Full Text ReportFor detailed HTML reports, please see the 'coverage-reports-22.x-ubuntu-latest' artifact from the main CI run. |
|
Size Change: -2 B (0%) Total Size: 13.6 MB ℹ️ View Unchanged
|
Fixes google-gemini#8522 This commit restores comprehensive PR description parsing that was accidentally removed in PR google-gemini#7698. The triage script now properly detects issue references in PR descriptions using multiple patterns: 1. Direct references like "google-gemini#123" 2. Keyword patterns like "Closes google-gemini#123", "Fixes google-gemini#456", "Resolves google-gemini#789" 3. Fallback to GitHub's closingIssuesReferences API as last resort Without this fix, ALL PRs were incorrectly labeled with status/need-issue because the script could only detect GitHub's automatically detected closing references, missing many valid manual references in descriptions. The regression was introduced when PR description parsing logic was removed, leaving only the GitHub API fallback which has limited coverage.
Co-authored-by: Srinath Padmanabhan <srithreepo@google.com>
Co-authored-by: Srinath Padmanabhan <srithreepo@google.com>
Co-authored-by: Srinath Padmanabhan <srithreepo@google.com>
This PR updates the pr-triage.sh script to: