first commit
This commit is contained in:
389
docs/workflows.md
Normal file
389
docs/workflows.md
Normal file
@@ -0,0 +1,389 @@
|
||||
# Workflows
|
||||
|
||||
This document provides ready-to-use workflow files for integrating AI code review into your repositories. Workflows are provided for both **GitHub Actions** and **Gitea Actions**.
|
||||
|
||||
---
|
||||
|
||||
## Platform Comparison
|
||||
|
||||
| Feature | GitHub | Gitea |
|
||||
|---------|--------|-------|
|
||||
| Context variable | `github.*` | `gitea.*` |
|
||||
| Default token | `GITHUB_TOKEN` | `AI_REVIEW_TOKEN` (custom) |
|
||||
| API URL | `https://api.github.com` | Your Gitea instance URL |
|
||||
| Tools location | Same repo (`tools/ai-review`) | Checkout from central repo |
|
||||
|
||||
---
|
||||
|
||||
## GitHub Workflows
|
||||
|
||||
### PR Review Workflow
|
||||
|
||||
```yaml
|
||||
# .github/workflows/ai-review.yml
|
||||
name: AI Code Review
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize]
|
||||
|
||||
jobs:
|
||||
ai-review:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
- run: pip install requests pyyaml
|
||||
|
||||
- name: Run AI Review
|
||||
env:
|
||||
AI_REVIEW_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
AI_REVIEW_REPO: ${{ github.repository }}
|
||||
AI_REVIEW_API_URL: https://api.github.com
|
||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||
run: |
|
||||
cd tools/ai-review
|
||||
python main.py pr ${{ github.repository }} ${{ github.event.pull_request.number }}
|
||||
```
|
||||
|
||||
### Issue Triage Workflow
|
||||
|
||||
```yaml
|
||||
# .github/workflows/ai-issue-triage.yml
|
||||
name: AI Issue Triage
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened, labeled]
|
||||
|
||||
jobs:
|
||||
ai-triage:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
- run: pip install requests pyyaml
|
||||
|
||||
- name: Run AI Issue Triage
|
||||
env:
|
||||
AI_REVIEW_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
AI_REVIEW_REPO: ${{ github.repository }}
|
||||
AI_REVIEW_API_URL: https://api.github.com
|
||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||
run: |
|
||||
cd tools/ai-review
|
||||
python main.py issue ${{ github.repository }} ${{ github.event.issue.number }} \
|
||||
--title "${{ github.event.issue.title }}"
|
||||
```
|
||||
|
||||
### Comment Reply Workflow (includes Bartender Chat)
|
||||
|
||||
```yaml
|
||||
# .github/workflows/ai-comment-reply.yml
|
||||
name: AI Comment Reply
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
ai-reply:
|
||||
runs-on: ubuntu-latest
|
||||
if: contains(github.event.comment.body, '@ai-bot')
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
- run: pip install requests pyyaml
|
||||
|
||||
- name: Run AI Comment Response
|
||||
env:
|
||||
AI_REVIEW_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
AI_REVIEW_REPO: ${{ github.repository }}
|
||||
AI_REVIEW_API_URL: https://api.github.com
|
||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||
SEARXNG_URL: ${{ secrets.SEARXNG_URL }}
|
||||
run: |
|
||||
cd tools/ai-review
|
||||
python main.py comment ${{ github.repository }} ${{ github.event.issue.number }} \
|
||||
"${{ github.event.comment.body }}"
|
||||
```
|
||||
|
||||
### Codebase Analysis Workflow
|
||||
|
||||
```yaml
|
||||
# .github/workflows/ai-codebase-review.yml
|
||||
name: AI Codebase Analysis
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * 0" # Weekly on Sunday
|
||||
workflow_dispatch: # Manual trigger
|
||||
|
||||
jobs:
|
||||
ai-codebase:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
- run: pip install requests pyyaml
|
||||
|
||||
- name: Run Codebase Analysis
|
||||
env:
|
||||
AI_REVIEW_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
AI_REVIEW_REPO: ${{ github.repository }}
|
||||
AI_REVIEW_API_URL: https://api.github.com
|
||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||
run: |
|
||||
cd tools/ai-review
|
||||
python main.py codebase ${{ github.repository }}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gitea Workflows
|
||||
|
||||
### PR Review Workflow
|
||||
|
||||
```yaml
|
||||
# .gitea/workflows/enterprise-ai-review.yml
|
||||
name: AI Code Review
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize]
|
||||
|
||||
jobs:
|
||||
ai-review:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: YourOrg/OpenRabbit
|
||||
path: .ai-review
|
||||
token: ${{ secrets.AI_REVIEW_TOKEN }}
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
- run: pip install requests pyyaml
|
||||
|
||||
- name: Run AI Review
|
||||
env:
|
||||
AI_REVIEW_TOKEN: ${{ secrets.AI_REVIEW_TOKEN }}
|
||||
AI_REVIEW_REPO: ${{ gitea.repository }}
|
||||
AI_REVIEW_API_URL: https://your-gitea.example.com/api/v1
|
||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||
run: |
|
||||
cd .ai-review/tools/ai-review
|
||||
python main.py pr ${{ gitea.repository }} ${{ gitea.event.pull_request.number }}
|
||||
```
|
||||
|
||||
### Issue Triage Workflow
|
||||
|
||||
```yaml
|
||||
# .gitea/workflows/ai-issue-triage.yml
|
||||
name: AI Issue Triage
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened, labeled]
|
||||
|
||||
jobs:
|
||||
ai-triage:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: YourOrg/OpenRabbit
|
||||
path: .ai-review
|
||||
token: ${{ secrets.AI_REVIEW_TOKEN }}
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
- run: pip install requests pyyaml
|
||||
|
||||
- name: Run AI Issue Triage
|
||||
env:
|
||||
AI_REVIEW_TOKEN: ${{ secrets.AI_REVIEW_TOKEN }}
|
||||
AI_REVIEW_REPO: ${{ gitea.repository }}
|
||||
AI_REVIEW_API_URL: https://your-gitea.example.com/api/v1
|
||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||
run: |
|
||||
cd .ai-review/tools/ai-review
|
||||
python main.py issue ${{ gitea.repository }} ${{ gitea.event.issue.number }} \
|
||||
--title "${{ gitea.event.issue.title }}"
|
||||
```
|
||||
|
||||
### Comment Reply Workflow (includes Bartender Chat)
|
||||
|
||||
```yaml
|
||||
# .gitea/workflows/ai-comment-reply.yml
|
||||
name: AI Comment Reply
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
ai-reply:
|
||||
runs-on: ubuntu-latest
|
||||
if: contains(github.event.comment.body, '@ai-bot')
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: YourOrg/OpenRabbit
|
||||
path: .ai-review
|
||||
token: ${{ secrets.AI_REVIEW_TOKEN }}
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
- run: pip install requests pyyaml
|
||||
|
||||
- name: Run AI Comment Response
|
||||
env:
|
||||
AI_REVIEW_TOKEN: ${{ secrets.AI_REVIEW_TOKEN }}
|
||||
AI_REVIEW_REPO: ${{ gitea.repository }}
|
||||
AI_REVIEW_API_URL: https://your-gitea.example.com/api/v1
|
||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||
SEARXNG_URL: ${{ secrets.SEARXNG_URL }}
|
||||
run: |
|
||||
cd .ai-review/tools/ai-review
|
||||
python main.py comment ${{ gitea.repository }} ${{ gitea.event.issue.number }} \
|
||||
"${{ gitea.event.comment.body }}"
|
||||
```
|
||||
|
||||
### Codebase Analysis Workflow
|
||||
|
||||
```yaml
|
||||
# .gitea/workflows/ai-codebase-review.yml
|
||||
name: AI Codebase Analysis
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * 0" # Weekly on Sunday
|
||||
workflow_dispatch: # Manual trigger
|
||||
|
||||
jobs:
|
||||
ai-codebase:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: YourOrg/OpenRabbit
|
||||
path: .ai-review
|
||||
token: ${{ secrets.AI_REVIEW_TOKEN }}
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
- run: pip install requests pyyaml
|
||||
|
||||
- name: Run Codebase Analysis
|
||||
env:
|
||||
AI_REVIEW_TOKEN: ${{ secrets.AI_REVIEW_TOKEN }}
|
||||
AI_REVIEW_REPO: ${{ gitea.repository }}
|
||||
AI_REVIEW_API_URL: https://your-gitea.example.com/api/v1
|
||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||
run: |
|
||||
cd .ai-review/tools/ai-review
|
||||
python main.py codebase ${{ gitea.repository }}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Required Secrets
|
||||
|
||||
### GitHub
|
||||
|
||||
| Secret | Required | Description |
|
||||
|--------|----------|-------------|
|
||||
| `GITHUB_TOKEN` | Auto | Built-in token (automatic) |
|
||||
| `OPENAI_API_KEY` | Choose one | OpenAI API key |
|
||||
| `OPENROUTER_API_KEY` | Choose one | OpenRouter API key |
|
||||
| `OLLAMA_HOST` | Choose one | Ollama server URL |
|
||||
| `SEARXNG_URL` | Optional | SearXNG instance for web search |
|
||||
|
||||
### Gitea
|
||||
|
||||
| Secret | Required | Description |
|
||||
|--------|----------|-------------|
|
||||
| `AI_REVIEW_TOKEN` | Yes | Gitea bot access token |
|
||||
| `OPENAI_API_KEY` | Choose one | OpenAI API key |
|
||||
| `OPENROUTER_API_KEY` | Choose one | OpenRouter API key |
|
||||
| `OLLAMA_HOST` | Choose one | Ollama server URL |
|
||||
| `SEARXNG_URL` | Optional | SearXNG instance for web search |
|
||||
|
||||
---
|
||||
|
||||
## Customization
|
||||
|
||||
### For GitHub
|
||||
|
||||
The tools are included in the same repository under `tools/ai-review`, so no additional checkout is needed.
|
||||
|
||||
### For Gitea
|
||||
|
||||
Replace the repository reference with your OpenRabbit fork:
|
||||
|
||||
```yaml
|
||||
repository: YourOrg/OpenRabbit
|
||||
```
|
||||
|
||||
Replace the API URL with your Gitea instance:
|
||||
|
||||
```yaml
|
||||
AI_REVIEW_API_URL: https://your-gitea.example.com/api/v1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Chat/Bartender Workflow
|
||||
|
||||
Both platforms support the Bartender chat agent through the comment reply workflow. When `@ai-bot` is mentioned with a question (not a specific command like `summarize`), the Chat Agent handles it with tool calling capabilities.
|
||||
|
||||
To enable web search, set the `SEARXNG_URL` secret to your SearXNG instance URL.
|
||||
|
||||
**Example usage:**
|
||||
```
|
||||
@ai-bot How do I configure rate limiting?
|
||||
@ai-bot Find all authentication-related files
|
||||
@ai-bot What does the dispatcher module do?
|
||||
```
|
||||
Reference in New Issue
Block a user