.github/workflows/gemini-issue-automated-triage.yml #76
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: '🏷️ Gemini Automated Issue Triage' | |
on: | |
issues: | |
types: | |
- 'opened' | |
- 'reopened' | |
issue_comment: | |
types: | |
- 'created' | |
workflow_dispatch: | |
inputs: | |
issue_number: | |
description: 'issue number to triage' | |
required: true | |
type: 'number' | |
concurrency: | |
group: '${{ github.workflow }}-${{ github.event.issue.number }}' | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: 'bash' | |
permissions: | |
contents: 'read' | |
id-token: 'write' | |
issues: 'write' | |
statuses: 'write' | |
jobs: | |
triage-issue: | |
if: |- | |
github.event_name == 'issues' || | |
github.event_name == 'workflow_dispatch' || | |
( | |
github.event_name == 'issue_comment' && | |
contains(github.event.comment.body, '@gemini-cli /triage') && | |
contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) | |
) | |
timeout-minutes: 5 | |
runs-on: 'ubuntu-latest' | |
steps: | |
- name: 'Checkout repository' | |
uses: 'actions/checkout@v5' | |
- name: 'Run Gemini Issue Triage' | |
uses: 'google-github-actions/run-gemini-cli@v0' | |
id: 'gemini_issue_triage' | |
env: | |
GITHUB_TOKEN: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}' | |
ISSUE_TITLE: '${{ github.event.issue.title }}' | |
ISSUE_BODY: '${{ github.event.issue.body }}' | |
ISSUE_NUMBER: '${{ github.event.issue.number }}' | |
REPOSITORY: '${{ github.repository }}' | |
with: | |
gemini_cli_version: '${{ vars.GEMINI_CLI_VERSION }}' | |
gcp_workload_identity_provider: '${{ vars.GCP_WIF_PROVIDER }}' | |
gcp_project_id: '${{ vars.GOOGLE_CLOUD_PROJECT }}' | |
gcp_location: '${{ vars.GOOGLE_CLOUD_LOCATION }}' | |
gcp_service_account: '${{ vars.SERVICE_ACCOUNT_EMAIL }}' | |
gemini_api_key: '${{ secrets.GEMINI_API_KEY }}' | |
use_vertex_ai: '${{ vars.GOOGLE_GENAI_USE_VERTEXAI }}' | |
use_gemini_code_assist: '${{ vars.GOOGLE_GENAI_USE_GCA }}' | |
settings: |- | |
{ | |
"maxSessionTurns": 25, | |
"coreTools": [ | |
"run_shell_command(echo)", | |
"run_shell_command(gh label list)", | |
"run_shell_command(gh issue edit)" | |
], | |
"telemetry": { | |
"enabled": true, | |
"target": "gcp" | |
} | |
} | |
prompt: |- | |
## Role | |
You are an issue triage assistant. Analyze the current GitHub issue | |
and apply the most appropriate existing labels. Use the available | |
tools to gather information; do not ask for information to be | |
provided. | |
## Steps | |
1. Run: `gh label list` to get all available labels. | |
2. Review the issue title and body provided in the environment | |
variables: "${ISSUE_TITLE}" and "${ISSUE_BODY}". | |
3. Classify issues by their type (bug, enhancement, documentation, | |
cleanup, etc) and their priority (p0, p1, p2, p3). Set the | |
labels according to the format `type: *` and `priority: *` patterns. | |
If the priority is determined to be more urgent than p2 (e.g. p0 or p1), mark the issue | |
as p2 and add a comment in the issue with the reason. The comment should ping | |
@blakeli0, @lqiu96, and @zhumin8 to notify them. | |
4. Apply the selected labels to this issue using: | |
`gh issue edit "${ISSUE_NUMBER}" --add-label "label1,label2"` | |
## Guidelines | |
- If there are already labels for `type: *` and `priority: *` set on the issue, do not modify the labels | |
- Only use labels that already exist in the repository | |
- Do not modify the original issue content | |
- Triage only the current issue | |
- Assign all applicable labels based on the issue content | |
- Reference all shell variables as "${VAR}" (with quotes and braces) | |
- name: 'Post Issue Triage Failure Comment' | |
if: |- | |
${{ failure() && steps.gemini_issue_triage.outcome == 'failure' }} | |
uses: 'actions/github-script@v7' | |
with: | |
github-token: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}' | |
script: |- | |
github.rest.issues.createComment({ | |
owner: '${{ github.repository }}'.split('/')[0], | |
repo: '${{ github.repository }}'.split('/')[1], | |
issue_number: '${{ github.event.issue.number }}', | |
body: 'There is a problem with the Gemini CLI issue triaging. Please check the [action logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details.' | |
}) |