diff --git a/.github/workflows/warden.yml b/.github/workflows/warden.yml new file mode 100644 index 0000000..78f79a1 --- /dev/null +++ b/.github/workflows/warden.yml @@ -0,0 +1,24 @@ +name: Warden + +on: + pull_request: + types: [opened, synchronize, reopened] + +# contents: write required for resolving review threads via GraphQL +# See: https://github.com/orgs/community/discussions/44650 +permissions: + contents: write + pull-requests: write + checks: write + +jobs: + review: + runs-on: ubuntu-latest + env: + WARDEN_MODEL: ${{ secrets.WARDEN_MODEL }} + WARDEN_SENTRY_DSN: ${{ secrets.WARDEN_SENTRY_DSN }} + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + - uses: getsentry/warden@1f9eace79906805de13786578aac58853d00cdc5 # v0 + with: + anthropic-api-key: ${{ secrets.WARDEN_ANTHROPIC_API_KEY }} diff --git a/.gitignore b/.gitignore index 44bfbc3..b974660 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ config.toml .env.local .env.development.local .env.production.local +.warden/logs/ diff --git a/warden.toml b/warden.toml new file mode 100644 index 0000000..7f58e7a --- /dev/null +++ b/warden.toml @@ -0,0 +1,50 @@ +version = 1 + +[defaults] +failOn = "high" +reportOn = "medium" +ignorePaths = ["**/node_modules/**", "**/*.lock", "**/migrations/**"] + +[[skills]] +name = "security-review" +remote = "getsentry/skills" + +[[skills.triggers]] +type = "pull_request" +actions = ["opened", "synchronize", "reopened"] + +[[skills]] +name = "django-access-review" +remote = "getsentry/skills" +paths = ["src/**/*.py"] +ignorePaths = ["**/tests/**", "**/test_*.py", "**/*_test.py"] + +[[skills.triggers]] +type = "pull_request" +actions = ["opened", "synchronize", "reopened"] + +[[skills]] +name = "django-perf-review" +remote = "getsentry/skills" +paths = ["src/**/*.py"] +ignorePaths = ["**/tests/**", "**/test_*.py", "**/*_test.py"] + +[[skills.triggers]] +type = "pull_request" +actions = ["opened", "synchronize", "reopened"] + +[[skills]] +name = "code-review" +remote = "getsentry/skills" + +[[skills.triggers]] +type = "pull_request" +actions = ["opened", "synchronize", "reopened"] + +[[skills]] +name = "find-bugs" +remote = "getsentry/skills" + +[[skills.triggers]] +type = "pull_request" +actions = ["opened", "synchronize", "reopened"]