Skip to content

Commit 7a12aa7

Browse files
authored
Workflows
1 parent d372733 commit 7a12aa7

File tree

2 files changed

+123
-49
lines changed

2 files changed

+123
-49
lines changed

.github/workflows/gemini-code-assistant.yml

Lines changed: 55 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -49,52 +49,75 @@ jobs:
4949
echo "🔍 Debug info: BASE_SHA=$BASE_SHA, HEAD_SHA=$HEAD_SHA"
5050
5151
if [ "$EVENT_NAME" = "pull_request" ]; then
52-
# For PRs, get the diff between base and head
52+
# For PRs, use git diff as primary method
5353
PR_BASE_SHA="${{ github.event.pull_request.base.sha }}"
5454
PR_HEAD_SHA="${{ github.event.pull_request.head.sha }}"
5555
echo "🔍 PR Debug: BASE=$PR_BASE_SHA, HEAD=$PR_HEAD_SHA"
5656
57-
curl -s -H "Authorization: token $GITHUB_TOKEN" \
58-
-H "Accept: application/vnd.github.v3.diff" \
59-
"https://api.github.com/repos/$REPO_FULL_NAME/compare/$PR_BASE_SHA..$PR_HEAD_SHA" \
60-
> code_changes.diff
61-
62-
if [ $? -ne 0 ] || [ ! -s code_changes.diff ]; then
63-
echo "⚠️ API diff failed, using git diff..."
64-
git diff $PR_BASE_SHA..$PR_HEAD_SHA > code_changes.diff
57+
# Use git diff as PRIMARY method (more reliable)
58+
echo "🔧 Using git diff (primary method)..."
59+
if git diff "$PR_BASE_SHA".."$PR_HEAD_SHA" > code_changes.diff 2>git_error.log; then
60+
echo "✅ Git diff successful - collected $(wc -l < code_changes.diff) lines"
61+
else
62+
echo "❌ Git diff failed, trying GitHub API as fallback..."
63+
cat git_error.log 2>/dev/null || echo "No git error details"
64+
65+
# GitHub API as fallback
66+
curl -s -H "Authorization: token $GITHUB_TOKEN" \
67+
-H "Accept: application/vnd.github.v3.diff" \
68+
"https://api.github.com/repos/$REPO_FULL_NAME/compare/$PR_BASE_SHA..$PR_HEAD_SHA" \
69+
> code_changes.diff
70+
71+
if [ -s code_changes.diff ]; then
72+
echo "✅ GitHub API fallback successful"
73+
else
74+
echo "❌ Both methods failed for PR"
75+
fi
6576
fi
6677
6778
elif [ "$EVENT_NAME" = "push" ]; then
6879
# For pushes, get the diff from the previous commit
6980
if [ -n "$BASE_SHA" ] && [ "$BASE_SHA" != "0000000000000000000000000000000000000000" ]; then
7081
echo "🔍 Push Debug: Comparing $BASE_SHA to $HEAD_SHA"
7182
72-
# Try API first with better error checking
73-
echo "🌐 Attempting GitHub API diff..."
74-
HTTP_CODE=$(curl -s -w "%{http_code}" \
75-
-H "Authorization: token $GITHUB_TOKEN" \
76-
-H "Accept: application/vnd.github.v3.diff" \
77-
"https://api.github.com/repos/$REPO_FULL_NAME/compare/$BASE_SHA..$HEAD_SHA" \
78-
-o code_changes.diff)
79-
80-
echo "🔍 API returned HTTP $HTTP_CODE"
81-
82-
# Check if API call was successful (200 status and file has content)
83-
if [ "$HTTP_CODE" != "200" ] || [ ! -s code_changes.diff ]; then
84-
echo "⚠️ API diff failed (HTTP $HTTP_CODE), using git diff..."
83+
# Use git diff as PRIMARY method (more reliable)
84+
echo "🔧 Using git diff (primary method)..."
85+
if git diff "$BASE_SHA".."$HEAD_SHA" > code_changes.diff 2>git_error.log; then
86+
echo "✅ Git diff successful - collected $(wc -l < code_changes.diff) lines"
87+
else
88+
echo "❌ Git diff failed, trying GitHub API as fallback..."
89+
cat git_error.log 2>/dev/null || echo "No git error details"
8590
86-
# Use git diff as fallback
87-
git diff $BASE_SHA..$HEAD_SHA > code_changes.diff
91+
# GitHub API as fallback only
92+
echo "🌐 Attempting GitHub API diff as fallback..."
93+
echo "🔍 URL: https://api.github.com/repos/$REPO_FULL_NAME/compare/$BASE_SHA..$HEAD_SHA"
8894
89-
# If git diff also fails or is empty, use git show
90-
if [ ! -s code_changes.diff ]; then
91-
echo "⚠️ No diff available, showing recent commit changes..."
92-
git show --stat $HEAD_SHA > code_changes.diff
93-
echo "" >> code_changes.diff
94-
git show $HEAD_SHA >> code_changes.diff
95+
HTTP_CODE=$(curl -s -w "%{http_code}" \
96+
-H "Authorization: token $GITHUB_TOKEN" \
97+
-H "Accept: application/vnd.github.v3.diff" \
98+
"https://api.github.com/repos/$REPO_FULL_NAME/compare/$BASE_SHA..$HEAD_SHA" \
99+
-o code_changes.diff 2>api_error.log)
100+
101+
if [ "$HTTP_CODE" = "200" ] && [ -s code_changes.diff ]; then
102+
echo "✅ GitHub API fallback successful"
103+
else
104+
echo "❌ GitHub API also failed (HTTP $HTTP_CODE)"
105+
fi
106+
fi
107+
108+
# Final fallback: git show if no diff available
109+
if [ ! -s code_changes.diff ]; then
110+
echo "⚠️ No diff available, showing recent commit changes..."
111+
echo "🔧 Running: git show --stat $HEAD_SHA"
112+
git show --stat "$HEAD_SHA" > code_changes.diff 2>>git_error.log
113+
echo "" >> code_changes.diff
114+
git show "$HEAD_SHA" >> code_changes.diff 2>>git_error.log
115+
116+
if [ -s code_changes.diff ]; then
117+
echo "✅ Git show successful as final fallback"
118+
else
119+
echo "❌ All methods failed - no code changes available"
95120
fi
96-
else
97-
echo "✅ GitHub API diff successful"
98121
fi
99122
else
100123
echo "📄 Initial commit or no previous commit - showing current files..."

.github/workflows/gemini-issue-assistant.yml

Lines changed: 68 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -116,30 +116,74 @@ jobs:
116116
117117
- name: Scan Codebase for Context
118118
id: scan-code
119+
env:
120+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
121+
REPO_FULL_NAME: ${{ github.repository }}
119122
run: |
120123
echo "📋 Scanning codebase for relevant context..."
121124
122-
# Get recent commits for context
123-
echo "📜 Recent commits:" > codebase_context.txt
124-
git log --oneline -5 >> codebase_context.txt
125-
echo "" >> codebase_context.txt
125+
# Get recent commits for context with git as primary method
126+
echo "📜 Collecting recent commits..."
127+
if git log --oneline -5 > recent_commits.txt 2>git_error.log; then
128+
echo "✅ Recent commits collected via git"
129+
else
130+
echo "⚠️ Failed to get recent commits via git:"
131+
cat git_error.log 2>/dev/null || echo "No git error details"
132+
echo "No recent commits available" > recent_commits.txt
133+
fi
134+
135+
# Get main plugin files for context using reliable file system operations
136+
echo "📁 Collecting plugin file structure..."
137+
echo "🔍 Main plugin files:" > codebase_context.txt
126138
127-
# Get main plugin files for context
128-
echo "📁 Main plugin files:" >> codebase_context.txt
129-
find . -name "*.php" -path "./.*" -prune -o -name "*.php" -print | head -10 | while read file; do
130-
if [ -f "$file" ]; then
131-
echo "=== $file ===" >> codebase_context.txt
132-
head -30 "$file" >> codebase_context.txt
133-
echo "" >> codebase_context.txt
139+
# Use git ls-files as primary method (more reliable than find)
140+
echo "🔧 Using git ls-files (primary method)..."
141+
if git ls-files "*.php" | head -10 > found_files.txt 2>git_error.log; then
142+
echo "✅ Git ls-files successful"
143+
while read file; do
144+
if [ -f "$file" ] && [ -n "$file" ]; then
145+
echo "=== $file ===" >> codebase_context.txt
146+
echo "🔍 Processing: $file"
147+
if head -30 "$file" >> codebase_context.txt 2>/dev/null; then
148+
echo "✅ Added content from $file"
149+
else
150+
echo "⚠️ Failed to read $file"
151+
fi
152+
echo "" >> codebase_context.txt
153+
fi
154+
done < found_files.txt
155+
else
156+
echo "⚠️ Git ls-files failed, using find as fallback..."
157+
cat git_error.log 2>/dev/null || echo "No git error details"
158+
159+
# Find as fallback method
160+
if find . -name "*.php" -path "./.*" -prune -o -name "*.php" -print 2>/dev/null | head -10 > found_files.txt; then
161+
echo "✅ Find fallback successful"
162+
while read file; do
163+
if [ -f "$file" ] && [ -n "$file" ]; then
164+
echo "=== $file ===" >> codebase_context.txt
165+
head -30 "$file" >> codebase_context.txt 2>/dev/null
166+
echo "" >> codebase_context.txt
167+
fi
168+
done < found_files.txt
169+
else
170+
echo "❌ Both git and find methods failed"
171+
echo "No PHP files found" >> codebase_context.txt
134172
fi
135-
done
173+
fi
174+
175+
# Add recent commits to context
176+
echo "" >> codebase_context.txt
177+
echo "📜 Recent Git History:" >> codebase_context.txt
178+
cat recent_commits.txt >> codebase_context.txt
136179
137-
# Check if we collected context
138-
if [ -s codebase_context.txt ]; then
180+
# Check if we collected context with better validation
181+
if [ -s codebase_context.txt ] && [ $(wc -l < codebase_context.txt) -gt 5 ]; then
139182
echo "✅ Codebase context collected: $(wc -l < codebase_context.txt) lines"
140183
echo "context-available=true" >> $GITHUB_OUTPUT
141184
else
142-
echo "⚠️ No codebase context found"
185+
echo "❌ Insufficient codebase context collected"
186+
echo "🔍 Context file size: $(wc -l < codebase_context.txt 2>/dev/null || echo '0') lines"
143187
echo "context-available=false" >> $GITHUB_OUTPUT
144188
fi
145189
@@ -224,6 +268,7 @@ jobs:
224268
225269
echo "🤖 Starting AI issue analysis with official Google SDK..."
226270
echo "📝 Prompt file size: $(wc -c < analysis_prompt.txt) bytes"
271+
echo "🔑 API key status: $([ -n "$GEMINI_API_KEY" ] && echo "✅ Set" || echo "❌ Missing")"
227272
228273
if node gemini-analyze.js; then
229274
echo "analysis-success=true" >> $GITHUB_OUTPUT
@@ -233,18 +278,24 @@ jobs:
233278
echo "❌ AI analysis failed - check logs for details"
234279
fi
235280
236-
# Format the response
281+
# Format the response with enhanced error handling
237282
echo "## 🤖 Gemini Issue Analysis" > formatted_response.txt
238283
echo "" >> formatted_response.txt
284+
239285
if [ -s gemini_response.txt ]; then
286+
echo "📄 Adding analysis results ($(wc -c < gemini_response.txt) characters)"
240287
cat gemini_response.txt >> formatted_response.txt
241288
else
242-
echo "Analysis completed but no specific recommendations at this time." >> formatted_response.txt
289+
echo "⚠️ No analysis results found - adding fallback message"
290+
echo "Analysis completed but encountered issues. Please review the issue manually and check the repository for related functionality." >> formatted_response.txt
243291
fi
244292
245293
echo "" >> formatted_response.txt
246294
echo "---" >> formatted_response.txt
247295
echo "*Analysis performed by Gemini AI on $(date)*" >> formatted_response.txt
296+
297+
# Debug: Show final response size
298+
echo "📊 Final response size: $(wc -c < formatted_response.txt) characters"
248299
249300
- name: Comment on Issue
250301
uses: actions/github-script@v8

0 commit comments

Comments
 (0)