Praktyka ciągłej integracji (CI) wymaga pełnej automatyzacji tworzenia buildów oraz efektywnego systemu kontroli wersji. Automatyzacja tworzenia buildów to praktyka oskryptowania różnych zadań, które muszą wykonywać developerzy w czasie ich codziennej pracy. Do zadań tych należy z reguły kompilacja kodu źródłowego, testy automatyczne, pakietyzacja binarek a finalnie deployment aplikacji na serwerach.
Do przeprowadzania CI/CD dla projektów PHP przydatne są następujące wtyczki w Jenkinsie:
- Checkstyle (do przetwarzania logów przez PHP_CodeSniffer w formacie Checkstyle)
- Clover PHP (do przetwarzania logów XML przez PHPUnit‘s Clover)
- Crap4J (do przetwarzania logów XML przez PHPUnit‘s Crap4J)
- DRY (do przetwarzania logów phpcpd w formacie PMD-CPD)
- HTML Publisher (do publikowania dokumentacji wygenerowanej np. przez phpDox)
- JDepend (do przetwarzania logów w formacie JDepend przez PHP_Depend)
- Plot (do przetwarzania plików CSV przez phploc)
- PMD (do przetwarzania logów w formacie PMD przez PHPMD)
- Violations (do przetwarzania logów w różnych formatach)
- Warnings (do przetwarzania warningów kompilatora)
- xUnit (do przetwarzania logów XML JUnit przez PHPUnit‘s)
Powyższe pluginy można zainstalować w sekcji Manage Jenkins -> Manage Plugins -> Available lub pod linkiem:
http://localhost:8080/pluginManager/available
gdzie localhost to nazwa hosta z Jenkinsem.
Pluginy można też zainstalować korzystając z CLI Jenkinsa:
1 2 3 |
wget http://localhost:8080/jnlpJars/jenkins-cli.jar java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin checkstyle cloverphp crap4j dry htmlpublisher jdepend plot pmd violations warnings xunit java -jar jenkins-cli.jar -s http://localhost:8080 safe-restart |
Instalacja PHP 7.2 na Centos 7:
1 2 |
yum install php72 yum install php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache |
Potrzebne są także następujące narzędzia dla PHP 7.2:
- Composer
- PHPUnit
- PHP_CodeSniffer
- PHPLOC
- PHP_Depend
- PHPMD
- PHPCPD
- phpDox
Instalacja Composer na CentOS 7:
1 |
# yum -y install composer |
Instalacja PHP Timer
1 2 |
# cd /root # composer require --dev phpunit/php-timer |
Instalacja PHPUnit:
1 2 |
# composer require --dev phpunit/phpunit ^7 # /root/vendor/bin/phpunit --version |
Instalacja PHP_CodeSniffer
1 |
# composer require --dev squizlabs/php_codesniffer |
Instalacja PHPLOC:
1 |
# composer require --dev phploc/phploc |
Instalacja PHPDepend:
1 |
# composer require --dev pdepend/pdepend |
Instalacja PHPMD
1 |
# composer require --dev phpmd/phpmd |
Instalacja PHP Copy/Paste Detector (PHPCPD):
1 |
# composer require --dev sebastian/phpcpd |
Instalacja phpDox
1 |
# composer require --dev theseer/phpdox |
Niestety przez composera nie mogłem zainstalować phpdox ponieważ wymagał on php-timer 1.0. Z koleji PHPUnit 7.1.2 wymaga php-timer w wersji 2.0. Zainstalowałem więc phpdox innym sposobem:
1 2 3 4 5 6 |
# wget http://phpdox.de/releases/phpdox.phar # chmod +x phpdox.phar # mv phpdox.phar /usr/local/bin/phpdox # ln -s /usr/local/bin/phpdox /root/vendor/bin/phpdox # phpdox --version phpDox 0.11.0 - Copyright (C) 2010 - 2018 by Arne Blankerts and Contributors |
Można także dodać do zmiennej $PATH powyższe narzędzia PHP. Tak to można zrobić dla phploc:
1 |
# ln -s /root/vendor/phploc/phploc/phploc /usr/local/bin/phploc |