name: Davidson CI on: push: permissions: contents: read jobs: quality: runs-on: davidson-ci steps: - name: Checkout project uses: actions/checkout@v4 - name: Checkout Davidson CI uses: actions/checkout@v4 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@v4 - name: Checkout Davidson CI uses: actions/checkout@v4 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: | opencode run \ --agent davidson-review \ "Perform a complete Davidson CI review of this repository. Do not modify anything."