mirror of
https://github.com/alibaba/open-code-review.git
synced 2026-07-09 17:28:58 +00:00
ci: optimize ocr-review workflow for self-hosted runners (#97)
This commit is contained in:
parent
c323c6b40c
commit
022800c876
1 changed files with 12 additions and 59 deletions
71
.github/workflows/ocr-review.yml
vendored
71
.github/workflows/ocr-review.yml
vendored
|
|
@ -4,8 +4,7 @@
|
|||
# and posts review comments directly on the PR.
|
||||
#
|
||||
# Triggers:
|
||||
# - PR opened, synchronized, or reopened (uses pull_request_target for fork secret access)
|
||||
# - Comment on PR containing '/open-code-review' or '@open-code-review'
|
||||
# - PR opened (uses pull_request_target for fork secret access)
|
||||
#
|
||||
# Required secrets:
|
||||
# OCR_LLM_URL - LLM API endpoint (e.g., https://api.openai.com/v1/chat/completions)
|
||||
|
|
@ -28,8 +27,6 @@ on:
|
|||
# the diff and does not execute any code from the PR.
|
||||
pull_request_target:
|
||||
types: [opened]
|
||||
issue_comment:
|
||||
types: [created]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
|
@ -37,43 +34,19 @@ permissions:
|
|||
|
||||
jobs:
|
||||
code-review:
|
||||
runs-on: ubuntu-latest
|
||||
# Run on PR events, or on comments starting with trigger keywords
|
||||
if: |
|
||||
github.event_name == 'pull_request_target' ||
|
||||
(github.event_name == 'issue_comment' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/open-code-review')) ||
|
||||
(github.event_name == 'issue_comment' && github.event.issue.pull_request && startsWith(github.event.comment.body, '@open-code-review'))
|
||||
runs-on: self-hosted
|
||||
container:
|
||||
image: node:20
|
||||
if: github.event_name == 'pull_request_target'
|
||||
steps:
|
||||
- name: Get PR context
|
||||
id: pr-context
|
||||
if: github.event_name != 'pull_request_target'
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
// For issue_comment events, get PR info
|
||||
const prNumber = context.issue.number;
|
||||
const { data: pullRequest } = await github.rest.pulls.get({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
pull_number: prNumber
|
||||
});
|
||||
core.setOutput('base_ref', pullRequest.base.ref);
|
||||
core.setOutput('head_ref', pullRequest.head.ref);
|
||||
core.setOutput('head_sha', pullRequest.head.sha);
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # Full history needed for merge-base diff
|
||||
ref: ${{ github.event.pull_request.head.sha || steps.pr-context.outputs.head_sha }}
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
|
||||
- name: Fetch PR head ref (ensures fork commits are available)
|
||||
run: git fetch origin pull/${{ github.event.pull_request.number || github.event.issue.number }}/head
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
run: git fetch origin pull/${{ github.event.pull_request.number }}/head
|
||||
|
||||
- name: Install OpenCodeReview
|
||||
run: npm install -g @alibaba-group/open-code-review
|
||||
|
|
@ -84,21 +57,14 @@ jobs:
|
|||
ocr config set llm.auth_token ${{ secrets.OCR_LLM_AUTH_TOKEN }}
|
||||
ocr config set llm.model ${{ secrets.OCR_LLM_MODEL }}
|
||||
ocr config set llm.use_anthropic ${{ secrets.OCR_LLM_USE_ANTHROPIC }}
|
||||
ocr config set llm.extra_body '{"thinking": {"type": "disabled"}}'
|
||||
ocr config set llm.extra_body '{"enable_thinking": false}'
|
||||
ocr config set language English
|
||||
|
||||
- name: Run OpenCodeReview
|
||||
id: review
|
||||
run: |
|
||||
# Get base ref and head SHA from PR context (different for comment triggers)
|
||||
# Note: We use HEAD_SHA instead of origin/${HEAD_REF} to support fork PRs,
|
||||
# because fork branches don't exist on the origin remote.
|
||||
if [ "${{ github.event_name }}" = "pull_request_target" ]; then
|
||||
BASE_REF="${{ github.event.pull_request.base.ref }}"
|
||||
HEAD_SHA="${{ github.event.pull_request.head.sha }}"
|
||||
else
|
||||
BASE_REF="${{ steps.pr-context.outputs.base_ref }}"
|
||||
HEAD_SHA="${{ steps.pr-context.outputs.head_sha }}"
|
||||
fi
|
||||
BASE_REF="${{ github.event.pull_request.base.ref }}"
|
||||
HEAD_SHA="${{ github.event.pull_request.head.sha }}"
|
||||
|
||||
echo "Reviewing PR: ${HEAD_SHA} against origin/${BASE_REF}"
|
||||
|
||||
|
|
@ -159,20 +125,7 @@ jobs:
|
|||
|
||||
// Prepare PR review with inline comments
|
||||
const prNumber = context.issue.number;
|
||||
let commitSha;
|
||||
|
||||
// Get commit SHA from event context
|
||||
if (context.eventName === 'pull_request_target') {
|
||||
commitSha = context.payload.pull_request.head.sha;
|
||||
} else {
|
||||
// For comment events, we need to fetch the PR
|
||||
const { data: pullRequest } = await github.rest.pulls.get({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
pull_number: prNumber
|
||||
});
|
||||
commitSha = pullRequest.head.sha;
|
||||
}
|
||||
let commitSha = context.payload.pull_request.head.sha;
|
||||
|
||||
// Build review comments array for the PR review API
|
||||
// Only inline comments with line info can be posted via createReview
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue