Skip to content

Add CodeAgora landing page #368

Add CodeAgora landing page

Add CodeAgora landing page #368

Workflow file for this run

name: CodeAgora Review
on:
pull_request:
types: [opened, synchronize, reopened]
permissions:
contents: read
pull-requests: write
checks: write
security-events: write
jobs:
review:
if: >-
github.event.pull_request.draft == false &&
!contains(github.event.pull_request.labels.*.name, 'review:skip')
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Check fork PR secrets
id: fork-check
if: github.event.pull_request.head.repo.full_name != github.repository
run: |
echo "::warning::Fork PR detected - secrets are unavailable. Skipping review."
echo "skip=true" >> "$GITHUB_OUTPUT"
- name: Check API key
id: key-check
if: steps.fork-check.outputs.skip != 'true'
run: |
if [ -n "${{ secrets.OPENROUTER_API_KEY }}" ]; then
echo "provider=openrouter" >> "$GITHUB_OUTPUT"
else
echo "::warning::OPENROUTER_API_KEY is not configured. Add it to enable CodeAgora review."
echo "skip=true" >> "$GITHUB_OUTPUT"
fi
- uses: actions/checkout@v6
if: steps.fork-check.outputs.skip != 'true' && steps.key-check.outputs.skip != 'true'
with:
fetch-depth: 0
- name: Generate CI config
if: steps.fork-check.outputs.skip != 'true' && steps.key-check.outputs.skip != 'true'
run: |
mkdir -p .ca
cat > .ca/config.json << 'CONF'
{
"mode": "pragmatic",
"language": "ko",
"reviewers": [
{
"id": "r-qwen235",
"model": "qwen/qwen3-235b-a22b-2507",
"backend": "api",
"provider": "openrouter",
"enabled": true,
"timeout": 180,
"persona": "builtin:logic"
},
{
"id": "r-deepseek",
"model": "deepseek/deepseek-v4-flash",
"backend": "api",
"provider": "openrouter",
"enabled": true,
"timeout": 180,
"persona": "builtin:api-contract"
},
{
"id": "r-qwen9",
"model": "qwen/qwen3.5-9b",
"backend": "api",
"provider": "openrouter",
"enabled": true,
"timeout": 180,
"persona": "builtin:general"
},
{
"id": "r-glm-flash",
"model": "z-ai/glm-4.7-flash",
"backend": "api",
"provider": "openrouter",
"enabled": true,
"timeout": 180,
"persona": "builtin:security"
},
{
"id": "r-gpt-oss",
"model": "openai/gpt-oss-120b",
"backend": "api",
"provider": "openrouter",
"enabled": true,
"timeout": 180,
"persona": "builtin:logic"
}
],
"supporters": {
"pool": [
{
"id": "s-glm",
"model": "z-ai/glm-5.1",
"backend": "api",
"provider": "openrouter",
"enabled": true,
"timeout": 180
}
],
"pickCount": 1,
"pickStrategy": "random",
"devilsAdvocate": {
"id": "da-kimi",
"model": "moonshotai/kimi-k2.5",
"backend": "api",
"provider": "openrouter",
"enabled": true,
"timeout": 180
},
"personaPool": [
"builtin:security",
"builtin:logic",
"builtin:api-contract",
"builtin:general"
],
"personaAssignment": "random"
},
"moderator": {
"model": "z-ai/glm-5.1",
"backend": "api",
"provider": "openrouter",
"enabled": false,
"timeout": 180
},
"discussion": {
"enabled": true,
"maxRounds": 1,
"registrationThreshold": {
"HARSHLY_CRITICAL": 1,
"CRITICAL": 1,
"WARNING": 2,
"SUGGESTION": null
},
"codeSnippetRange": 10
},
"head": {
"backend": "api",
"model": "z-ai/glm-5.1",
"provider": "openrouter",
"enabled": true,
"timeout": 180
},
"errorHandling": {
"maxRetries": 1,
"forfeitThreshold": 0.7
}
}
CONF
- name: CodeAgora Review
if: steps.fork-check.outputs.skip != 'true' && steps.key-check.outputs.skip != 'true'
uses: ./
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
fail-on-reject: 'true'
max-diff-lines: '10000'
reporter-mode: check-run
upload-sarif: 'true'
env:
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
CODEAGORA_APP_ID: ${{ secrets.CODEAGORA_APP_ID }}
CODEAGORA_APP_PRIVATE_KEY: ${{ secrets.CODEAGORA_APP_PRIVATE_KEY }}