Compare commits
3 Commits
issue-66
...
58c114aecb
| Author | SHA1 | Date | |
|---|---|---|---|
| 58c114aecb | |||
| 4842ac64cc | |||
| a414509a94 |
+2
-16
@@ -19,6 +19,7 @@ jobs:
|
|||||||
- run: go build -o review-bot ./cmd/review-bot
|
- run: go build -o review-bot ./cmd/review-bot
|
||||||
|
|
||||||
# Self-review: builds from source since we're pre-release
|
# Self-review: builds from source since we're pre-release
|
||||||
|
# Models must match SAP AI Core deployments (use 'anthropic--' prefix for Claude)
|
||||||
review:
|
review:
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
if: github.event_name == 'pull_request'
|
if: github.event_name == 'pull_request'
|
||||||
@@ -30,27 +31,12 @@ jobs:
|
|||||||
token_secret: SONNET_REVIEW_TOKEN
|
token_secret: SONNET_REVIEW_TOKEN
|
||||||
provider: anthropic
|
provider: anthropic
|
||||||
llm_path: /anthropic/v1
|
llm_path: /anthropic/v1
|
||||||
model: claude-sonnet-4-6
|
model: anthropic--claude-4.6-sonnet
|
||||||
- name: gpt
|
- name: gpt
|
||||||
token_secret: GPT_REVIEW_TOKEN
|
token_secret: GPT_REVIEW_TOKEN
|
||||||
provider: openai
|
provider: openai
|
||||||
llm_path: /openai/v1
|
llm_path: /openai/v1
|
||||||
model: gpt-5
|
model: gpt-5
|
||||||
- name: gpt41
|
|
||||||
token_secret: GPT_REVIEW_TOKEN
|
|
||||||
provider: openai
|
|
||||||
llm_path: /openai/v1
|
|
||||||
model: gpt-4.1
|
|
||||||
- name: gpt5-mini
|
|
||||||
token_secret: GPT_REVIEW_TOKEN
|
|
||||||
provider: openai
|
|
||||||
llm_path: /openai/v1
|
|
||||||
model: gpt-5-mini
|
|
||||||
- name: gpt41-mini
|
|
||||||
token_secret: GPT_REVIEW_TOKEN
|
|
||||||
provider: openai
|
|
||||||
llm_path: /openai/v1
|
|
||||||
model: gpt-4.1-mini
|
|
||||||
- name: security
|
- name: security
|
||||||
token_secret: SECURITY_REVIEW_TOKEN
|
token_secret: SECURITY_REVIEW_TOKEN
|
||||||
provider: openai
|
provider: openai
|
||||||
|
|||||||
@@ -315,6 +315,23 @@ func main() {
|
|||||||
|
|
||||||
sentinel := fmt.Sprintf("<!-- review-bot:%s -->", *reviewerName)
|
sentinel := fmt.Sprintf("<!-- review-bot:%s -->", *reviewerName)
|
||||||
|
|
||||||
|
// Stale check: verify HEAD hasn't moved since we started
|
||||||
|
// Re-fetch PR metadata to get the current HEAD SHA
|
||||||
|
evaluatedSHA := pr.Head.Sha
|
||||||
|
currentPR, err := giteaClient.GetPullRequest(ctx, owner, repoName, prNumber)
|
||||||
|
if err != nil {
|
||||||
|
slog.Warn("could not re-fetch PR for stale check", "pr", prNumber, "error", err)
|
||||||
|
// Continue anyway — better to post a potentially stale review than fail
|
||||||
|
} else if currentPR.Head.Sha != evaluatedSHA {
|
||||||
|
slog.Warn("HEAD moved during review — skipping stale review",
|
||||||
|
"evaluated", evaluatedSHA,
|
||||||
|
"current", currentPR.Head.Sha,
|
||||||
|
"pr", prNumber)
|
||||||
|
// Exit successfully — this isn't an error, just outdated work
|
||||||
|
// A new workflow run should already be in progress for the new HEAD
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Map findings to inline comments for lines present in the diff
|
// Map findings to inline comments for lines present in the diff
|
||||||
diffRanges := gitea.ParseDiffNewLines(diff)
|
diffRanges := gitea.ParseDiffNewLines(diff)
|
||||||
var inlineComments []gitea.ReviewComment
|
var inlineComments []gitea.ReviewComment
|
||||||
|
|||||||
Reference in New Issue
Block a user