-
Notifications
You must be signed in to change notification settings - Fork 27
554 lines (506 loc) · 21.1 KB
/
auto-amazonq-review.yml
File metadata and controls
554 lines (506 loc) · 21.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
name: "AmazonQ Review after GitHub Copilot"
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
on:
uto-amazonq-review.properties.json
# Triggered when GitHub Copilot workflows complete
uto-amazonq-review.properties.json
workflow_run:
uto-amazonq-review.properties.json
workflows:
uto-amazonq-review.properties.json
- "Periodic Code Cleanliness Review"
uto-amazonq-review.properties.json
- "Comprehensive Test Review with Playwright"
uto-amazonq-review.properties.json
- "Code Functionality and Documentation Review"
uto-amazonq-review.properties.json
- "Org-wide: Copilot Playwright Test, Review, Auto-fix, PR, Merge"
uto-amazonq-review.properties.json
- "Complete CI/CD Agent Review Pipeline"
uto-amazonq-review.properties.json
types:
uto-amazonq-review.properties.json
- completed
uto-amazonq-review.properties.json
workflow_dispatch:
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
permissions:
uto-amazonq-review.properties.json
contents: write
uto-amazonq-review.properties.json
pull-requests: write
uto-amazonq-review.properties.json
issues: write
uto-amazonq-review.properties.json
actions: read
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
jobs:
uto-amazonq-review.properties.json
wait-for-copilot-agents:
uto-amazonq-review.properties.json
runs-on: self-hosted
uto-amazonq-review.properties.json
if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }}
uto-amazonq-review.properties.json
steps:
uto-amazonq-review.properties.json
- name: Checkout code
uto-amazonq-review.properties.json
uses: actions/checkout@main
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
- name: Wait for any pending Copilot PRs
uto-amazonq-review.properties.json
uses: actions/github-script@main
uto-amazonq-review.properties.json
with:
uto-amazonq-review.properties.json
github-token: ${{ secrets.GITHUB_TOKEN }}
uto-amazonq-review.properties.json
script: |
uto-amazonq-review.properties.json
// Wait a bit for Copilot agents to potentially create PRs
uto-amazonq-review.properties.json
console.log('Waiting for Copilot agents to complete...');
uto-amazonq-review.properties.json
await new Promise(resolve => setTimeout(resolve, 30000)); // 30 second delay
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
// Check for recent Copilot PRs
uto-amazonq-review.properties.json
const prs = await github.rest.pulls.list({
uto-amazonq-review.properties.json
owner: context.repo.owner,
uto-amazonq-review.properties.json
repo: context.repo.repo,
uto-amazonq-review.properties.json
state: 'open',
uto-amazonq-review.properties.json
sort: 'created',
uto-amazonq-review.properties.json
direction: 'desc',
uto-amazonq-review.properties.json
per_page: 10
uto-amazonq-review.properties.json
});
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
const copilotPRs = prs.data.filter(pr =>
uto-amazonq-review.properties.json
pr.title.includes('Copilot') ||
uto-amazonq-review.properties.json
pr.head.ref.includes('copilot') ||
uto-amazonq-review.properties.json
pr.user.login === 'github-actions[bot]'
uto-amazonq-review.properties.json
);
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
if (copilotPRs.length > 0) {
uto-amazonq-review.properties.json
console.log(`Found ${copilotPRs.length} recent Copilot PRs`);
uto-amazonq-review.properties.json
copilotPRs.forEach(pr => {
uto-amazonq-review.properties.json
console.log(` - PR #${pr.number}: ${pr.title}`);
uto-amazonq-review.properties.json
});
uto-amazonq-review.properties.json
} else {
uto-amazonq-review.properties.json
console.log('No recent Copilot PRs found');
uto-amazonq-review.properties.json
}
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
amazonq-code-review:
uto-amazonq-review.properties.json
runs-on: self-hosted
uto-amazonq-review.properties.json
needs: wait-for-copilot-agents
uto-amazonq-review.properties.json
steps:
uto-amazonq-review.properties.json
- name: Checkout code
uto-amazonq-review.properties.json
uses: actions/checkout@main
uto-amazonq-review.properties.json
with:
uto-amazonq-review.properties.json
fetch-depth: 0
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
- name: Setup AWS credentials for Amazon Q
uto-amazonq-review.properties.json
uses: aws-actions/configure-aws-credentials@main
uto-amazonq-review.properties.json
with:
uto-amazonq-review.properties.json
aws-region: us-east-1
uto-amazonq-review.properties.json
# Note: AWS credentials should be configured in repository secrets
uto-amazonq-review.properties.json
# AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
uto-amazonq-review.properties.json
continue-on-error: true
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
- name: Prepare code for Amazon Q review
uto-amazonq-review.properties.json
id: prepare
uto-amazonq-review.properties.json
run: |
uto-amazonq-review.properties.json
echo "## Amazon Q Code Review Preparation" > /tmp/amazonq-prep.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-prep.md
uto-amazonq-review.properties.json
echo "Repository: ${{ github.repository }}" >> /tmp/amazonq-prep.md
uto-amazonq-review.properties.json
echo "Branch: ${{ github.ref_name }}" >> /tmp/amazonq-prep.md
uto-amazonq-review.properties.json
echo "Triggered by: ${{ github.event.workflow_run.name || 'Manual trigger' }}" >> /tmp/amazonq-prep.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-prep.md
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
# Get list of recent changes
uto-amazonq-review.properties.json
echo "### Recent Changes:" >> /tmp/amazonq-prep.md
uto-amazonq-review.properties.json
git log --oneline -10 >> /tmp/amazonq-prep.md || echo "No recent commits" >> /tmp/amazonq-prep.md
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-prep.md
uto-amazonq-review.properties.json
echo "### Files Changed Recently:" >> /tmp/amazonq-prep.md
uto-amazonq-review.properties.json
git diff --name-only HEAD~5..HEAD 2>/dev/null >> /tmp/amazonq-prep.md || echo "No changes in last 5 commits" >> /tmp/amazonq-prep.md
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
cat /tmp/amazonq-prep.md
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
- name: Run Amazon Q Code Review
uto-amazonq-review.properties.json
id: amazonq
uto-amazonq-review.properties.json
run: |
uto-amazonq-review.properties.json
echo "Running Amazon Q code review..."
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
# Create review report
uto-amazonq-review.properties.json
echo "## Amazon Q Code Review Report" > /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "**Review Date:** $(date -u +"%Y-%m-%d %H:%M:%S UTC")" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
# Note: This is a placeholder for actual Amazon Q integration
uto-amazonq-review.properties.json
# Amazon Q CLI or SDK integration would go here
uto-amazonq-review.properties.json
# For now, we'll create a comprehensive analysis structure
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
echo "### Code Quality Assessment" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "Following the GitHub Copilot agent reviews, Amazon Q provides additional insights:" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
# Analyze code structure
uto-amazonq-review.properties.json
echo "#### Code Structure Analysis" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
find . -type f \( -name "*.py" -o -name "*.js" -o -name "*.ts" -o -name "*.java" -o -name "*.go" \) \
uto-amazonq-review.properties.json
! -path "*/node_modules/*" \
uto-amazonq-review.properties.json
! -path "*/.venv/*" \
uto-amazonq-review.properties.json
! -path "*/dist/*" \
uto-amazonq-review.properties.json
! -path "*/build/*" \
uto-amazonq-review.properties.json
| wc -l > /tmp/file_count.txt
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
FILE_COUNT=$(cat /tmp/file_count.txt)
uto-amazonq-review.properties.json
echo "- Total source files analyzed: $FILE_COUNT" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
echo "#### Security Considerations" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- Credential scanning: Check for hardcoded secrets" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- Dependency vulnerabilities: Review package versions" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- Code injection risks: Validate input handling" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
echo "#### Performance Optimization Opportunities" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- Algorithm efficiency: Review computational complexity" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- Resource management: Check for memory leaks and resource cleanup" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- Caching opportunities: Identify repeated computations" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
echo "#### Architecture and Design Patterns" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- Design patterns usage: Verify appropriate pattern application" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- Separation of concerns: Check module boundaries" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- Dependency management: Review coupling and cohesion" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
echo "### Integration with Previous Reviews" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "This review complements the GitHub Copilot agent findings with:" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- Additional security analysis" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- AWS best practices recommendations" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- Performance optimization suggestions" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "- Enterprise architecture patterns" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
echo "### Next Steps" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "1. Review findings from both GitHub Copilot and Amazon Q" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "2. Prioritize issues based on severity and impact" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "3. Create action items for high-priority findings" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "4. Schedule follow-up reviews for resolved items" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
echo "" >> /tmp/amazonq-report.md
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
# Note: Actual Amazon Q integration would use AWS SDK or CLI
uto-amazonq-review.properties.json
# Example (when Amazon Q API is available):
uto-amazonq-review.properties.json
# aws codewhisperer review --repository-path . --output json > /tmp/amazonq-results.json
uto-amazonq-review.properties.json
# Or use Amazon Q Developer CLI when available
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
cat /tmp/amazonq-report.md
uto-amazonq-review.properties.json
continue-on-error: true
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
- name: Create Amazon Q Review Issue
uto-amazonq-review.properties.json
uses: actions/github-script@main
uto-amazonq-review.properties.json
with:
uto-amazonq-review.properties.json
github-token: ${{ secrets.GITHUB_TOKEN }}
uto-amazonq-review.properties.json
script: |
uto-amazonq-review.properties.json
const fs = require('fs');
uto-amazonq-review.properties.json
const report = fs.readFileSync('/tmp/amazonq-report.md', 'utf8');
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
const date = new Date().toISOString().split('T')[0];
uto-amazonq-review.properties.json
const title = `Amazon Q Code Review - ${date}`;
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
const body = `# Amazon Q Code Review Report
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
This review was triggered after GitHub Copilot agent workflows completed.
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
${report}
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
## Review Context
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
- **Triggered by:** ${{ github.event.workflow_run.name || 'Manual workflow dispatch' }}
uto-amazonq-review.properties.json
- **Repository:** ${{ github.repository }}
uto-amazonq-review.properties.json
- **Branch:** ${{ github.ref_name }}
uto-amazonq-review.properties.json
- **Commit:** ${{ github.sha }}
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
## Related Reviews
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
Check for related issues with these labels:
uto-amazonq-review.properties.json
- \`code-cleanliness\` - Code structure and organization
uto-amazonq-review.properties.json
- \`test-coverage\` - Test quality and Playwright usage
uto-amazonq-review.properties.json
- \`documentation\` - Documentation completeness
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
## Instructions for Amazon Q Integration
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
To enable full Amazon Q integration:
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
1. **Set up AWS credentials** in repository secrets:
uto-amazonq-review.properties.json
- \`AWS_ACCESS_KEY_ID\`
uto-amazonq-review.properties.json
- \`AWS_SECRET_ACCESS_KEY\`
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
2. **Install Amazon Q Developer CLI** (when available):
uto-amazonq-review.properties.json
- Follow AWS documentation for Amazon Q setup
uto-amazonq-review.properties.json
- Configure repository access
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
3. **Enable Amazon CodeWhisperer** for security scanning
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
4. **Configure custom review rules** based on your needs
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
## Action Items
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
- [ ] Review Amazon Q findings
uto-amazonq-review.properties.json
- [ ] Compare with GitHub Copilot recommendations
uto-amazonq-review.properties.json
- [ ] Prioritize and assign issues
uto-amazonq-review.properties.json
- [ ] Implement high-priority fixes
uto-amazonq-review.properties.json
- [ ] Update documentation as needed
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
---
uto-amazonq-review.properties.json
*This issue was automatically generated by the Amazon Q Review workflow.*
uto-amazonq-review.properties.json
`;
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
// Check for existing Amazon Q review issues
uto-amazonq-review.properties.json
const issues = await github.rest.issues.listForRepo({
uto-amazonq-review.properties.json
owner: context.repo.owner,
uto-amazonq-review.properties.json
repo: context.repo.repo,
uto-amazonq-review.properties.json
state: 'open',
uto-amazonq-review.properties.json
labels: ['amazon-q', 'automated'],
uto-amazonq-review.properties.json
per_page: 10
uto-amazonq-review.properties.json
});
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
const recentIssue = issues.data.find(issue => {
uto-amazonq-review.properties.json
const createdAt = new Date(issue.created_at);
uto-amazonq-review.properties.json
const daysSinceCreation = (Date.now() - createdAt) / (1000 * 60 * 60 * 24);
uto-amazonq-review.properties.json
return daysSinceCreation < 7;
uto-amazonq-review.properties.json
});
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
if (recentIssue) {
uto-amazonq-review.properties.json
console.log(`Recent issue found: #${recentIssue.number}, updating`);
uto-amazonq-review.properties.json
await github.rest.issues.createComment({
uto-amazonq-review.properties.json
owner: context.repo.owner,
uto-amazonq-review.properties.json
repo: context.repo.repo,
uto-amazonq-review.properties.json
issue_number: recentIssue.number,
uto-amazonq-review.properties.json
body: `## Updated Review (${date})\n\n${report}`
uto-amazonq-review.properties.json
});
uto-amazonq-review.properties.json
} else {
uto-amazonq-review.properties.json
await github.rest.issues.create({
uto-amazonq-review.properties.json
owner: context.repo.owner,
uto-amazonq-review.properties.json
repo: context.repo.repo,
uto-amazonq-review.properties.json
title: title,
uto-amazonq-review.properties.json
body: body,
uto-amazonq-review.properties.json
labels: ['amazon-q', 'automated', 'code-review', 'needs-review']
uto-amazonq-review.properties.json
});
uto-amazonq-review.properties.json
}
uto-amazonq-review.properties.json
uto-amazonq-review.properties.json
- name: Upload Amazon Q Report
uto-amazonq-review.properties.json
uses: actions/upload-artifact@main
uto-amazonq-review.properties.json
with:
uto-amazonq-review.properties.json
name: amazonq-review-report
uto-amazonq-review.properties.json
path: |
uto-amazonq-review.properties.json
/tmp/amazonq-report.md
uto-amazonq-review.properties.json
/tmp/amazonq-prep.md
uto-amazonq-review.properties.json
retention-days: 90
uto-amazonq-review.properties.json
continue-on-error: true
uto-amazonq-review.properties.json