Files
reviewer/action.yml

133 lines
4.7 KiB
YAML

name: 'AI Code Assistant for Gitea - Reusable Action'
description: 'AI Assistant for reviewing pull-requests and responding to issues in Gitea repositories'
inputs:
gitea_token:
description: 'Gitea token for authentication'
required: true
anthropic_api_key:
description: 'Anthropic API key'
required: true
model:
description: 'Claude model to use'
required: false
default: ''
cc_bgmodel:
description: 'Background Claude model to use'
required: false
default: ''
cc_metric_url:
description: 'Base URL for the metrics API endpoint'
required: false
default: ''
cc_base_url:
description: 'Base URL for the Claude API endpoint'
required: false
default: ''
enable_reviewer_verification:
description: 'Whether to verify that the bot is assigned as a reviewer before running'
required: false
default: ''
team_name:
description: 'Team name for telemetry/metrics attribution'
required: false
default: ''
log_level:
description: 'Log level for the AI review process'
required: false
default: ''
options_type:
description: 'Options type for the AI review process'
required: false
default: ''
cc_prompt:
description: 'Custom prompt override for the AI review'
required: false
default: ''
cc_allowed_tool:
description: 'Comma-separated list of allowed tools for the AI review'
required: false
default: ''
cc_disallowed_tool:
description: 'Comma-separated list of disallowed tools for the AI review'
required: false
default: ''
server:
description: 'Gitea server URL'
required: false
default: ''
repo_owner:
description: 'Repository owner (defaults to GITHUB_REPOSITORY owner)'
required: false
default: ''
repo_slug:
description: 'Repository slug/name (defaults to GITHUB_REPOSITORY name)'
required: false
default: ''
source_branch:
description: 'Source branch override (defaults to GITHUB_HEAD_REF)'
required: false
default: ''
source_commit:
description: 'Source commit SHA override'
required: false
default: ''
pr_id:
description: 'Pull Request ID override'
required: false
default: ''
pr_destination_branch:
description: 'PR destination/target branch override'
required: false
default: ''
pr_destination_commit:
description: 'PR destination commit SHA override'
required: false
default: ''
runs:
using: 'composite'
steps:
- name: Check condition
id: check
shell: bash
run: |
[[ "${{ github.event_name }}" == "pull_request" && "${{ contains(github.event.pull_request.title, '[no ai]') }}" == "false" ]] || \
[[ "${{ github.event_name }}" == "issues" && "${{ contains(github.event.issue.body, '@kodobot') }}" == "true" ]] || \
[[ "${{ github.event_name }}" == "issue_comment" && "${{ contains(github.event.comment.body, '@kodobot') }}" == "true" ]] && \
echo "run=true" >> $GITHUB_OUTPUT || echo "run=false" >> $GITHUB_OUTPUT
- name: Setup Repository Context
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run Code Review
if: steps.check.outputs.run == 'true'
shell: bash
env:
CC_BASE_URL: ${{ inputs.cc_base_url || env.CC_BASE_URL }}
CC_API_KEY: ${{ inputs.anthropic_api_key || env.CC_API_KEY }}
CC_MODEL: ${{ inputs.model || env.CC_MODEL }}
CC_BGMODEL: ${{ inputs.cc_bgmodel || env.CC_BGMODEL }}
CC_METRIC_URL: ${{ inputs.cc_metric_url || env.CC_METRIC_URL }}
VCS_ACCESS_TOKEN: ${{ inputs.gitea_token || env.VCS_ACCESS_TOKEN }}
TEAM_NAME: ${{ inputs.team_name || env.TEAM_NAME || github.repository_owner }}
SERVER: ${{ inputs.server || env.SERVER }}
ENABLE_REVIEWER_VERIFICATION: ${{ inputs.enable_reviewer_verification || env.ENABLE_REVIEWER_VERIFICATION }}
LOG_LEVEL: ${{ inputs.log_level || env.LOG_LEVEL }}
OPTIONS_TYPE: ${{ inputs.options_type || env.OPTIONS_TYPE }}
CC_PROMPT: ${{ inputs.cc_prompt || env.CC_PROMPT }}
CC_ALLOWED_TOOL: ${{ inputs.cc_allowed_tool || env.CC_ALLOWED_TOOL }}
CC_DISALLOWED_TOOL: ${{ inputs.cc_disallowed_tool || env.CC_DISALLOWED_TOOL }}
REPO_OWNER: ${{ inputs.repo_owner || env.REPO_OWNER }}
REPO_SLUG: ${{ inputs.repo_slug || env.REPO_SLUG }}
SOURCE_BRANCH: ${{ inputs.source_branch || env.SOURCE_BRANCH }}
SOURCE_COMMIT: ${{ inputs.source_commit || env.SOURCE_COMMIT }}
PR_ID: ${{ inputs.pr_id || env.PR_ID }}
PR_DESTINATION_BRANCH: ${{ inputs.pr_destination_branch || env.PR_DESTINATION_BRANCH }}
PR_DESTINATION_COMMIT: ${{ inputs.pr_destination_commit || env.PR_DESTINATION_COMMIT }}
run: /pipe.sh
branding:
icon: 'message-circle'
color: 'blue'