Skip to content

Commit 05bb892

Browse files
committed
feat: add Claude review and Jules CI failure workflows
- claude-review.yml: automatic PR review in French (security, bugs, quality) - claude.yml: on-demand @claude trigger in issues and PR comments - ci-failure-to-issue.yml: opens/updates a jules-labeled issue on CI failure https://claude.ai/code/session_01LWm3sagPyEeCw6f9hL6M2y
1 parent 2448589 commit 05bb892

3 files changed

Lines changed: 103 additions & 0 deletions

File tree

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: CI Failure to Jules Issue
2+
3+
on:
4+
workflow_run:
5+
workflows: ["Security Scan", "CI"]
6+
branches: [main]
7+
types: [completed]
8+
9+
permissions:
10+
issues: write
11+
12+
jobs:
13+
create-issue:
14+
if: github.event.workflow_run.conclusion == 'failure'
15+
runs-on: ubuntu-latest
16+
steps:
17+
- name: Create or comment Jules issue
18+
uses: actions/github-script@v7
19+
with:
20+
script: |
21+
const workflowName = context.payload.workflow_run.name;
22+
const sha = context.payload.workflow_run.head_sha;
23+
const runUrl = context.payload.workflow_run.html_url;
24+
const title = `[CI] Échec : ${workflowName}`;
25+
26+
const { data: issues } = await github.rest.issues.listForRepo({
27+
owner: context.repo.owner,
28+
repo: context.repo.repo,
29+
labels: 'jules',
30+
state: 'open',
31+
});
32+
33+
const existing = issues.find(i => i.title === title);
34+
35+
if (existing) {
36+
await github.rest.issues.createComment({
37+
owner: context.repo.owner,
38+
repo: context.repo.repo,
39+
issue_number: existing.number,
40+
body: `Nouvel échec détecté pour **${workflowName}** sur \`main\`.\nCommit : ${sha}\nLien : ${runUrl}`,
41+
});
42+
} else {
43+
await github.rest.issues.create({
44+
owner: context.repo.owner,
45+
repo: context.repo.repo,
46+
title: title,
47+
body: `Le workflow **${workflowName}** a échoué sur \`main\`.\n\nCommit : ${sha}\nLien : ${runUrl}\n\nMerci de diagnostiquer et corriger l'échec.`,
48+
labels: ['bug', 'jules'],
49+
});
50+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Claude PR Review
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened]
6+
7+
permissions:
8+
contents: read
9+
pull-requests: write
10+
11+
jobs:
12+
review:
13+
if: github.actor != 'dependabot[bot]'
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: anthropics/claude-code-action@v1
17+
with:
18+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
19+
direct_prompt: |
20+
Analyse ce diff de Pull Request en tant qu'expert en sécurité et qualité de code.
21+
22+
Fournis une revue détaillée en français couvrant :
23+
1. **Failles de sécurité** (injections, XSS, exposition de données sensibles, secrets exposés, etc.)
24+
2. **Bugs potentiels** (erreurs logiques, cas limites non gérés, régressions possibles, etc.)
25+
3. **Qualité du code** (lisibilité, maintenabilité, bonnes pratiques)
26+
27+
Pour chaque point identifié, indique la sévérité :
28+
🔴 Critique / 🟠 Haute / 🟡 Moyenne / 🟢 Faible
29+
30+
Si aucun problème n'est détecté, indique-le clairement avec un résumé positif.

.github/workflows/claude.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: Claude Code
2+
3+
on:
4+
issue_comment:
5+
types: [created]
6+
pull_request_review_comment:
7+
types: [created]
8+
9+
permissions:
10+
contents: write
11+
pull-requests: write
12+
issues: write
13+
14+
jobs:
15+
claude:
16+
if: |
17+
contains(github.event.comment.body, '@claude') &&
18+
github.actor != 'dependabot[bot]'
19+
runs-on: ubuntu-latest
20+
steps:
21+
- uses: anthropics/claude-code-action@v1
22+
with:
23+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

0 commit comments

Comments
 (0)