Tweetjeim

Legújabb hozzászólások

szjani

2014. április 18. 22:07

Köszi! Képeket valóban akartam, de nincs normális eszközöm hozzá, ami igényes kimenetet is produkál. :( - Hexagonal arch...

inf3rno

2014. április 18. 14:23

Jó cikk, nekem teljesen érthető volt, szépek a példák is. Annyi megjegyzésem lenne, hogy egy kép többet mond ezer szónál...

Jordan

2014. április 1. 17:31

Interesting project. I recommend using ORM Designer (www.orm-designer.com)in conjunction with Doctrine. It's a great to...

mindegy

2014. február 4. 14:55

Tetszik! A DDD-ről, CQRS-ről még nem hallottam de ha ezekkel így lehet szoftvert fejleszteni, akkor rossz már nem lehet....

szjani

2013. június 7. 21:38

"Maga az event egy string..." - itt valóban pongyolán fogalmaztam, javítom. A több esemény kezelésére a példa:...

Jenkins és a PHP

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
  • 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
  • JDepend
  • 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

  1. Kattintsunk az "Új Job" linkre (ez eltérhet, függ a lokalizációtól)
  2. Írjuk be a projekt nevet
  3. Válasszuk ki az utolsó lehetőséget és írjuk be a mezőbe a php-template szöveget
  4. OK
  5. Kapcsoljuk ki a "Disable Build" mellől a checkboxot
  6. A "Publish HTML reports"-nál az API sorban írjuk át az index.html-t index.xhtml-re
  7. Adjuk meg a Git repo elérési útvonalát
  8. 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

  • Az e-mail cím nem jelenik meg az oldalon, bizalmasan kezelem.

szjani

2012. június 21. 07:58

Szia! A Continuous Integration (http://en.wikipedia.org/wiki/Continuous_integration) egyáltalán nem múló divat, a Jenkins pedig az egyik legismertebb megoldás. Nagy cégek is használják, nyugodtan építs rá. Örülök, hogy megtetszett :)

mabau

2012. június 21. 06:44

Szia, köszi ezt a kis ízelítőt a Jenkinsből, nagyon tetszett, fel is telepítettem magamnak, igaz és Windows alatt, ahol egy egyszerű, szokásos telepítővel kell felrakni. Próbáltam megérteni, hogy mi a Jenkins lényege, de eddig még nem sikerült :) most lehet, hogy hülyeséget írok, de nekem olyannak tűnik, mint egy projekt követő program + egy git-es verziókövető. A folyamatok közé pedig mindenféle pluginokat lehet "szúrni". Van valakinek tapasztalata céges környezetben a Jenkinssel? Érdemes rá komolyan építeni? Vagy csak egy múló divat? Elnézést a sok kérdésért :)

Az adatbázis kezeléshez Doctrine-t használok Az oldal Zend Framework-re épül