diff --git a/action.yml b/action.yml index 70ef1b1e1..c2f0fd330 100644 --- a/action.yml +++ b/action.yml @@ -91,6 +91,17 @@ inputs: description: 'The GitHub workflow name, used for telemetry purposes.' required: false default: '${{ github.workflow }}' + github_pr_number: + description: 'The Pull Request number the CLI is operating on. Defaults to the event payload.' + required: false + default: '${{ github.event.pull_request.number }}' + github_issue_number: + description: 'The Issue number the CLI is operating on. Defaults to the event payload.' + required: false + default: '${{ github.event.issue.number }}' + github_custom_tracking_id: + description: 'A custom tracking ID (e.g. comma-separated list of issue IDs for scheduled batches).' + required: false outputs: summary: @@ -231,6 +242,11 @@ runs: GEMINI_CLI_VERSION: '${{ inputs.gemini_cli_version }}' EXTENSIONS: '${{ inputs.extensions }}' USE_PNPM: '${{ inputs.use_pnpm }}' + SURFACE: 'GitHub' + GH_WORKFLOW_NAME: '${{ steps.sanitize_workflow_name.outputs.gh_workflow_name }}' + GH_PR_NUMBER: '${{ inputs.github_pr_number }}' + GH_ISSUE_NUMBER: '${{ inputs.github_issue_number }}' + GH_CUSTOM_TRACKING_ID: '${{ inputs.github_custom_tracking_id }}' shell: 'bash' run: |- set -euo pipefail @@ -414,6 +430,9 @@ runs: PROMPT: '${{ inputs.prompt }}' GEMINI_MODEL: '${{ inputs.gemini_model }}' GH_WORKFLOW_NAME: '${{ steps.sanitize_workflow_name.outputs.gh_workflow_name }}' + GH_PR_NUMBER: '${{ inputs.github_pr_number }}' + GH_ISSUE_NUMBER: '${{ inputs.github_issue_number }}' + GH_CUSTOM_TRACKING_ID: '${{ inputs.github_custom_tracking_id }}' - name: 'Upload Gemini CLI outputs' if: |- @@ -440,6 +459,9 @@ runs: sed -e "s#OTLP_GOOGLE_CLOUD_PROJECT#${OTLP_GOOGLE_CLOUD_PROJECT}#g" \ -e "s#GITHUB_REPOSITORY_PLACEHOLDER#${GITHUB_REPOSITORY}#g" \ -e "s#GITHUB_RUN_ID_PLACEHOLDER#${GITHUB_RUN_ID}#g" \ + -e "s#GITHUB_PR_NUMBER_PLACEHOLDER#${GITHUB_PR_NUMBER}#g" \ + -e "s#GITHUB_ISSUE_NUMBER_PLACEHOLDER#${GITHUB_ISSUE_NUMBER}#g" \ + -e "s#GITHUB_CUSTOM_TRACKING_ID_PLACEHOLDER#${GITHUB_CUSTOM_TRACKING_ID}#g" \ "${GITHUB_ACTION_PATH}/scripts/collector-gcp.yaml.template" > ".gemini/collector-gcp.yaml" # Ensure credentials file has the right permissions @@ -490,6 +512,9 @@ runs: GITHUB_ACTION_PATH: '${{ github.action_path }}' GITHUB_REPOSITORY: '${{ github.repository }}' GITHUB_RUN_ID: '${{ github.run_id }}' + GITHUB_PR_NUMBER: '${{ inputs.github_pr_number }}' + GITHUB_ISSUE_NUMBER: '${{ inputs.github_issue_number }}' + GITHUB_CUSTOM_TRACKING_ID: '${{ inputs.github_custom_tracking_id }}' branding: icon: 'terminal' diff --git a/examples/workflows/gemini-assistant/gemini-invoke.yml b/examples/workflows/gemini-assistant/gemini-invoke.yml index 5b8e9f336..c549de614 100644 --- a/examples/workflows/gemini-assistant/gemini-invoke.yml +++ b/examples/workflows/gemini-assistant/gemini-invoke.yml @@ -66,6 +66,10 @@ jobs: use_vertex_ai: '${{ vars.GOOGLE_GENAI_USE_VERTEXAI }}' upload_artifacts: '${{ vars.UPLOAD_ARTIFACTS }}' workflow_name: 'gemini-invoke' + # Assistant workflows can be triggered by comments on either Issues or PRs. + # We explicitly map both fields so the CLI can correctly categorize the interaction. + github_pr_number: '${{ github.event.pull_request.number }}' + github_issue_number: '${{ github.event.issue.number }}' settings: |- { "model": { diff --git a/examples/workflows/gemini-assistant/gemini-plan-execute.yml b/examples/workflows/gemini-assistant/gemini-plan-execute.yml index f3b123f91..19e15bf2d 100644 --- a/examples/workflows/gemini-assistant/gemini-plan-execute.yml +++ b/examples/workflows/gemini-assistant/gemini-plan-execute.yml @@ -68,6 +68,10 @@ jobs: use_vertex_ai: '${{ vars.GOOGLE_GENAI_USE_VERTEXAI }}' upload_artifacts: '${{ vars.UPLOAD_ARTIFACTS }}' workflow_name: 'gemini-invoke' + # Assistant workflows can be triggered by comments on either Issues or PRs. + # We explicitly map both fields so the CLI can correctly categorize the interaction. + github_pr_number: '${{ github.event.pull_request.number }}' + github_issue_number: '${{ github.event.issue.number }}' settings: |- { "model": { diff --git a/examples/workflows/issue-triage/gemini-scheduled-triage.yml b/examples/workflows/issue-triage/gemini-scheduled-triage.yml index a8dd34a47..7d166bd6a 100644 --- a/examples/workflows/issue-triage/gemini-scheduled-triage.yml +++ b/examples/workflows/issue-triage/gemini-scheduled-triage.yml @@ -82,6 +82,9 @@ jobs: echo '📝 Setting output for GitHub Actions...' echo "issues_to_triage=${ISSUES}" >> "${GITHUB_OUTPUT}" + ISSUE_NUMBERS="$(echo "${ISSUES}" | jq -r '.[].number | tostring' | paste -sd, -)" + echo "issue_numbers=${ISSUE_NUMBERS}" >> "${GITHUB_OUTPUT}" + ISSUE_COUNT="$(echo "${ISSUES}" | jq 'length')" echo "✅ Found ${ISSUE_COUNT} issue(s) to triage! 🎯" @@ -109,6 +112,9 @@ jobs: use_vertex_ai: '${{ vars.GOOGLE_GENAI_USE_VERTEXAI }}' upload_artifacts: '${{ vars.UPLOAD_ARTIFACTS }}' workflow_name: 'gemini-scheduled-triage' + # Overriding default telemetry inputs because scheduled workflows lack an event payload + # We pass the dynamically generated list of batch issues to the custom tracking ID field + github_custom_tracking_id: '${{ steps.find_issues.outputs.issue_numbers }}' settings: |- { "model": { diff --git a/examples/workflows/issue-triage/gemini-triage.yml b/examples/workflows/issue-triage/gemini-triage.yml index 93acc688a..480a2b0d6 100644 --- a/examples/workflows/issue-triage/gemini-triage.yml +++ b/examples/workflows/issue-triage/gemini-triage.yml @@ -79,6 +79,8 @@ jobs: use_vertex_ai: '${{ vars.GOOGLE_GENAI_USE_VERTEXAI }}' upload_artifacts: '${{ vars.UPLOAD_ARTIFACTS }}' workflow_name: 'gemini-triage' + # Explicitly set the issue number to handle `issue_comment` triggers where the context might be ambiguous + github_issue_number: '${{ github.event.issue.number }}' settings: |- { "model": { diff --git a/examples/workflows/pr-review/gemini-review.yml b/examples/workflows/pr-review/gemini-review.yml index 28313594f..552f058ec 100644 --- a/examples/workflows/pr-review/gemini-review.yml +++ b/examples/workflows/pr-review/gemini-review.yml @@ -65,6 +65,8 @@ jobs: use_vertex_ai: '${{ vars.GOOGLE_GENAI_USE_VERTEXAI }}' upload_artifacts: '${{ vars.UPLOAD_ARTIFACTS }}' workflow_name: 'gemini-review' + # Explicitly set the PR number to handle `issue_comment` triggers (which GitHub treats as issues, not PRs) + github_pr_number: '${{ github.event.pull_request.number }}' settings: |- { "model": { diff --git a/scripts/collector-gcp.yaml.template b/scripts/collector-gcp.yaml.template index ba3c157d5..01709bca2 100644 --- a/scripts/collector-gcp.yaml.template +++ b/scripts/collector-gcp.yaml.template @@ -12,6 +12,15 @@ processors: - key: 'github.run_id' value: 'GITHUB_RUN_ID_PLACEHOLDER' action: 'upsert' + - key: 'github.pr.number' + value: 'GITHUB_PR_NUMBER_PLACEHOLDER' + action: 'upsert' + - key: 'github.issue.number' + value: 'GITHUB_ISSUE_NUMBER_PLACEHOLDER' + action: 'upsert' + - key: 'github.custom_tracking.id' + value: 'GITHUB_CUSTOM_TRACKING_ID_PLACEHOLDER' + action: 'upsert' batch: send_batch_size: 100 timeout: '10s'