name: CodeAnt AI Review - Stage 1 on: pull_request: branches: ["main"] push: branches: ["main"] workflow_dispatch: jobs: codeant-review: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 with: fetch-depth: 0 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: "22" - name: Install CodeAnt CLI run: npm install -g codeant-cli - name: Configure CodeAnt Auth env: CODEANT_API_TOKEN: ${{ secrets.CODEANT_API_TOKEN }} run: | if [ -z "${CODEANT_API_TOKEN}" ]; then echo "ERROR: CODEANT_API_TOKEN secret is not set in repository settings." echo "Go to: Settings → Secrets → Add Secret → Name: CODEANT_API_TOKEN" exit 1 fi mkdir -p $HOME/.codeant printf '{"apiKey":"%s","baseUrl":"https://service.codeant.ai"}\n' "$CODEANT_API_TOKEN" > $HOME/.codeant/config.json echo "Config written (key length: ${#CODEANT_API_TOKEN})" - name: Verify CodeAnt connectivity run: | echo "Base URL: $(codeant get-base-url)" echo "CLI version: $(codeant --version)" echo "=== API connectivity test ===" HTTP_CODE=$(curl -s -o /tmp/api_response.txt -w "%{http_code}" \ -H "Authorization: Bearer ${CODEANT_API_KEY:-}" \ -H "Content-Type: application/json" \ https://service.codeant.ai/health 2>/dev/null || echo "CURL_FAILED") echo "HTTP status: $HTTP_CODE" head -c 200 /tmp/api_response.txt || true env: CODEANT_API_KEY: ${{ secrets.CODEANT_API_TOKEN }} - name: Debug Commit Info run: | echo "==== EVENT CONTEXT ====" echo "event_name=${GITHUB_EVENT_NAME}" echo "base_ref=${GITHUB_BASE_REF}" echo "ref_name=${GITHUB_REF_NAME}" echo "==== LAST 3 COMMITS ====" git log --oneline -n 3 echo "==== FILES IN LAST COMMIT ====" git show --name-only --pretty="" HEAD echo "==== IS MERGE COMMIT ====" PARENTS=$(git log -1 --format="%P" HEAD | wc -w) echo "Parent count: $PARENTS" if [ "$PARENTS" -gt 1 ]; then echo "HEAD is a merge commit" git log --oneline HEAD~1..HEAD --first-parent || true fi - name: Run CodeAnt Review run: | if [ "${GITHUB_EVENT_NAME}" = "pull_request" ] && [ -n "${GITHUB_BASE_REF}" ]; then echo "Running PR review against base branch: ${GITHUB_BASE_REF}" codeant review --base "${GITHUB_BASE_REF}" 2>&1 | tee review.txt || true else # For push to main: check if HEAD is a merge commit PARENTS=$(git log -1 --format="%P" HEAD | wc -w) if [ "$PARENTS" -gt 1 ]; then # Merge commit: review everything brought in by the merge (HEAD vs first parent) echo "Merge commit detected - reviewing changes vs HEAD~1" codeant review --base-commit HEAD~1 2>&1 | tee review.txt || true else echo "Regular push - reviewing last commit" codeant review --last-commit 2>&1 | tee review.txt || true fi fi