Refactor LLM verification and update dependencies

- Removed OpenAI and related dependencies from package.json and package-lock.json.
- Simplified LLM verification logic to focus on OpenCode server.
- Updated tests to reflect changes in LLM provider handling.
- Added CI and CD workflows for automated processes in Gitea.
This commit is contained in:
2026-06-25 10:17:08 +00:00
parent 525f6f9350
commit 65f27f544b
11 changed files with 162 additions and 837 deletions
+27 -105
View File
@@ -1,136 +1,58 @@
name: 'Docker Action Template'
description: 'Docker Action 範本'
name: 'AI Code Review'
description: 'AI Code Review'
author: 'Jeffery'
inputs:
# Gitea 相關(可從 gitea context 自動取得)
GITEA_TOKEN:
# Gitea context
gitea_token:
description: 'Gitea API Token'
required: true
GITEA_COMMENT_TOKEN:
gitea_comment_token:
description: 'Gitea API Token for posting comments only'
required: false
GITEA_SERVER_URL:
gitea_server_url:
description: 'Gitea Server URL'
required: false
GITEA_REPOSITORY:
gitea_repository:
description: 'Gitea Repository (owner/repo)'
required: false
GITEA_SKIP_TLS_VERIFY:
gitea_skip_tls_verify:
description: '跳過 Gitea SSL/TLS 憑證驗證(自簽憑證時使用)'
required: false
default: 'false'
PR_NUMBER:
pr_number:
description: 'Pull Request Number'
required: false
PR_HEAD_BRANCH:
pr_head_sha:
description: 'PR head commit SHA'
required: false
pr_head_branch:
description: 'PR 來源分支'
required: false
PR_BASE_BRANCH:
description: 'PR 目標分支'
required: false
# OpenAI-compatible
OPENAI_API_KEY:
description: 'OpenAI / OpenRouter API Key'
required: false
OPENAI_BASE_URL:
description: 'OpenAI-compatible Base URL'
required: false
default: 'https://openrouter.ai/api/v1'
OPENAI_MODEL:
description: 'OpenAI-compatible Model Name'
required: false
# Anthropic Claude
CLAUDE_API_KEY:
description: 'Anthropic Claude API Key'
required: false
CLAUDE_BASE_URL:
description: 'Claude Base URL'
required: false
CLAUDE_MODEL:
description: 'Claude Model Name'
required: false
# Google Gemini
GEMINI_API_KEY:
description: 'Google Gemini API Key'
required: false
GEMINI_BASE_URL:
description: 'Gemini Base URL'
required: false
GEMINI_MODEL:
description: 'Gemini Model Name'
required: false
# Ollama
OLLAMA_BASE_URL:
description: 'Ollama Base URL'
required: false
OLLAMA_MODEL:
description: 'Ollama Model Name'
required: false
# Amazon Q
AMAZONQ_API_KEY:
description: 'Amazon Q API Key'
required: false
AMAZONQ_BASE_URL:
description: 'Amazon Q Base URL'
required: false
# OpenCode Server
OPENCODE_BASE_URL:
opencode_base_url:
description: 'OpenCode server Base URL'
required: false
OPENCODE_MODEL:
opencode_model:
description: 'OpenCode model id'
required: false
OPENCODE_PROVIDER:
opencode_provider:
description: 'OpenCode server provider id'
required: false
OPENCODE_SERVER_USERNAME:
description: 'OpenCode server Basic Auth username'
required: false
OPENCODE_SERVER_PASSWORD:
description: 'OpenCode server Basic Auth password'
required: false
OPENCODE_SKIP_TLS_VERIFY:
description: '跳過 OpenCode server SSL/TLS 憑證驗證'
required: false
default: 'true'
runs:
using: 'docker'
image: 'Dockerfile'
env:
# Gitea context(改為只從 inputs 取得)
GITEA_TOKEN: ${{ inputs.GITEA_TOKEN }}
GITEA_COMMENT_TOKEN: ${{ inputs.GITEA_COMMENT_TOKEN }}
GITEA_SERVER_URL: ${{ inputs.GITEA_SERVER_URL || gitea.server_url }}
GITEA_REPOSITORY: ${{ inputs.GITEA_REPOSITORY || gitea.repository }}
GITEA_SKIP_TLS_VERIFY: ${{ inputs.GITEA_SKIP_TLS_VERIFY }}
PR_NUMBER: ${{ inputs.PR_NUMBER || gitea.event.pull_request.number }}
PR_HEAD_SHA: ${{ inputs.PR_HEAD_SHA || gitea.event.pull_request.head.sha }}
PR_HEAD_BRANCH: ${{ inputs.PR_HEAD_BRANCH || gitea.event.pull_request.head.ref }}
PR_BASE_BRANCH: ${{ inputs.PR_BASE_BRANCH || gitea.event.pull_request.base.ref }}
GITEA_TOKEN: ${{ inputs.gitea_token }}
GITEA_COMMENT_TOKEN: ${{ inputs.gitea_comment_token }}
GITEA_SERVER_URL: ${{ inputs.gitea_server_url || gitea.server_url }}
GITEA_REPOSITORY: ${{ inputs.gitea_repository || gitea.repository }}
GITEA_SKIP_TLS_VERIFY: ${{ inputs.gitea_skip_tls_verify }}
PR_NUMBER: ${{ inputs.pr_number || gitea.event.pull_request.number }}
PR_HEAD_SHA: ${{ inputs.pr_head_sha || gitea.event.pull_request.head.sha }}
PR_HEAD_BRANCH: ${{ inputs.pr_head_branch || gitea.event.pull_request.head.ref }}
# LLM
OPENAI_API_KEY: ${{ inputs.OPENAI_API_KEY }}
OPENAI_BASE_URL: ${{ inputs.OPENAI_BASE_URL }}
OPENAI_MODEL: ${{ inputs.OPENAI_MODEL }}
CLAUDE_API_KEY: ${{ inputs.CLAUDE_API_KEY }}
CLAUDE_BASE_URL: ${{ inputs.CLAUDE_BASE_URL }}
CLAUDE_MODEL: ${{ inputs.CLAUDE_MODEL }}
GEMINI_API_KEY: ${{ inputs.GEMINI_API_KEY }}
GEMINI_BASE_URL: ${{ inputs.GEMINI_BASE_URL }}
GEMINI_MODEL: ${{ inputs.GEMINI_MODEL }}
OLLAMA_BASE_URL: ${{ inputs.OLLAMA_BASE_URL }}
OLLAMA_MODEL: ${{ inputs.OLLAMA_MODEL }}
AMAZONQ_API_KEY: ${{ inputs.AMAZONQ_API_KEY }}
AMAZONQ_BASE_URL: ${{ inputs.AMAZONQ_BASE_URL }}
OPENCODE_BASE_URL: ${{ inputs.OPENCODE_BASE_URL }}
OPENCODE_MODEL: ${{ inputs.OPENCODE_MODEL }}
OPENCODE_PROVIDER: ${{ inputs.OPENCODE_PROVIDER }}
OPENCODE_SERVER_USERNAME: ${{ inputs.OPENCODE_SERVER_USERNAME }}
OPENCODE_SERVER_PASSWORD: ${{ inputs.OPENCODE_SERVER_PASSWORD }}
OPENCODE_SKIP_TLS_VERIFY: ${{ inputs.OPENCODE_SKIP_TLS_VERIFY }}
OPENCODE_BASE_URL: ${{ inputs.opencode_base_url }}
OPENCODE_MODEL: ${{ inputs.opencode_model }}
OPENCODE_PROVIDER: ${{ inputs.opencode_provider }}