Jak využíváte Jenkins pro PHP aplikace? rubrika: Programování: Jiné

3 Milan Pála
položil/-a 14.5.2015

Ahoj, po dlouhých bojích jsme přeprali v práci Jenkins CI. Chtěli bych ho využít co možná nejvíce pro naše PHP aplikace založené na Nette, testované Nette Testerem, závislostmi stahovanými přes Composer a hostovanými na Githubu. Rád bych proto, kdybychom se zde navzájem inspirovali svými zkušenostmi.

Takže:

  • kód máme na Githubu
  • Jenkins nám běží v kanceláři na vývojovém serveru s Debianem
  • Jenkins spouští buildy na základě notifikace z Githubu
  • na Github přistupuji přes SSH klíče

Pro statické HTML projekty využíváme Jenkins jako aktualizační nástroj, kdy na serveru máme rozjeté instance aplikací (master, případně další instance testovacích větví) a Jenkins spouští git pull nad svojí aplikací pomocí jednoduchého bashového příkazu. Tady se mi nepodařilo přimět Jenkinse, aby spustil job bez nutnosti stahování kódu. Dokud jsem neměl přístup ke kódu nastavený v "Source Code Management", tak se mi nepárovaly hooky z Githubu. Mě by stačilo, kdyby se po hooku spustil build, který mi jen zavolá pár příkazů a zaktualizuje projekty ve /var/www/.

Pro plnohodnotné projekty s PHP a testy se navíc spouští testy opět pomocí jednoduchého příkazu v jednom z kroků buildu. Při neúspěšném buildu nám odchází e-mail a zároveň notifikace na Github. Přiznám se, že tuhle notifikaci nějak nikde nevidím. Tento job není ani tak důležitý pro testování všech větví (právě kvůli tomu, že se nám nějak nepáruje výsledek ke všem commitům), ale hlavně pro master.

Dále máme rozjeté buildování pull requestů jako samostatný job. Na začátku nám to pošle notifikaci do pull requestu na GH, po jeho dokončení také. Tady už je důležité, aby to testovalo všechno - před mergem je výsledek testů stěžejní. To funguje celkem v pořádku.

Rozjel jsem i plugin na build status obrázek, který máme v Readme. Neumím do něj ale dát název větve, takže to ukazuje poslední sestavení z prvního jobu, ať už proběhlo na jakékoliv větvi. Všimnul jsem si, že ten obrázek jde parametrizovat číslem sestavení, ale to neznám v v kódu na Githubu. Nebo ano?

Nemáme statickou analýzu kódu, lint, statistiku pokrytí ani další věci. To mi nepřijde tak důležité. Ačkoliv Clover plugin jsem chtěl rozjet, ale výsledný coverage.xml je v adresáři s číslem sestavení, ale já musím uvést do nastavení pluginu cestu ke coverage.xml souboru a neumím to pospárovat.

Nepoužíváme ant, ani nic podobného. Pokud potřebuji po testech např. vygenerovat dokumentaci, tak si přidám další krok build procesu.

Co ostatní? Jak využíváte Jenkins na PHP a ideálně Git(hub/lab) vy?

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.