117 lines
4.6 KiB
YAML
117 lines
4.6 KiB
YAML
name: '📋 Gemini Scheduled Issue Deduplication'
|
|
|
|
on:
|
|
schedule:
|
|
- cron: '0 * * * *' # Runs every hour
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: '${{ github.workflow }}'
|
|
cancel-in-progress: true
|
|
|
|
defaults:
|
|
run:
|
|
shell: 'bash'
|
|
|
|
jobs:
|
|
refresh-embeddings:
|
|
if: |-
|
|
${{ vars.TRIAGE_DEDUPLICATE_ISSUES != '' && github.repository == 'google-gemini/gemini-cli' }}
|
|
permissions:
|
|
contents: 'read'
|
|
id-token: 'write' # Required for WIF, see https://docs.github.com/en/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-google-cloud-platform#adding-permissions-settings
|
|
issues: 'read'
|
|
statuses: 'read'
|
|
packages: 'read'
|
|
timeout-minutes: 20
|
|
runs-on: 'ubuntu-latest'
|
|
steps:
|
|
- name: 'Checkout'
|
|
uses: 'actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8' # ratchet:actions/checkout@v5
|
|
|
|
- name: 'Log in to GitHub Container Registry'
|
|
uses: 'docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1' # ratchet:docker/login-action@v3
|
|
with:
|
|
registry: 'ghcr.io'
|
|
username: '${{ github.actor }}'
|
|
password: '${{ secrets.GITHUB_TOKEN }}'
|
|
|
|
- name: 'Run Gemini Issue Deduplication Refresh'
|
|
uses: 'google-github-actions/run-gemini-cli@a3bf79042542528e91937b3a3a6fbc4967ee3c31' # ratchet:google-github-actions/run-gemini-cli@v0
|
|
id: 'gemini_refresh_embeddings'
|
|
env:
|
|
GITHUB_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 }}'
|
|
FIRESTORE_PROJECT: '${{ vars.FIRESTORE_PROJECT }}'
|
|
with:
|
|
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: |-
|
|
{
|
|
"mcpServers": {
|
|
"issue_deduplication": {
|
|
"command": "docker",
|
|
"args": [
|
|
"run",
|
|
"-i",
|
|
"--rm",
|
|
"--network", "host",
|
|
"-e", "GITHUB_TOKEN",
|
|
"-e", "GEMINI_API_KEY",
|
|
"-e", "DATABASE_TYPE",
|
|
"-e", "FIRESTORE_DATABASE_ID",
|
|
"-e", "GCP_PROJECT",
|
|
"-e", "GOOGLE_APPLICATION_CREDENTIALS=/app/gcp-credentials.json",
|
|
"-v", "${GOOGLE_APPLICATION_CREDENTIALS}:/app/gcp-credentials.json",
|
|
"ghcr.io/google-gemini/gemini-cli-issue-triage@sha256:e3de1523f6c83aabb3c54b76d08940a2bf42febcb789dd2da6f95169641f94d3"
|
|
],
|
|
"env": {
|
|
"GITHUB_TOKEN": "${GITHUB_TOKEN}",
|
|
"GEMINI_API_KEY": "${{ secrets.GEMINI_API_KEY }}",
|
|
"DATABASE_TYPE":"firestore",
|
|
"GCP_PROJECT": "${FIRESTORE_PROJECT}",
|
|
"FIRESTORE_DATABASE_ID": "(default)",
|
|
"GOOGLE_APPLICATION_CREDENTIALS": "${GOOGLE_APPLICATION_CREDENTIALS}"
|
|
},
|
|
"enabled": true,
|
|
"timeout": 600000
|
|
}
|
|
},
|
|
"maxSessionTurns": 25,
|
|
"coreTools": [
|
|
"run_shell_command(echo)"
|
|
],
|
|
"telemetry": {
|
|
"enabled": true,
|
|
"target": "gcp"
|
|
}
|
|
}
|
|
prompt: |-
|
|
## Role
|
|
|
|
You are a database maintenance assistant for a GitHub issue deduplication system.
|
|
|
|
## Goal
|
|
|
|
Your sole responsibility is to refresh the embeddings for all open issues in the repository to ensure the deduplication database is up-to-date.
|
|
|
|
## Steps
|
|
|
|
1. **Extract Repository Information:** The repository is ${{ github.repository }}.
|
|
2. **Refresh Embeddings:** Call the `refresh` tool with the correct `repo`. Do not use the `force` parameter.
|
|
3. **Log Output:** Print the JSON output from the `refresh` tool to the logs.
|
|
|
|
## Guidelines
|
|
|
|
- Only use the `refresh` tool.
|
|
- Do not attempt to find duplicates or modify any issues.
|
|
- Your only task is to call the `refresh` tool and log its output.
|