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  | 
					


