janos.szurovecz.hu

A régi blogom, ahova lehet írok majd még...

Jenkins és a PHP

2012-06-20 4 perc olvasási idő

Ebben az írásomban egy olyan környezet telepítésén fogok lépésről lépésre végigmenni, amelynek a végén lesz egy CI (Continuous Integration) szerverünk (Jenkins), és az itt felvett projektet egy Git repositoryból fogja automatikusan letölteni, majd pedig a projekten a következő taskokat fogja végrehajtani:

  • Ellenőrzi, hogy minden PHP állomány szintaktikailag helyes-e.
  • phploc - statisztikát kapunk a projekt méretéről és felépítéséről
  • pdepend - szoftver metrikák használata
  • phpmd - potenciális hibák keresése a forráskódban
  • phpcs - checkstyle, avagy kódolási konvenciók ellenőrzése
  • phpcpd - copy/paste detektálás
  • phpdox - HTML alapú API generálás
  • phpunit - unit tesztek futtatása
  • phpcb - HTML alapú kód böngésző generálás

A telepítést Debian OS-en mutatom be, és Sebastian Bergmann hasonló tartalmú írását vettem alapul. A parancsokat root felhasználóként futtattam.

PEAR csomagok

Az előbb felsorolt eszközök többnyire PEAR csomagban is elérhetők. Telepítsük fel a PEAR-t (és két szükséges PHP extensiont), ha még nincs fent a gépen:

apt-get install php-pear php5-xsl php5-xdebug

Ezután frissítsük a PEAR-t, és telepítsük fel a szükséges csomagokat:

pear update-channels
pear upgrade-all
pear config-set auto_discover 1
pear install pear.phpqatools.org/phpqatools
pear install channel://pear.netpirates.net/phpDox-0.4.0

Ant

Maga a build folyamat ant segítségével történik, a konfigurációs fájlban vannak definiálva a lefuttatandó feladatok (targetek). Telepítsük fel az ant-ot:

apt-get install ant

Jenkins

A Jenkins-hez szükségünk lesz az Oracle JRE-re, ennek a telepítését nem mutatom be, elég különböző az egyes rendszereken. A Jenkins viszont szerencsére elérhető repository-ból, a telepítés ezen fázisa teljesen megegyezik az itt leírtakkal: http://pkg.jenkins-ci.org/debian/

Ha sikerült feltelepíteni, akkor hátra van még a konfiguráció. A rendszerünkben létrejött egy jenkins nevű felhasználó, így az ő nevében állítsuk be a következő dolgokat, nehogy jogosultsági hibába fussunk:

cd /var/lib/jenkins/jobs
sudo -u jenkins git clone git://github.com/sebastianbergmann/php-jenkins-template.git php-template
sudo -u jenkins git config --global user.name "jenkins"
sudo -u jenkins git config --global user.email "jenkins@localhost"

Ezután indítsuk újra a Jenkinst (a telepítést követően el is indult):

/etc/init.d/jenkins restart

Ha sikerrel jártunk, akkor a http://host:8080 URL-en be kell jönnie a felületnek.

A CI szerverünknek még szüksége van egy SSH kulcsra, hogy a Git repositoryhoz csatlakozni tudjon. Ehhez generáljunk neki egy kulcsot. Itt problémába ütköztem, mivel passphrase-t megadva a Jenkins nem boldogul a kapcsolódással. Ezt úgy oldottam meg, hogy passphrase nélküli kulcsot generáltam (akinek van jobb ötlete, ossza meg velem).

Ahhoz, hogy a Jenkins automatikusan megbízzon a host-ban (ahol yes-t kell begépelni első alkalommal, amikor manuálisan csatlakozunk a szerverhez), hozzuk létre a következő fájlt:

/var/lib/jenkins/.ssh/config

És másoljuk bele a következőket:

Host *
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null

Ezzel a szerver konfigurációval végeztünk. Vegyük elő a projektünket.

Projekt felkészítése a build-hez

A projekt gyökerében hozzuk létre az ant, a phpunit, valamint a phpdox konfigurációs XML fájlokat. Ezekre példát itt találtok: https://github.com/szjani/equlib. Ezek többnyire megfelelnek bármely projekt esetén, nyilvánvalóan a könyvtárak (lib, tests, stb.) elérési útvonalát módosítsuk a fájlokban, amennyiben szükséges.

A phpmd, valamint a phpcs konfigurációs állományok a build könyvtárban találhatók, ezekről az eszközök honlapján olvashattok többet.

Buildelés

Navigáljunk a projekt gyökerébe, és adjunk ki az ant parancsot. A projekt méretétől függ, mennyi ideig tart a folyamat, ha minden sikeres volt, akkor egy BUILD SUCCESSFUL feliratot kell látnunk. Ebben az esetben töltsük fel a változtatásokat a Git repositorynkba.

Jenkins pluginok

Ahhoz, hogy a Jenkins végrehajtsa és szép formában megjelenítse a build során készült kimutatásokat és eredményeket, fel kell telepítenünk a következő pluginokat:

  • Checkstyle
  • Clover PHP
  • DRY
  • HTML Publisher
  • Plot
  • PMD
  • Violations
  • xUnit
  • Git

Én a telepítéshez a felületet használtam, amit a “Jenkins Kezelése”, “Kiegészítők Kezelése” útvonalon értem el.

Jenkins felület

  • Kattintsunk az “Új Job” linkre (ez eltérhet, függ a lokalizációtól)
  • Írjuk be a projekt nevet
  • Válasszuk ki az utolsó lehetőséget és írjuk be a mezőbe a php-template szöveget
  • OK
  • Kapcsoljuk ki a “Disable Build” mellől a checkboxot
  • A “Publish HTML reports”-nál az API sorban írjuk át az index.html-t index.xhtml-re
  • Adjuk meg a Git repo elérési útvonalát
  • Mentsük el a “Save” gombbal a konfigurációt

A projekt oldalán az “Építés Most” linkre kattintva tudjuk megkezdeni a buildet.

Ha sikertelen a build, akkor először nézzük meg a felületen a logot, ahol a parancssori kimenetet láthatjuk. Ha valahol mélyebben van a probléma, akkor nézzünk rá a /var/log/jenkins/jenkins.log fájlra is.

Jenkins

comments powered by Disqus