Przejdź do głównej zawartości

Konfiguracja pipeline CI/CD z pomocą AI

Nowoczesny rozwój oprogramowania wymaga zautomatyzowanych pipeline, które budują, testują i wdrażają kod niezawodnie. Ta lekcja pokazuje, jak możliwości AI Cursor mogą pomóc projektować, implementować i utrzymywać zaawansowane przepływy pracy CI/CD, które zazwyczaj wymagałyby ekspertyzy DevOps.

AI Cursor rozumie popularne platformy CI/CD, ich języki konfiguracji i najlepsze praktyki. Może generować konfiguracje pipeline, debugować awarie i sugerować optymalizacje oparte na potrzebach twojego projektu.

Generowanie pipeline

Twórz kompletne konfiguracje CI/CD z opisów

Automatyzacja testów

Generuj kompleksowe zestawy testów i strategie

Skrypty wdrażania

Buduj automatyzację wdrażania dla każdej platformy

Konfiguracja monitorowania

Konfiguruj monitorowanie pipeline i alertowanie

# Prompt agenta:
"Utwórz workflow GitHub Actions dla aplikacji Node.js z:
- Budowaniem i testowaniem na wielu wersjach Node
- Raportowaniem pokrycia kodu
- Budowaniem obrazów Docker
- Wdrażaniem na AWS ECS
- Powiadomieniami Slack"

Zbudujmy gotowy do produkcji pipeline CI/CD dla aplikacji full-stack:

  1. Utwórz strukturę workflow

    @.github/workflows
    Utwórz kompleksowy workflow GitHub Actions:
    - Wyzwalaj na push do main i PR
    - Uruchom linting, testowanie i sprawdzenia bezpieczeństwa
    - Buduj obrazy Docker z cache'owaniem
    - Wdrażaj na staging automatycznie
    - Wdrażaj na produkcję z zatwierdzeniem
  2. Cursor generuje kompletny workflow

    name: Pipeline CI/CD
    on:
    push:
    branches: [main, develop]
    pull_request:
    branches: [main]
    env:
    REGISTRY: ghcr.io
    IMAGE_NAME: ${{ github.repository }}
    jobs:
    lint-and-test:
    runs-on: ubuntu-latest
    strategy:
    matrix:
    node-version: [18.x, 20.x]
    steps:
    - uses: actions/checkout@v4
    - name: Konfiguracja Node.js
    uses: actions/setup-node@v4
    with:
    node-version: ${{ matrix.node-version }}
    cache: 'npm'
    - name: Instalacja zależności
    run: npm ci
    - name: Uruchom linting
    run: npm run lint
    - name: Uruchom testy
    run: npm test -- --coverage
    - name: Prześlij pokrycie
    uses: codecov/codecov-action@v3
    with:
    token: ${{ secrets.CODECOV_TOKEN }}
  3. Dodaj skanowanie bezpieczeństwa

    security:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Uruchom audyt bezpieczeństwa
    run: npm audit --production
    - name: Uruchom skan SAST
    uses: github/super-linter@v5
    env:
    DEFAULT_BRANCH: main
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-and-push:
needs: [lint-and-test, security]
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Konfiguracja Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Logowanie do rejestru kontenerów
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Wyciągnij metadane
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=sha,prefix={{branch}}-
- name: Buduj i wypchnij obraz Docker
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
deploy-staging:
needs: build-and-push
runs-on: ubuntu-latest
environment: staging
steps:
- name: Konfiguracja poświadczeń AWS
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Wdrażanie na ECS
run: |
aws ecs update-service \
--cluster staging-cluster \
--service my-app-service \
--force-new-deployment

Poproś Cursor o implementację złożonych strategii macierzowych:

Utwórz build macierzowy który testuje:
- Wiele OS (Ubuntu, Windows, macOS)
- Wiele wersji Node (16, 18, 20)
- Wiele wersji bazy danych (PostgreSQL 12, 13, 14)
- Pomiń niekompatybilne kombinacje
test-suite:
runs-on: ubuntu-latest
strategy:
matrix:
test-group: [unit, integration, e2e]
steps:
- name: Uruchom testy ${{ matrix.test-group }}
run: npm run test:${{ matrix.test-group }}
deploy-production:
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
needs: [deploy-staging]
environment:
name: production
url: https://app.example.com
steps:
- name: Czekaj na zatwierdzenie
uses: trstringer/manual-approval@v1
with:
approvers: tech-lead,devops-team

Użyj Cursor do wygenerowania kompletnej strategii testowania:

  1. Testy jednostkowe

    Wygeneruj testy jednostkowe z:
    - Minimum 80% pokrycia kodu
    - Mock zewnętrznych zależności
    - Testuj przypadki brzegowe
    - Benchmarki wydajności
  2. Testy integracji

    Utwórz testy integracji:
    - Testuj endpointy API
    - Operacje bazodanowe
    - Integracje zewnętrznych serwisów
    - Użyj kontenerów testowych
  3. Testy End-to-End

    Implementuj testy E2E:
    - Użyj Playwright/Cypress
    - Testuj krytyczne przepływy użytkowników
    - Testowanie cross-browser
    - Testy regresji wizualnej
Implementuj wdrażanie blue-green w GitHub Actions:
1. Wdróż na środowisko green
2. Uruchom testy smoke
3. Przełącz load balancer na green
4. Zachowaj blue do rollback
5. Wyczyść stare blue po sukcesie
canary-deploy:
steps:
- name: Wdróż canary
run: |
kubectl set image deployment/my-app-canary \
my-app=${{ env.NEW_IMAGE }}
- name: Monitoruj metryki
run: |
./scripts/check-canary-metrics.sh
- name: Stopniowy rollout
run: |
for percent in 10 25 50 100; do
kubectl patch deployment my-app \
-p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":"'$percent'%"}}}}'
sleep 300
./scripts/check-health.sh || exit 1
done
Zintegruj flagi funkcji z CI/CD:
- Użyj LaunchDarkly/Unleash
- Wdrażaj kod z wyłączonymi flagami
- Stopniowo włączaj funkcje
- Monitoruj metryki per funkcja
- Automatyczny rollback przy błędach
  1. Implementuj cache’owanie

    - name: Cache zależności
    uses: actions/cache@v3
    with:
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
  2. Użyj cache warstw Docker

    - name: Buduj z cache
    uses: docker/build-push-action@v5
    with:
    cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache
    cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache,mode=max
  3. Równolegalizuj niezależne zadania

    jobs:
    test:
    # Uruchamia się natychmiast
    security-scan:
    # Uruchamia się równolegle z test
    build:
    needs: [test, security-scan]
    # Czeka na oba

Poproś Cursor o optymalizację kosztów CI/CD:

Optymalizuj GitHub Actions pod kątem kosztów:
- Używaj większych runnerów tylko gdy potrzeba
- Implementuj timeouty zadań
- Pomijaj niezmienione komponenty
- Użyj warunkowych workflow
- Archiwizuj stare artefakty
- name: Wyślij metryki do DataDog
if: always()
run: |
curl -X POST "https://api.datadoghq.com/api/v1/series" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${{ secrets.DD_API_KEY }}" \
-d @- <<EOF
{
"series": [{
"metric": "ci.pipeline.duration",
"points": [[${{ steps.timer.outputs.time }}, ${{ steps.timer.outputs.duration }}]],
"tags": ["pipeline:${{ github.workflow }}", "status:${{ job.status }}"]
}]
}
EOF
- name: Powiadom Slack
if: failure()
uses: slackapi/slack-github-action@v1
with:
payload: |
{
"text": "Wdrażanie nie powiodło się!",
"blocks": [{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "❌ *${{ github.workflow }}* nie powiódł się\n${{ github.event.pull_request.html_url || github.event.head_commit.url }}"
}
}]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
Implementuj bezpieczną obsługę sekretów:
1. Użyj GitHub Secrets dla wrażliwych danych
2. Regularnie rotuj sekrety
3. Użyj OIDC dla autoryzacji chmury
4. Implementuj dostęp z najmniejszymi uprawnieniami
5. Audytuj użycie sekretów
- name: Wygeneruj SBOM
uses: anchore/sbom-action@v0
with:
output-file: sbom.spdx.json
- name: Podpisz obraz kontenera
uses: sigstore/cosign-installer@v3
run: |
cosign sign --yes \
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@${{ steps.build.outputs.digest }}

Użyj Cursor do diagnozowania awarii pipeline:

Mój workflow GitHub Actions kończy się niepowodzeniem z "Error: Process completed with exit code 1"
Pomóż mi debugować przez:
1. Dodanie szczegółowego logowania
2. Sprawdzenie zmiennych środowiskowych
3. Walidację uprawnień plików
4. Testowanie lokalnie z act
Okno terminala
# Testuj GitHub Actions lokalnie
act -j build --secret-file .env.secrets
# Debuguj określone zadanie
act -j test --verbose
# Użyj określonego obrazu Docker
act -j deploy --platform ubuntu-latest=nektos/act-environments-ubuntu:18.04
Utwórz CI/CD dla monorepo z:
- Wykrywaniem zmienionych pakietów
- Uruchamianiem testów tylko dla dotkniętego kodu
- Budowaniem i wdrażaniem zmienionych serwisów
- Współdzielonym cache'owaniem zależności
- Równoległym wykonywaniem per pakiet
ios-build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Konfiguracja Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Buduj i testuj
run: |
xcodebuild test \
-scheme MyApp \
-destination 'platform=iOS Simulator,name=iPhone 14'
- name: Prześlij do TestFlight
run: |
xcrun altool --upload-app \
-f MyApp.ipa \
-u ${{ secrets.APPLE_ID }} \
-p ${{ secrets.APP_PASSWORD }}

Zachowaj wszystkie konfiguracje pipeline w repozytorium dla śledzenia i możliwości rollback.

Użyj Cursor do tworzenia szablonów workflow wielokrotnego użytku i akcji kompozytowych.

Uporządkuj zadania, aby łapać awarie wcześnie i oszczędzać zasoby obliczeniowe.

Poproś Cursor o wygenerowanie dokumentacji dla złożonej logiki pipeline.

Śledź metryki pipeline, koszty i trendy wydajności.

Kluczowe metryki do śledzenia:

  • Wskaźnik sukcesu buildów: Procent udanych buildów
  • Średni czas do wdrożenia: Od commita do produkcji
  • Czas wykonywania testów: Jak długo trwają testy
  • Koszt pipeline: Miesięczne wydatki CI/CD
  • Częstotliwość wdrożeń: Jak często wdrażasz

Po opanowaniu CI/CD z Cursor:

  1. Eksploruj workflow GitOps z ArgoCD lub Flux
  2. Implementuj progressive delivery z flagami funkcji
  3. Buduj pipeline wdrażania multi-cloud
  4. Twórz automatyzację disaster recovery

Pamiętaj: Cursor nie tylko pomaga pisać konfiguracje pipeline—pomaga zrozumieć wzorce CI/CD i najlepsze praktyki, które tworzą niezawodne, efektywne systemy dostarczania oprogramowania.