ΠΠ°ΡΠ΅ΠΌ Π²Π½Π΅Π΄ΡΡΡΡ CI Π΄Π»Ρ PHP ΠΈ Π»Π΅Π³Π°ΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Symfony ΠΈΠ»ΠΈ Laravel?
Π Π°Π±ΠΎΡΠ° Ρ Π»Π΅Π³Π°ΡΠΈ-ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ Π½Π° PHP (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Symfony ΠΈΠ»ΠΈ Laravel) ΡΠ°ΡΡΠΎ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ: Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅, ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄Π°, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠ΅Π· CI (Continuous Integration) ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΡΠ·Π²ΠΈΠΌΡΠΌΠΈ Π΄Π»Ρ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΉ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ.
ΠΡΠ»ΠΈ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ:
- ΠΠ°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ΄Π½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ;
- ΠΡΠΏΡΡΡΠ²Π°Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Ρ Π΄ΠΎΠ»Π³ΠΈΠΌΠΈ ΠΈΠ»ΠΈ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π΅ΠΏΠ»ΠΎΡ;
- ΠΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°;
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ²;
- Π‘ΡΠ°Π» ΡΠ»ΠΎΠΆΠ½ΡΠΌ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ;
- ΠΠΌΠ΅Π΅Ρ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄ΠΎΠ»Π³, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ΄Π½ΠΎ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΈ ΡΡΡΡΠ°Π½ΠΈΡΡ,
β Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ CI ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΊΠ»ΡΡΠΎΠΌ ΠΊ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΡΡΠΈ.
CI ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΈΠ½Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ΄Π° Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ, ΡΠ±ΠΎΡΠΊΠ° ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ. ΠΡΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π±ΠΈΠ·Π½Π΅Ρ-Π·Π°Π΄Π°Ρ, Π° Π½Π΅ Π½Π° ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΉ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΉ.
ΠΠ°ΠΊ Ρ ΠΏΠΎΠ΄Ρ
ΠΎΠΆΡ ΠΊ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ CI?
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ CI β ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎ Β«Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΒ». ΠΡΠΎ ΠΏΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π΅Π³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΠΎΡ ΠΊΠ°ΠΊ Ρ ΡΠ°Π±ΠΎΡΠ°Ρ:
1. ΠΡΠ΄ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
Π― Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°: ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡΡ ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
- ΠΡΡΡ Π»ΠΈ ΡΠ΅ΡΡΡ? ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ ΠΏΠΎΠΊΡΡΠ²Π°ΡΡ Π»ΠΈ ΠΎΠ½ΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΡΠΈ? ΠΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ ΡΠ΅ΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ: unit, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅, e2e?
- ΠΠ°ΠΊ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ? ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π»ΠΈ
composer.lock Π΄Π»Ρ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ Π²Π΅ΡΡΠΈΠΉ? ΠΡΡΡ Π»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ?
- ΠΡΡΡ Π»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΎΠΊ? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΈ
composer cache ΠΈΠ»ΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ² CI/CD?
- ΠΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π΄Π΅ΠΏΠ»ΠΎΠΉ? ΠΡΠΎ ΡΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠ»ΠΈ ΡΠΆΠ΅ Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ? ΠΡΠ»ΠΈ Π΅ΡΡΡ, ΡΠΎ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°: ΡΠ΅ΡΠ΅Π· ΡΠΊΡΠΈΠΏΡΡ, Ansible, Capistrano ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ?
- ΠΠ°ΠΊΠΈΠ΅ Π΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ Ρ
ΠΎΡΡΠΈΠ½Π³ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π΅ΠΏΠ»ΠΎΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ°?
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π²Π°ΠΆΠ½ΠΎ Π²ΡΡΠ²ΠΈΡΡ ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ° ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΡΠ΅Π±ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ ΠΈΠ»ΠΈ ΠΈΡ
Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎ ΡΡΠ°Π½Π΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ.
2. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°
ΠΠΎΡΠ»Π΅ Π°ΡΠ΄ΠΈΡΠ° Ρ ΡΠΎΠ·Π΄Π°Ρ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½. ΠΠ»Ρ PHP-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Symfony ΠΈΠ»ΠΈ Laravel ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΠ΅ΡΠ΅Π·
composer install Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΡΡΠ° Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°;
- ΠΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ
phpcs ΠΈΠ»ΠΈ php-cs-fixer Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΊΠΎΠ΄ΡΡΠ°ΠΉΠ»Ρ;
- ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠΎΠ²:
phpunit Π΄Π»Ρ unit- ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠ΅ΡΡΠΎΠ², Behat Π΄Π»Ρ BDD ΠΈΠ»ΠΈ e2e-ΡΠ΅ΡΡΠΎΠ²;
- ΠΡΠΎΠ²Π΅ΡΠΊΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
doctrine:migrations:diff ΠΈ doctrine:migrations:migrate Π΄Π»Ρ Symfony;
- Π‘Π±ΠΎΡΠΊΡ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° (Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ): Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π·
npm run build ΠΈΠ»ΠΈ yarn build;
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ² Π΄Π»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ: Π°ΡΡ
ΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π² Docker-ΠΎΠ±ΡΠ°Π·.
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π²Π°ΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π³ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡΡ ΠΏΠ°Π΄Π°ΡΡ, ΡΡΠΎ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΈΡ
ΡΠ΅ΡΡΠΎΠ².
3. ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ
CI Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ Ρ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, GitHub, GitLab ΠΈΠ»ΠΈ Bitbucket). ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- ΠΠ°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ pull request ΠΈΠ»ΠΈ push Π² Π²Π΅ΡΠΊΡ;
- ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ pull request, Π΅ΡΠ»ΠΈ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π½Π΅ ΠΏΡΠΎΡΠ΅Π» ΡΡΠΏΠ΅ΡΠ½ΠΎ;
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΊΠΎΠ΄ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠ΅ΡΡΠ°ΠΌΠΈ.
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Ρ ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Slack ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π· email, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π»Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΠ°ΡΡΡΠ΅ ΡΠ±ΠΎΡΠΎΠΊ.
4. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ°
ΠΠΎΡΠ»Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ
Π·Π°Π΄Π°Ρ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ;
- ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ;
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ
PHPStan ΠΈΠ»ΠΈ Psalm;
- ΠΠ°ΡΡΡΠΎΠΉΠΊΡ Π΄Π΅ΠΏΠ»ΠΎΡ Π½Π° staging ΠΈ production ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π·
GitHub Actions, GitLab CI ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ CI/CD ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΠ±ΠΎΡΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ 10 ΠΌΠΈΠ½ΡΡ, Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°Π³ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΈΠ»ΠΈ Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
5. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ CI Ρ ΡΠΎΠ·Π΄Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ:
- ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΡΠ°Π³ΠΎΠ² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°;
- ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
ΡΠ΅ΡΡΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ;
- Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ ΠΈ CI/CD.
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½ΠΎΠ²ΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π±ΡΡΡΡΠ΅Π΅ Π²Π»ΠΈΡΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠΌ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ CI Π΄Π»Ρ PHP ΠΈ Π»Π΅Π³Π°ΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Symfony ΠΈΠ»ΠΈ Laravel β ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°, Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ, ΡΡΠΊΠΎΡΠΈΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΈ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ, ΠΊΠ°ΠΊ Π²Π½Π΅Π΄ΡΠΈΡΡ CI Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, Π·Π°ΠΏΠΈΡΠΈΡΠ΅ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΡ.