Simplify workflow - let Claude handle everything
This commit is contained in:
@@ -22,20 +22,7 @@ jobs:
|
||||
env:
|
||||
GIT_TOKEN: ${{ secrets.GIT_TOKEN }}
|
||||
run: |
|
||||
set -x
|
||||
# Only set ANTHROPIC_API_KEY if the secret is configured
|
||||
if [ -n "${{ secrets.ANTHROPIC_API_KEY }}" ]; then
|
||||
export ANTHROPIC_API_KEY="${{ secrets.ANTHROPIC_API_KEY }}"
|
||||
fi
|
||||
|
||||
# Debug info
|
||||
echo "Running as: $(whoami)"
|
||||
echo "Home: $HOME"
|
||||
echo "Claude version: $(claude --version 2>&1)"
|
||||
echo "Working dir: $(pwd)"
|
||||
ls -la
|
||||
|
||||
# Configure git
|
||||
# Configure git for Claude to use
|
||||
git config user.name "Claude Bot"
|
||||
git config user.email "claude@localhost"
|
||||
git remote set-url origin "http://admin:${GIT_TOKEN}@localhost:3000/${{ github.repository }}.git"
|
||||
@@ -49,9 +36,6 @@ jobs:
|
||||
ISSUE_BODY=$(curl -s "http://localhost:3000/api/v1/repos/${REPO}/issues/${ISSUE_NUMBER}" \
|
||||
-H "Authorization: token ${GIT_TOKEN}" | python3 -c "import sys,json; print(json.load(sys.stdin).get('body',''))")
|
||||
|
||||
echo "Issue: #${ISSUE_NUMBER} - ${ISSUE_TITLE}"
|
||||
echo "Body: ${ISSUE_BODY}"
|
||||
|
||||
# Get comment body if triggered by comment
|
||||
COMMENT_BODY=""
|
||||
if [ "${{ github.event_name }}" = "issue_comment" ]; then
|
||||
@@ -70,69 +54,27 @@ jobs:
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"body\": \"Claude is working on this issue...\"}"
|
||||
|
||||
# Run Claude Code
|
||||
CLAUDE_OUTPUT=$(claude -p "You are working on the repository ${REPO}.
|
||||
# Run Claude Code - it handles everything: code changes, commits, push, and PR creation
|
||||
claude -p "You are working on the repository ${REPO} (Gitea instance at http://localhost:3000).
|
||||
A Gitea issue needs your attention:
|
||||
|
||||
Issue #${ISSUE_NUMBER}: ${ISSUE_TITLE}
|
||||
Description: ${ISSUE_BODY}
|
||||
|
||||
Additional context from comment: ${COMMENT_BODY}
|
||||
Additional context: ${COMMENT_BODY}
|
||||
|
||||
Instructions:
|
||||
1. Read and understand the codebase structure
|
||||
2. Implement the requested changes carefully
|
||||
3. Make sure the code is correct and complete
|
||||
4. Commit all changes with a descriptive commit message
|
||||
1. Read and understand the codebase
|
||||
2. Implement the requested changes
|
||||
3. Commit your changes with a descriptive message
|
||||
4. Push branch ${BRANCH} to origin
|
||||
5. Create a pull request targeting main that references issue #${ISSUE_NUMBER}
|
||||
6. Comment on issue #${ISSUE_NUMBER} with a link to the PR
|
||||
|
||||
You are on branch ${BRANCH}. Work in the current directory." \
|
||||
Git is configured. You are on branch ${BRANCH}. Work in the current directory.
|
||||
Use git commands to push, and curl to the Gitea API for PR creation.
|
||||
Gitea API token is available as env var GIT_TOKEN." \
|
||||
--allowedTools "Bash,Read,Edit,Write,Glob,Grep" \
|
||||
--mcp-config /home/claude-runner/.claude/mcp-gitea.json \
|
||||
--max-turns 50 \
|
||||
--permission-mode bypassPermissions \
|
||||
--output-format text 2>&1) || true
|
||||
|
||||
echo "=== CLAUDE OUTPUT START ==="
|
||||
echo "${CLAUDE_OUTPUT}"
|
||||
echo "=== CLAUDE OUTPUT END ==="
|
||||
|
||||
# Also save to a persistent location for debugging
|
||||
echo "${CLAUDE_OUTPUT}" > /home/claude-runner/last-claude-output.txt
|
||||
|
||||
# Stage any remaining unstaged changes
|
||||
git add -A
|
||||
|
||||
echo "=== GIT STATUS ==="
|
||||
git status
|
||||
echo "=== GIT DIFF ==="
|
||||
git diff --cached --stat
|
||||
|
||||
# Check if there are changes
|
||||
if ! git diff --cached --quiet 2>/dev/null; then
|
||||
git commit -m "Claude: Address issue #${ISSUE_NUMBER} - ${ISSUE_TITLE}"
|
||||
git push origin "${BRANCH}"
|
||||
|
||||
# Create PR
|
||||
PR_RESPONSE=$(curl -s -X POST "http://localhost:3000/api/v1/repos/${REPO}/pulls" \
|
||||
-H "Authorization: token ${GIT_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{
|
||||
\"title\": \"Claude: Fix #${ISSUE_NUMBER} - ${ISSUE_TITLE}\",
|
||||
\"body\": \"Automated PR by Claude Code for issue #${ISSUE_NUMBER}\n\nCloses #${ISSUE_NUMBER}\",
|
||||
\"head\": \"${BRANCH}\",
|
||||
\"base\": \"main\"
|
||||
}")
|
||||
|
||||
PR_URL=$(echo "${PR_RESPONSE}" | python3 -c "import sys,json; print(json.load(sys.stdin).get('html_url',''))" 2>/dev/null || echo "unknown")
|
||||
|
||||
curl -s -X POST "http://localhost:3000/api/v1/repos/${REPO}/issues/${ISSUE_NUMBER}/comments" \
|
||||
-H "Authorization: token ${GIT_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"body\": \"Claude has created a pull request: ${PR_URL}\"}"
|
||||
else
|
||||
echo "No changes detected by Claude"
|
||||
curl -s -X POST "http://localhost:3000/api/v1/repos/${REPO}/issues/${ISSUE_NUMBER}/comments" \
|
||||
-H "Authorization: token ${GIT_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"body\": \"Claude reviewed the issue but made no code changes.\"}"
|
||||
fi
|
||||
--output-format text 2>&1 | tee /home/claude-runner/last-claude-output.txt
|
||||
|
||||
Reference in New Issue
Block a user