name: CI on: push: branches: [main] pull_request: types: [opened, synchronize] jobs: test: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.26' - run: go test ./... - run: go vet ./... - run: go build -o review-bot ./cmd/review-bot # Self-review using native SAP AI Core provider # Models must match SAP AI Core deployments # Available models: gpt-5, anthropic--claude-4.6-sonnet, anthropic--claude-4.6-opus # Removed gpt-4.1, gpt-5-mini, gpt-4.1-mini - not deployed on AI Core review: runs-on: ubuntu-24.04 if: github.event_name == 'pull_request' needs: test strategy: matrix: include: - name: sonnet token_secret: SONNET_REVIEW_TOKEN model: anthropic--claude-4.6-sonnet - name: gpt token_secret: GPT_REVIEW_TOKEN model: gpt-5 - name: security token_secret: SECURITY_REVIEW_TOKEN model: gpt-5 patterns_repo: rodin/security-patterns patterns_files: "." system_prompt_file: SECURITY_REVIEW.md steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.26' - run: go build -o review-bot ./cmd/review-bot - name: Run ${{ matrix.name }} review env: VCS_URL: ${{ github.server_url }} GITEA_REPO: ${{ github.repository }} PR_NUMBER: ${{ github.event.pull_request.number }} REVIEWER_TOKEN: ${{ secrets[matrix.token_secret] }} REVIEWER_NAME: ${{ matrix.name }} LLM_PROVIDER: aicore LLM_MODEL: ${{ matrix.model }} AICORE_CLIENT_ID: ${{ secrets.AICORE_CLIENT_ID }} AICORE_CLIENT_SECRET: ${{ secrets.AICORE_CLIENT_SECRET }} AICORE_AUTH_URL: ${{ secrets.AICORE_AUTH_URL }} AICORE_API_URL: ${{ secrets.AICORE_API_URL }} AICORE_RESOURCE_GROUP: ${{ secrets.AICORE_RESOURCE_GROUP }} CONVENTIONS_FILE: "CONVENTIONS.md" PATTERNS_REPO: ${{ matrix.patterns_repo || 'rodin/go-patterns' }} PATTERNS_FILES: ${{ matrix.patterns_files || 'README.md,patterns/' }} LLM_TIMEOUT: "600" SYSTEM_PROMPT_FILE: ${{ matrix.system_prompt_file }} run: ./review-bot