feature: Add render-diff tool to show kustomize render delta for PRs #15542
Workflow file for this run
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 Dispatch' | ||
| on: | ||
| pull_request_review_comment: | ||
| types: | ||
| - 'created' | ||
| pull_request_review: | ||
| types: | ||
| - 'submitted' | ||
| pull_request_target: | ||
| types: | ||
| - 'opened' | ||
| issues: | ||
| types: | ||
| - 'opened' | ||
| - 'reopened' | ||
| issue_comment: | ||
| types: | ||
| - 'created' | ||
| defaults: | ||
| run: | ||
| shell: 'bash' | ||
| jobs: | ||
| # debugger: | ||
| # if: |- | ||
| # ${{ fromJSON(vars.DEBUG || vars.ACTIONS_STEP_DEBUG || false) }} | ||
| # runs-on: 'ubuntu-latest' | ||
| # permissions: | ||
| # contents: 'read' | ||
| # steps: | ||
| # - name: 'Print context for debugging' | ||
| # env: | ||
| # DEBUG_event_name: '${{ github.event_name }}' | ||
| # DEBUG_event__action: '${{ github.event.action }}' | ||
| # DEBUG_event__comment__author_association: '${{ github.event.comment.author_association }}' | ||
| # DEBUG_event__issue__author_association: '${{ github.event.issue.author_association }}' | ||
| # DEBUG_event__pull_request__author_association: '${{ github.event.pull_request.author_association }}' | ||
| # DEBUG_event__review__author_association: '${{ github.event.review.author_association }}' | ||
| # DEBUG_event: '${{ toJSON(github.event) }}' | ||
| # run: |- | ||
| # env | grep '^DEBUG_' | ||
| dispatch: | ||
| # For PRs: all | ||
| # For comments: only if user types @gemini-cli and is OWNER/MEMBER/COLLABORATOR | ||
| # For issues: only on open/reopen | ||
| if: |- | ||
| ( | ||
| github.event_name == 'pull_request_target' | ||
| ) || ( | ||
| github.event.sender.type == 'User' && | ||
| startsWith(github.event.comment.body || github.event.review.body || github.event.issue.body, '@gemini-cli') && | ||
| contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association || github.event.review.author_association || github.event.issue.author_association) | ||
| ) || ( | ||
| github.event_name == 'issues' && | ||
| contains(fromJSON('["opened", "reopened"]'), github.event.action) | ||
| ) | ||
| runs-on: 'ubuntu-latest' | ||
| permissions: | ||
| contents: 'read' | ||
| issues: 'write' | ||
| pull-requests: 'write' | ||
| outputs: | ||
| command: '${{ steps.extract_command.outputs.command }}' | ||
| request: '${{ steps.extract_command.outputs.request }}' | ||
| additional_context: '${{ steps.extract_command.outputs.additional_context }}' | ||
| issue_number: '${{ github.event.pull_request.number || github.event.issue.number }}' | ||
| steps: | ||
| - name: 'Mint identity token' | ||
| id: 'mint_identity_token' | ||
| if: |- | ||
| ${{ vars.APP_ID }} | ||
| uses: 'actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b' # ratchet:actions/create-github-app-token@v2 | ||
| with: | ||
| app-id: '${{ vars.APP_ID }}' | ||
| private-key: '${{ secrets.APP_PRIVATE_KEY }}' | ||
| permission-contents: 'read' | ||
| permission-issues: 'write' | ||
| permission-pull-requests: 'write' | ||
| - name: 'Extract command' | ||
| id: 'extract_command' | ||
| uses: 'actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea' # ratchet:actions/github-script@v7 | ||
| env: | ||
| EVENT_TYPE: '${{ github.event_name }}.${{ github.event.action }}' | ||
| REQUEST: '${{ github.event.comment.body || github.event.review.body || github.event.issue.body }}' | ||
| with: | ||
| script: | | ||
| const request = process.env.REQUEST; | ||
| const eventType = process.env.EVENT_TYPE | ||
| core.setOutput('request', request); | ||
| if (request.startsWith("@gemini-cli /review")) { | ||
| core.setOutput('command', 'review'); | ||
| const additionalContext = request.replace(/^@gemini-cli \/review/, '').trim(); | ||
| core.setOutput('additional_context', additionalContext); | ||
| } else if (request.startsWith("@gemini-cli /triage")) { | ||
| core.setOutput('command', 'triage'); | ||
| } else if (request.startsWith("@gemini-cli")) { | ||
| core.setOutput('command', 'invoke'); | ||
| const additionalContext = request.replace(/^@gemini-cli/, '').trim(); | ||
| core.setOutput('additional_context', additionalContext); | ||
| } else if (eventType === 'pull_request.opened') { | ||
| core.setOutput('command', 'review'); | ||
| } else if (['issues.opened', 'issues.reopened'].includes(eventType)) { | ||
| core.setOutput('command', 'triage'); | ||
| } else { | ||
| core.setOutput('command', 'fallthrough'); | ||
| } | ||
| - name: 'Add Gemini helper comment' | ||
| if: '${{ github.event_name }}.${{ github.event.action }} == "pull_request.opened"' | ||
|
Check warning on line 114 in .github/workflows/gemini-dispatch.yml
|
||
| env: | ||
| GITHUB_TOKEN: '${{ steps.mint_identity_token.outputs.token || secrets.GITHUB_TOKEN || github.token }}' | ||
| PR_NUMBER: '${{ github.event.pull_request.number }}' | ||
| REPOSITORY: '${{ github.repository }}' | ||
| MESSAGE: |- | ||
| ## 🤖 Gemini AI Assistant Available | ||
| Hi @${{ github.actor }}! I'm here to help with your pull request. You can interact with me using the following commands: | ||
| ### Available Commands | ||
| - **`@gemini-cli /review`** - Request a comprehensive code review | ||
| - Example: `@gemini-cli /review Please focus on security and performance` | ||
| - **`@gemini-cli <your question>`** - Ask me anything about the codebase | ||
| - Example: `@gemini-cli How can I improve this function?` | ||
| - Example: `@gemini-cli What are the best practices for error handling here?` | ||
| ### How to Use | ||
| 1. Simply type one of the commands above in a comment on this PR | ||
| 2. I'll analyze your code and provide detailed feedback | ||
| 3. You can track my progress in the [workflow logs](https://github.com/${{ github.repository }}/actions) | ||
| ### Permissions | ||
| Only **OWNER**, **MEMBER**, or **COLLABORATOR** users can trigger my responses. This ensures secure and appropriate usage. | ||
| --- | ||
| *This message was automatically added to help you get started with the Gemini AI assistant. Feel free to delete this comment if you don't need assistance.* | ||
| run: |- | ||
| gh pr comment "${PR_NUMBER}" \ | ||
| --body "${MESSAGE}" \ | ||
| --repo "${REPOSITORY}" | ||
| - name: 'Acknowledge request' | ||
| env: | ||
| GITHUB_TOKEN: '${{ steps.mint_identity_token.outputs.token || secrets.GITHUB_TOKEN || github.token }}' | ||
| ISSUE_NUMBER: '${{ github.event.pull_request.number || github.event.issue.number }}' | ||
| MESSAGE: |- | ||
| 🤖 Hi @${{ github.actor }}, I've received your request, and I'm working on it now! You can track my progress [in the logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for more details. | ||
| REPOSITORY: '${{ github.repository }}' | ||
| run: |- | ||
| gh issue comment "${ISSUE_NUMBER}" \ | ||
| --body "${MESSAGE}" \ | ||
| --repo "${REPOSITORY}" | ||
| review: | ||
| needs: 'dispatch' | ||
| if: |- | ||
| ${{ needs.dispatch.outputs.command == 'review' }} | ||
| uses: './.github/workflows/gemini-review.yml' | ||
| permissions: | ||
| contents: 'read' | ||
| id-token: 'write' | ||
| issues: 'write' | ||
| pull-requests: 'write' | ||
| with: | ||
| additional_context: '${{ needs.dispatch.outputs.additional_context }}' | ||
| secrets: 'inherit' | ||
| # triage: | ||
| # needs: 'dispatch' | ||
| # if: |- | ||
| # ${{ needs.dispatch.outputs.command == 'triage' }} | ||
| # uses: './.github/workflows/gemini-triage.yml' | ||
| # permissions: | ||
| # contents: 'read' | ||
| # id-token: 'write' | ||
| # issues: 'write' | ||
| # pull-requests: 'write' | ||
| # with: | ||
| # additional_context: '${{ needs.dispatch.outputs.additional_context }}' | ||
| # secrets: 'inherit' | ||
| # invoke: | ||
| # needs: 'dispatch' | ||
| # if: |- | ||
| # ${{ needs.dispatch.outputs.command == 'invoke' }} | ||
| # uses: './.github/workflows/gemini-invoke.yml' | ||
| # permissions: | ||
| # contents: 'read' | ||
| # id-token: 'write' | ||
| # issues: 'write' | ||
| # pull-requests: 'write' | ||
| # with: | ||
| # additional_context: '${{ needs.dispatch.outputs.additional_context }}' | ||
| # secrets: 'inherit' | ||
| # fallthrough: | ||
| # needs: | ||
| # - 'dispatch' | ||
| # - 'review' | ||
| # - 'triage' | ||
| # - 'invoke' | ||
| # if: |- | ||
| # ${{ always() && !cancelled() && (failure() || needs.dispatch.outputs.command == 'fallthrough') }} | ||
| # runs-on: 'ubuntu-latest' | ||
| # permissions: | ||
| # contents: 'read' | ||
| # issues: 'write' | ||
| # pull-requests: 'write' | ||
| # steps: | ||
| # - name: 'Mint identity token' | ||
| # id: 'mint_identity_token' | ||
| # if: |- | ||
| # ${{ vars.APP_ID }} | ||
| # uses: 'actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b' # ratchet:actions/create-github-app-token@v2 | ||
| # with: | ||
| # app-id: '${{ vars.APP_ID }}' | ||
| # private-key: '${{ secrets.APP_PRIVATE_KEY }}' | ||
| # permission-contents: 'read' | ||
| # permission-issues: 'write' | ||
| # permission-pull-requests: 'write' | ||
| # - name: 'Send failure comment' | ||
| # env: | ||
| # GITHUB_TOKEN: '${{ steps.mint_identity_token.outputs.token || secrets.GITHUB_TOKEN || github.token }}' | ||
| # ISSUE_NUMBER: '${{ github.event.pull_request.number || github.event.issue.number }}' | ||
| # MESSAGE: |- | ||
| # 🤖 I'm sorry @${{ github.actor }}, but I was unable to process your request. Please [see the logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for more details. | ||
| # REPOSITORY: '${{ github.repository }}' | ||
| # run: |- | ||
| # gh issue comment "${ISSUE_NUMBER}" \ | ||
| # --body "${MESSAGE}" \ | ||
| # --repo "${REPOSITORY}" | ||