Claude Code ב-CI/CD Pipelines

📚 פיתוח עם Claude, Claude Code & API ⏱️ 7 דק׳ 🎓 מתקדם ✓ חינם לגמרי
Claude Code ב-CI/CD Pipelines

Claude Code ב-CI/CD, code review ב-24/7 בלי bottleneck

אם אתה מפתח בסטארטאפ בתל אביב ויש לך 3 מפתחים שמגישים 20 PRs ביום, ה-bottleneck הוא תמיד אותו דבר: מי בודק? Claude Code שמחובר ל-GitHub Actions (או GitLab/CircleCI) פותר את זה, כל PR מקבל review אוטומטי תוך דקה, security scan, ולעיתים אפילו תיקון אוטומטי. החיסכון: כ-$24 לחודש לצוות של 10 מפתחים שמבצעים merge ל-20 PRs ביום (לפי Bill Prin, Medium מרץ 2026).

עדכון חשוב לאפריל 2026: מי שעדיין מריץ npx @anthropic-ai/claude-code ישירות ב-YAML משתמש בדפוס מיושן. הדרך הקנונית עכשיו היא ה-Action הרשמית anthropics/claude-code-action@v1 שיצא ל-GA ב-26.8.2025. ה-@beta הישן שבור.

הדפוס הקנוני, claude-code-action@v1

ה-Action החדשה מאחדת הכל ל-2 פרמטרים: prompt ו-claude_args. ה-mode נקבע אוטומטית, ו-custom_instructionsmax_turnsmodelallowed_tools, כולם זזו פנימה ל-claude_args.

# .github/workflows/claude-review.yml
name: Claude Code Review
on:
  pull_request:
    types: [opened, ready_for_review, synchronize]

permissions:
  contents: read
  pull-requests: write
  id-token: write  # ל-OIDC במקום static key

jobs:
  review:
    runs-on: ubuntu-latest
    if: github.actor != 'dependabot[bot]'
    steps:
      - name: Harden Runner
        uses: step-security/harden-runner@v2
        with:
          egress-policy: audit

      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Generate App Token
        id: app-token
        uses: actions/create-github-app-token@v2
        with:
          app-id: ${{ vars.CLAUDE_APP_ID }}
          private-key: ${{ secrets.CLAUDE_APP_PRIVATE_KEY }}

      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          github_token: ${{ steps.app-token.outputs.token }}
          prompt: "בדוק את ה-PR לאיכות קוד, נכונות, ואבטחה. נתח רק קבצי .ts/.tsx/.py שהשתנו. פרסם ממצאים כ-review comments ממוקדים, לא סוקרני. עברית."
          claude_args: "--max-turns 5 --model claude-sonnet-4-6"

Security, חובה אחרי CVE-2026-35022

ב-30-31 במרץ 2026 נחשפה דליפת source map של @anthropic-ai/claude-code v2.1.88 ובעקבותיה CVE-2026-35022 (CVSS 9.8), command injection דרך משתני סביבה ו-apiKeyHelper ב-.claude/settings.json. אחרי האירוע הזה, אלה כללי ברזל:

לא רק GitHub, GitLab ו-CircleCI גם first-class

אם אתה לא על GitHub, יש פתרונות רשמיים:

Claude Code 2.x, subagents + hooks + Ralph loop

הדפוס הישן של "prompt CLI ענק שעושה הכל" מת ב-2.0 (29.9.2025). היום בונים אחרת: subagents מתמחים (code-reviewersecurity-auditordoc-writer) ש-hooks מפעילים על אירועי repo. ה-Stop hook למשל מפעיל אוטומטית את ה-code-reviewer subagent על הקבצים שהשתנו לפני סיום ה-job. וה-Ralph loop (run-and-loop until tests pass) הוא דפוס מתועד שמחליף את ה-monolithic prompt: Claude רץ, בודק tests, מתקן, ובודק שוב, עד שהכל ירוק.

זה אומר ש-CI שלך לא צריך להיות פסקה ענקית של הוראות, הוא צריך להיות trigger קצר שמפעיל subagent מתמחה.

השוואת שלבי pipeline

שלב כלי תפקיד Claude חוסם merge?
Lint ESLint / Flake8 לא נדרש כן
Tests Jest / pytest ניתוח כשלים (subagent) כן
Code Review claude-code-action@v1 security, bugs, איכות לא (advisory)
Release Notes cron + Opus 4.7 changelog יומי לא

עלות, Haiku זה ברירת המחדל הנכונה

Bill Prin מסכם ב-Medium: "diff של 400 שורות עולה בדרך כלל מתחת ל-$0.05 ל-review. צוות של 10 מהנדסים שעושה merge ל-20 PRs ביום מוציא בערך $0.80 ביום, בערך $24 לחודש." זה עם Sonnet. עם Haiku אתה מוריד את זה פי 5. הכלל הפשוט: Haiku ל-review ראשון, Sonnet רק אם ה-PR מתויג security, ו-Opus 4.7 (1M context) רק ל-audit של ריפו שלם או לכתיבת prose איכותית כמו release notes.

ועוד שלוש אסטרטגיות חשובות: סנן את ה-diff לקבצי קוד בלבד (לא lockfiles), הגדר תמיד --max-turns 5 כדי שה-agent לא יכנס ללולאה אינסופית, והרץ lint/tests/Claude במקביל ולא סדרתית.

ניתוח test failures אוטומטי

בנוסף ל-review, אחד ה-use cases הכי שימושיים הוא triage של tests שנכשלו. במקום שמפתח יקרא 200 שורות של stack trace בערב שישי, Claude עושה את זה תוך 30 שניות:

      - name: Triage Test Failures
        if: failure()
        uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: "נתח את test-results.json. עבור כל כשל: סיבה בעברית, הקובץ שצריך לבדוק, ותיקון של שורה אחת. פרסם כ-comment ב-PR."
          claude_args: "--max-turns 3 --model claude-haiku-4-5"

שים לב ל-if: failure(), ה-job רץ רק אם ה-tests נכשלו, אז אתה לא מבזבז קריאות API לחינם.

שאלות נפוצות שצצות אצל מי שמטמיע

טעויות נפוצות שראיתי בקהילה

הטעות הכי שכיחה ששמעתי בקהילה: "@claude לא מגיב על PRs מ-forks", זה לא bug, זו תכונת אבטחה של GitHub שחוסמת גישה ל-secrets מ-forks. ה-workaround הוא pull_request_target עם path filters קפדניים, אבל זה וקטור supply-chain מסוכן וצריך harden-runner. הטעות השנייה: לשלוח את כל ה-codebase ל-Claude בכל PR, token blowup ועלות מיותרת. תמיד סנן ל-git diff -- '*.ts' '*.tsx'. הטעות השלישית: לשכוח --max-turns ולגלות בסוף החודש שה-agent נכנס ללולאה ושרף $200 על PR אחד. תמיד --max-turns 5 ל-review, --max-turns 3 ל-triage.

ועוד תובנה חדה מ-Daniel Weinshenker (Medium מרץ 2026): "While Claude codes incredibly fast, it still hallucinates and makes mistakes... having Claude create PRs without verifying they don't break anything wasn't actually useful." המסקנה: Claude כ-reviewer מצוין, Claude כ-author דורש hooks של verification (Ralph loop) לפני merge.

אין בעיה, ה-key מוצפן אוטומטית ב-GitHub
ה-key נחשף בכל מי שיש לו גישת read לריפו ובכל ה-logs; חובה להשתמש ב-${{ secrets.ANTHROPIC_API_KEY }}, ועדיף OIDC. אחרי CVE-2026-35022 זה גם וקטור command injection.
צריך להוסיף גרשיים סביב ה-key
הבעיה היא רק שזה לא יעבוד עם Bedrock

רוצה ללמוד עם מעקב התקדמות, קוויזים ותעודה?

כל 130 השיעורים פתוחים בחינם, כולל נגן אינטראקטיבי, שמירת התקדמות ותעודה דיגיטלית בסיום.