135 lines
3.8 KiB
YAML
135 lines
3.8 KiB
YAML
name: Davidson CI
|
|
|
|
on:
|
|
push:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
quality:
|
|
runs-on: davidson-ci
|
|
|
|
steps:
|
|
- name: Checkout project
|
|
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
|
|
|
|
- name: Checkout Davidson CI
|
|
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
|
|
with:
|
|
repository: pauljd/davidson-ci
|
|
path: .davidson-ci
|
|
|
|
- name: Detect project
|
|
id: detect
|
|
run: .davidson-ci/modules/detect.sh
|
|
|
|
- name: PHP
|
|
id: php
|
|
if: always()
|
|
run: .davidson-ci/modules/php.sh
|
|
|
|
- name: JavaScript / TypeScript
|
|
id: javascript
|
|
if: always()
|
|
run: .davidson-ci/modules/javascript.sh
|
|
|
|
- name: CSS
|
|
id: css
|
|
if: always()
|
|
run: .davidson-ci/modules/css.sh
|
|
|
|
- name: Security
|
|
id: security
|
|
if: always()
|
|
run: .davidson-ci/modules/security.sh
|
|
|
|
- name: Davidson CI Report
|
|
if: always()
|
|
run: .davidson-ci/scripts/report.sh
|
|
|
|
- name: Final CI status
|
|
if: always()
|
|
run: |
|
|
FAILED=0
|
|
|
|
[ "${DAVIDSON_PHP_STATUS:-UNKNOWN}" = "FAIL" ] && FAILED=1
|
|
[ "${DAVIDSON_JS_STATUS:-UNKNOWN}" = "FAIL" ] && FAILED=1
|
|
[ "${DAVIDSON_CSS_STATUS:-UNKNOWN}" = "FAIL" ] && FAILED=1
|
|
[ "${DAVIDSON_SECURITY_STATUS:-UNKNOWN}" = "FAIL" ] && FAILED=1
|
|
|
|
if [ "$FAILED" -eq 1 ]; then
|
|
echo "Davidson CI failed"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Davidson CI passed"
|
|
|
|
ai-review:
|
|
needs: quality
|
|
if: always()
|
|
runs-on: davidson-ai
|
|
|
|
steps:
|
|
- name: Checkout project
|
|
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
|
|
|
|
- name: Checkout Davidson CI
|
|
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
|
|
with:
|
|
repository: pauljd/davidson-ci
|
|
path: .davidson-ci
|
|
|
|
- name: Prepare OpenCode config
|
|
run: |
|
|
mkdir -p .opencode
|
|
cp -r .davidson-ci/.opencode/* .opencode/
|
|
|
|
- name: Davidson AI Review
|
|
env:
|
|
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
run: |
|
|
set +e
|
|
|
|
opencode run \
|
|
--agent davidson-review \
|
|
"Perform a complete Davidson CI review of this repository. Do not modify anything." \
|
|
> /tmp/davidson-ai-review.txt 2>&1
|
|
|
|
AI_EXIT=$?
|
|
|
|
echo "## 🤖 AI Review" >> "$GITEA_STEP_SUMMARY"
|
|
echo >> "$GITEA_STEP_SUMMARY"
|
|
|
|
if [ "$AI_EXIT" -ne 0 ]; then
|
|
echo "❌ **AI reviewer failed to execute**" >> "$GITEA_STEP_SUMMARY"
|
|
echo >> "$GITEA_STEP_SUMMARY"
|
|
echo "Open the \`ai-review\` job log for details." >> "$GITEA_STEP_SUMMARY"
|
|
|
|
cat /tmp/davidson-ai-review.txt
|
|
exit "$AI_EXIT"
|
|
fi
|
|
|
|
if grep -q "AI REVIEW PASSED - No significant issues found." \
|
|
/tmp/davidson-ai-review.txt
|
|
then
|
|
echo "✅ **PASS**" >> "$GITEA_STEP_SUMMARY"
|
|
echo >> "$GITEA_STEP_SUMMARY"
|
|
echo "No significant issues were identified by the AI reviewer." \
|
|
>> "$GITEA_STEP_SUMMARY"
|
|
else
|
|
echo "⚠️ **Review findings detected**" >> "$GITEA_STEP_SUMMARY"
|
|
echo >> "$GITEA_STEP_SUMMARY"
|
|
echo "| Severity | Location | Issue | Recommendation |" \
|
|
>> "$GITEA_STEP_SUMMARY"
|
|
echo "|---|---|---|---|" >> "$GITEA_STEP_SUMMARY"
|
|
|
|
grep -E '^(CRITICAL|HIGH|MEDIUM|LOW|INFO)[[:space:]]*\|' \
|
|
/tmp/davidson-ai-review.txt \
|
|
>> "$GITEA_STEP_SUMMARY" || true
|
|
fi
|
|
|
|
echo
|
|
echo "=== Davidson AI Review ==="
|
|
cat /tmp/davidson-ai-review.txt
|