CI (Continuous Integration) i CD (Continuous Deployment lub Delivery) zamieniają wdrożenie z ręcznego, stresującego procesu w zautomatyzowaną rutynę. W projektach PHP setup nie jest skomplikowany, ale wymaga kilku kroków.
Co daje CI/CD
Każda zmiana kodu automatycznie uruchamia testy i sprawdzenia. Jeśli coś nie przechodzi, wiesz o tym zanim kod trafi na produkcję. CD idzie o krok dalej: po przejściu testów kod jest automatycznie wdrażany na środowisko staging lub produkcyjne. Zamiast ręcznego kopiowania plików przez FTP czy SSH masz powtarzalny, udokumentowany proces.
Popularne narzędzia
- GitHub Actions - wbudowane w GitHub, darmowe dla publicznych repozytoriów, z limitem minut dla prywatnych.
- GitLab CI/CD - integracja z GitLab, możliwość własnych runnerów.
- Bitbucket Pipelines - jeśli używasz Bitbucket.
- Jenkins - self-hosted, duże możliwości konfiguracji, wymaga więcej pracy przy setupie.
Podstawowy pipeline dla PHP
Minimalny pipeline powinien zawierać: instalację zależności przez Composer, sprawdzenie standardów kodu przez PHP_CodeSniffer lub Pint, uruchomienie testów przez PHPUnit i opcjonalnie analizę statyczną przez PHPStan lub Psalm.
Wdrożenie przez SSH i rsync
Dla prostych projektów PHP wdrożenie można zautomatyzować przez SSH. Pipeline łączy się z serwerem, pobiera kod z repozytorium, instaluje zależności i restartuje serwisy. Rsync przesyła tylko zmienione pliki, co przyspiesza wdrożenie przy dużych projektach.
Środowiska: dev, staging, produkcja
Dobrą praktyką jest posiadanie osobnych środowisk. Kod trafia najpierw na staging, gdzie jest testowany. Dopiero po akceptacji idzie na produkcję. Staging powinien być jak najbardziej zbliżony do produkcji: ta sama wersja PHP, ta sama struktura bazy, zbliżone dane testowe.