Claude Code może być zintegrowany z przepływami pracy GitHub Actions w celu automatyzacji przeglądów kodu, generowania dokumentacji, przeprowadzania audytów bezpieczeństwa i wzbogacania potoku CI/CD o możliwości wspomagane przez AI.
Dodaj klucz API do GitHub Secrets
# W ustawieniach repozytorium:
# Settings → Secrets and variables → Actions
# Dodaj nowy sekret repozytorium: ANTHROPIC_API_KEY
Utwórz podstawowy przepływ pracy
name : Claude Code Analysis
types : [ opened , synchronize ]
- uses : actions/checkout@v4
fetch-depth : 0 # Pełna historia dla lepszego kontekstu
- name : Install Claude Code
# Zainstaluj CLI Claude Code
npm install -g @anthropic-ai/claude-code
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
--base origin/${{ github.base_ref }} \
--head ${{ github.sha }} \
--output review-report.md
uses : actions/github-script@v7
const fs = require('fs');
const review = fs.readFileSync('review-report.md', 'utf8');
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
Przetestuj przepływ pracy
# Utwórz testowy PR aby uruchomić przepływ pracy
git checkout -b test-claude-code
git commit -m " Test Claude Code integration "
git push origin test-claude-code
Kompleksowy przegląd PR
types : [ opened , synchronize ]
- uses : actions/checkout@v4
- name : Get Changed Files
# Pobierz listę zmienionych plików
CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...${{ github.sha }})
echo "files<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGED_FILES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name : Claude Code Review
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
# Utwórz prompt przeglądu
cat > review-prompt.txt << 'EOF'
Przejrzyj ten pull request skupiając się na:
1. Jakości kodu i najlepszych praktykach
2. Potencjalnych błędach lub problemach
4. Implikacjach wydajnościowych
${{ steps.changed-files.outputs.files }}
Podaj konkretną, wykonalną opinię z przykładami kodu gdzie to ma zastosowanie.
Formatuj jako GitHub Flavored Markdown.
--prompt-file review-prompt.txt \
--base origin/${{ github.base_ref }} \
- name : Post Review Comments
uses : actions/github-script@v7
const fs = require('fs');
const review = fs.readFileSync('review.md', 'utf8');
// Sprawdź czy przegląd jest merytoryczny
if (review.length > 100) {
// Utwórz komentarz przeglądu
await github.rest.pulls.createReview({
owner: context.repo.owner,
pull_number: context.issue.number,
name : Generate API Documentation
- uses : actions/checkout@v4
- name : Generate API Docs
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
claude "Przeanalizuj kod API w src/api i:
1. Wygeneruj kompleksową dokumentację API
2. Uwzględnij przykłady request/response
3. Udokumentuj kody błędów i ich obsługę
4. Utwórz przykłady użycia w wielu językach
5. Wygeneruj aktualizacje specyfikacji OpenAPI
Wynik w formacie Markdown" \
--output docs/api-reference.md
- name : Generate SDK Examples
claude "Na podstawie API w src/api, wygeneruj:
1. Przykłady użycia SDK Python
2. Przykłady JavaScript/TypeScript
4. Przykłady poleceń cURL
Zapisz każdy w odpowiednim katalogu" \
- name : Commit Documentation
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git diff --staged --quiet || git commit -m "chore: Update API documentation [skip ci]"
- uses : actions/checkout@v4
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
claude "Przeanalizuj ten projekt i zaktualizuj README.md:
1. Zaktualizuj listę funkcji na podstawie aktualnego kodu
2. Odśwież instrukcje instalacji
3. Zaktualizuj przykłady użycia
4. Upewnij się, że wszystkie znaczniki są aktualne
5. Dodaj nowe opcje konfiguracji
Zachowaj istniejącą strukturę i styl" \
uses : peter-evans/create-pull-request@v5
commit-message : ' docs: Update README.md '
title : ' docs: Automatyczna aktualizacja README '
Ten PR aktualizuje README.md na podstawie ostatnich zmian w kodzie.
Wygenerowane przez analizę Claude Code.
Potok audytu bezpieczeństwa
- cron : ' 0 2 * * 1 ' # Tygodniowo w poniedziałek
- uses : actions/checkout@v4
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
npm audit --json > npm-audit.json
claude "Przeanalizuj npm-audit.json i:
1. Ustaw priorytety luk według ważności i możliwości eksploitacji
2. Zasugeruj konkretne kroki naprawcze
3. Zidentyfikuj fałszywe alarmy
4. Polec alternatywne pakiety jeśli potrzeba
5. Utwórz gotowe do PR polecenia naprawcze" \
--output security-report.md
- name : Code Security Review
claude "Przeprowadź przegląd bezpieczeństwa bazy kodu:
1. Sprawdź zakodowane sekrety lub klucze API
2. Zidentyfikuj luki SQL injection
4. Sprawdź problemy authentication/authorization
5. Przejrzyj implementacje kryptograficzne
6. Zidentyfikuj problemy OWASP Top 10
Skup się na katalogu src/" \
--output code-security-report.md
- name : Infrastructure Security
claude "Przejrzyj konfiguracje infrastruktury:
1. Sprawdź Dockerfile pod kątem problemów bezpieczeństwa
2. Przejrzyj manifesty k8s pod kątem błędnych konfiguracji
3. Przeanalizuj GitHub Actions pod kątem problemów bezpieczeństwa
4. Sprawdź ujawnione wrażliwe dane
5. Przejrzyj polityki CORS i CSP" \
--output infra-security-report.md
uses : actions/upload-artifact@v4
Generowanie testów jednostkowych
- name : Generate Missing Tests
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
# Znajdź pliki z niskim pokryciem
UNCOVERED=$(find src -name "*.js" -o -name "*.ts" | \
xargs -I {} sh -c 'test -f "$(echo {} | \
sed "s/src/test/;s/\.[jt]s$/.test.&/")" || echo {}')
# Wygeneruj testy dla niepokrytych plików
for file in $UNCOVERED; do
claude "Wygeneruj kompleksowe testy jednostkowe dla $file:
1. Testuj wszystkie eksportowane funkcje
2. Uwzględnij przypadki skrajne
3. Mockuj zewnętrzne zależności
4. Użyj składni Jest/Vitest
--output "${file/src/test}.test.js"
Generowanie testów integracyjnych
- name : Generate Integration Tests
claude "Przeanalizuj endpointy API i wygeneruj:
1. Testy integracyjne dla wszystkich endpointów
2. Testuj przepływy uwierzytelniania
3. Testuj scenariusze błędów
4. Testuj ograniczenia szybkości
5. Testuj walidację danych
Użyj składni Supertest" \
--output test/integration/api.test.js
Generowanie testów E2E
- name : Generate E2E Tests
claude "Utwórz testy E2E Playwright:
1. Testuj krytyczne ścieżki użytkownika
2. Testuj przesyłanie formularzy
4. Testuj responsywny design
5. Uwzględnij testy dostępności" \
Analiza zależności
- name : Optimize Dependencies
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
claude "Przeanalizuj package.json i:
1. Zidentyfikuj nieużywane zależności
2. Znajdź duplikaty zależności
3. Zasugeruj łżejsze alternatywy
4. Zidentyfikuj problemy bezpieczeństwa
5. Polec aktualizacje wersji
Wygeneruj polecenia naprawcze" \
--output dependency-optimization.sh
chmod +x dependency-optimization.sh
./dependency-optimization.sh
Analiza bundla
- name : Analyze Bundle Size
# Wygeneruj statystyki bundla
claude "Przeanalizuj webpack-stats.json:
1. Zidentyfikuj duże moduły
2. Znajdź zduplikowany kod
3. Zasugeruj punkty podziału kodu
5. Zidentyfikuj możliwości tree-shaking" \
--output bundle-optimization.md
Inteligentne notatki wydania
- uses : actions/checkout@v4
- name : Generate Release Notes
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
# Pobierz commity od ostatniego tagu
LAST_TAG=$(git describe --tags --abbrev=0 HEAD^)
COMMITS=$(git log $LAST_TAG..HEAD --pretty=format:"%h %s")
claude "Wygeneruj notatki wydania z tych commitów:
1. Zmiany łamiące wsteczną kompatybilność (jeśli są)
4. Usprawnienia wydajności
5. Aktualizacje dokumentacji
Spraw by było przyjazne użytkownikowi i ekscytujące!" \
--output release-notes.md
- name : Create GitHub Release
uses : actions/github-script@v7
const fs = require('fs');
const notes = fs.readFileSync('release-notes.md', 'utf8');
await github.rest.repos.createRelease({
owner: context.repo.owner,
tag_name: context.ref.replace('refs/tags/', ''),
name: `Release ${context.ref.replace('refs/tags/', '')}`,
Śledź użycie na przepływ pracy
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
# Pobierz użycie tokenów z Claude Code
TOKEN_USAGE=$(claude usage --format json)
echo "::notice title=Token Usage::$TOKEN_USAGE"
echo "$TOKEN_USAGE" >> .github/token-usage.log
# Ostrzeż jeśli użycie jest wysokie
TOKENS=$(echo $TOKEN_USAGE | jq '.total_tokens')
if [ $TOKENS -gt 10000 ]; then
echo "::warning title=High Token Usage::Used $TOKENS tokens"
Utwórz dashboard użycia
- name : Update Usage Dashboard
claude "Przeanalizuj .github/token-usage.log i:
1. Utwórz wykres trendów użycia
2. Zidentyfikuj przepływy pracy o wysokim użyciu
3. Zasugeruj optymalizacje
4. Oblicz miesięczne koszty
5. Wygeneruj raport markdown" \
--output .github/usage-report.md
Najlepsze praktyki CI/CD
Cachuj zależności aby skrócić czas konfiguracji
Używaj grup współbieżności aby zapobiec duplikatom uruchomień
Ustaw limity tokenów aby kontrolować koszty
Używaj warunków przepływu pracy aby uruchamiać tylko gdy potrzeba
Przechowuj artefakty do debugowania
Używaj matrix builds dla wielu konfiguracji
Implementuj logikę ponownych prób dla przejściowych błędów
Wytyczne bezpieczeństwa
Nigdy nie commituj kluczy API - używaj GitHub Secrets
Ogranicz uprawnienia przepływu pracy do minimum wymaganego
Przejrzyj działania third-party przed użyciem
Używaj reguł ochrony środowiska dla wrażliwych przepływów pracy
Regularnie audytuj uruchomienia przepływów pracy
Implementuj reguły ochrony gałęzi
Kompletny przepływ pracy PR
types : [ opened , synchronize , reopened ]
group : pr-${{ github.event.number }}
cache-key : ${{ steps.cache.outputs.key }}
- uses : actions/checkout@v4
run : echo "key=${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}"
- uses : actions/checkout@v4
key : ${{ needs.setup.outputs.cache-key }}
- name : Install Dependencies
- name : Claude Code Review
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
--focus "jakość kodu, najlepsze praktyki, wydajność" \
--severity "error,warning" \
- uses : actions/checkout@v4
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
- uses : actions/checkout@v4
- uses : actions/setup-node@v4
node-version : ${{ matrix.node }}
- name : Generate Missing Tests
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
needs : [ code-quality , security , tests ]
- name : Summarize Results
ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
claude "Podsumuj kontrole PR:
- Jakość kodu: ${{ needs.code-quality.result }}
- Bezpieczeństwo: ${{ needs.security.result }}
- Testy: ${{ needs.tests.result }}
Podaj wykonalne następne kroki" \
# Debug problemy z kluczem API
# Sprawdź czy klucz jest ustawiony
if [ -z "$ANTHROPIC_API_KEY" ]; then
echo "::error::ANTHROPIC_API_KEY nie jest ustawiony"
# Testuj poprawność klucza
claude "Hello" --max-tokens 10 || {
echo "::error::Walidacja klucza API nie powiodła się"
# Obsługa ograniczeń szybkości
uses : nick-fields/retry@v2
claude review --output review.md
# Obsługa dużych baz kodu
- name : Process Large Files
# Podziel przegląd na kawałki
find src -name "*.js" | \
claude review --files {} \
cat reviews/*.md > combined-review.md
Wzbogać swój potok CI/CD o:
Pamiętaj: Zacznij od prostych przepływów pracy i stopniowo dodawaj złożoność. Monitoruj koszty uważnie i optymalizuj użycie tokenów poprzez cachowanie wyników i uruchamianie tylko przy istotnych zmianach.