CI/CD React z GitHub Actions
Automatyzuj kroki lintowania, testowania, budowania i wdrażania w przepływie pracy GitHub Actions przy każdym wypchnięciu zmian.
CI/CD React z GitHub Actions to bezpłatna lekcja React Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.
Czym jest GitHub Actions?
GitHub Actions to platforma CI/CD wbudowana w GitHub. Przepływy pracy należy definiować w plikach YAML w katalogu .github/workflows/; są one uruchamiane po wypchnięciu zmian, utworzeniu żądania pull request lub zgodnie z harmonogramem.
Podstawowy przepływ CI
Minimalny przepływ pracy, który przy każdym wypchnięciu zmian oraz każdym żądaniu pull request instaluje zależności, uruchamia lintowanie i testy.
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- run: npm ci
- run: npm run lint
- run: npm test -- --coverageBuforowanie node_modules
Należy buforować ~/.npm (bufor npm, a nie node_modules), aby przyspieszyć instalowanie zależności. actions/setup-node obsługuje to za pomocą opcji cache.
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm' # caches ~/.npm based on package-lock.json hashEtap budowania
Po testach należy dodać etap budowania, aby sprawdzić, czy projekt kompiluje się bez błędów.
- name: Build
run: npm run build
# For Next.js — catch TypeScript errors:
- name: Type Check
run: npx tsc --noEmitWdrażanie do Vercel po scaleniu
Należy wdrażać aplikację do Vercel po wypchnięciu zmian do gałęzi main, używając Vercel CLI w przepływie pracy.
- name: Deploy to Vercel
env:
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
run: |
npm install -g vercel
vercel pull --yes --environment=production --token=$VERCEL_TOKEN
vercel build --prod --token=$VERCEL_TOKEN
vercel deploy --prebuilt --prod --token=$VERCEL_TOKENWdrażanie do S3 po scaleniu
Po pomyślnym zbudowaniu projektu na gałęzi main należy zsynchronizować pliki wynikowe z S3 i unieważnić pamięć podręczną CloudFront.
- name: Deploy to S3
if: github.ref == 'refs/heads/main'
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
aws s3 sync dist/ s3://my-bucket/ --delete
aws cloudfront create-invalidation --distribution-id ${{ secrets.CF_ID }} --paths "/*"Testy E2E Playwright w CI
Po zbudowaniu aplikacji należy uruchamiać testy E2E Playwright w CI. Pliki binarne przeglądarek należy instalować w osobnym, przeznaczonym do tego etapie.
- name: Install Playwright Browsers
run: npx playwright install --with-deps chromium
- name: Run E2E Tests
run: npx playwright test
- uses: actions/upload-artifact@v4
if: failure()
with:
name: playwright-report
path: playwright-report/Równoległe zadania w macierzy
Należy użyć strategii macierzowej, aby uruchamiać testy równolegle dla wielu wersji Node.js lub różnych środowisk.
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
steps:
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}Zarządzanie sekretami
Wrażliwe wartości (klucze API i tokeny wdrożeniowe) należy przechowywać jako GitHub Secrets (repozytorium → Settings → Secrets). W przepływach pracy można uzyskać do nich dostęp za pomocą ${{ secrets.MY_SECRET }}.
Warunkowe etapy
Należy używać warunków if:, aby uruchamiać etapy tylko dla określonych gałęzi, zdarzeń związanych z żądaniami pull request lub po pomyślnym zakończeniu poprzednich etapów.
- name: Deploy
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
run: npm run deployOdznaki statusu
Należy dodać do pliku README odznakę statusu budowania, aby jednym spojrzeniem sprawdzać stan CI.
<!-- README.md -->
Szybkie sprawdzenie
Jaka funkcja GitHub Actions uruchamia jednocześnie to samo zadanie dla wielu konfiguracji, na przykład różnych wersji Node.js?
Podsumowanie
Przepływy CI należy definiować w plikach YAML w katalogu .github/workflows/. Do szybkiego instalowania zależności należy używać actions/setup-node z opcją cache: 'npm'. Należy dodać etapy lintowania, sprawdzania typów, testowania i budowania. Wdrażanie należy uruchamiać warunkowo po wypchnięciu zmian do gałęzi main. Sekrety należy przechowywać w GitHub Secrets, a kompilacje macierzowe wykorzystywać do testowania wielu wersji.
Często zadawane pytania
Czy lekcja „CI/CD React z GitHub Actions” jest bezpłatna?
Tak — pełny tekst „CI/CD React z GitHub Actions” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „CI/CD React z GitHub Actions”?
Automatyzuj kroki lintowania, testowania, budowania i wdrażania w przepływie pracy GitHub Actions przy każdym wypchnięciu zmian. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć React Academy?
Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „CI/CD React z GitHub Actions”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?
Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wdrażanie na Vercel: zero konfiguracji i adresy podglądu
- Hosting React SPA w AWS S3 i CloudFront
- Konteneryzacja aplikacji React/Next.js
- CI/CD React z GitHub Actions