Skip to content

pr-review workflow has incorrect README Dependencies section #256

@hassib-ashouri

Description

@hassib-ashouri

TL;DR

The README file of pr-review workflow states the gemeni-dispatch.yml as a dependency and providing a bash command to download two workflow files under Setup Methods section.
This setup is incorrect because gemini-dispatch.yml has dependency on dispatch and triage workflows.

Expected behavior

The pr-review workflow should work as standalone workflow according to the Setup Methods section.

Observed behavior

Workflow fails when triggered on a new PR due to missing triage workflow file

Action YAML

name: "🔀 Gemini Dispatch"

on:
  pull_request_review_comment:
    types:
      - "created"
  pull_request_review:
    types:
      - "submitted"
  pull_request:
    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: only if not from a fork
    # 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' &&
        github.event.pull_request.head.repo.fork == false
      ) || (
        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: "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}"

Log output

Invalid workflow file: .github/workflows/gemini-dispatch.yml#L144
error parsing called workflow ".github/workflows/gemini-dispatch.yml" -> "./.github/workflows/gemini-triage.yml" : failed to fetch workflow: workflow was not found.

Additional information

No response

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions