Jenkins je open sourcový automatizační server, který je napsaný v Javě. Jenkins pomáhá automatizovat část procesu vývoje software s kontinuální integrací a usnadňuje technické aspekty kontinuálních dodávek. Jedná se o serverový systém, který běží na servletových kontejnerech jako je Apache Tomcat.
Jenkins podporuje nástroje na kontrolu verzování jako je například AccuRev, CVS, Subversion, Git, Mercurial, Perforce, ClearCase nebo RTC. Dokáže spouštět projekty v Apache Ant, Apache Maven a sbt stejně jako samostatné shell skripty a batch příkazy Windows. Tvůrcem Jenkinsu je Kohsuke Kwaguchi. Je zpřístupněn pod MIT licencí.
Pluginy
Použití Jenkinsu je možné i pro projekty, které jsou psané v jiném jazyce, nežli je Java. Pluginy pak umožňují integraci s většinou systémů na správu verzí a řízení kvality. Existují pluginy, které mění zobrazení nebo přidávají novou funkcionalitu. Sada pluginů podporuje jednotkové testování a generování reportů v různých formátech a automatizované testování.
Mailer. Umožňuje konfiguraci emailových notifikací ohledně build výsledků. Jenkins rozesílá emaily, pokud jsou splněné specifické podmínky, například spadlý build, nestabilní build, úspěšný build po neúspěšném buildu nebo spadlý build po úspěšném buildu.
Credentials. Umožňuje ukládání uživatelských údajů pro Jenkins. Nabízí standardizované API pro další pluginy, aby ukládaly a získávaly různé typy přihlašovacích údajů.
Monitoring external jobs. Umožňuje sledovat výsledky externě spuštěných jobů.
SSH Agents. Tento plugin umožňuje správu agentů (dříve označovaných jako otroci) běžících na *nix strojích přes SSH. Přidává nové typy metod na spouštění agentů.
Javadoc. Tento plugin přidává podporu Javadocu do Jenkinsu. Ta dříve byla součástí jádra Jenkinsu, ale následně byla oddělená do samostatného pluginu.
Výhody použití Jenkinsu
Open source. Jenkins je možné stáhnout zdarma a má zpřístupněný zdrojový kód. Má širokou komunitu vývojářů, kteří si aktivně pomáhají, a přispívají tak k projektu Jenkins.
Široká škála pluginů. Jenkins má mnoho pluginů, které dávají možnost rozšířit funkcionalitu a přizpůsobit tak Jenkins konkrétnímu projektu, na kterém je využíván.
Integrace nástrojů. Jenkins nabízí integraci většiny nejpoužívanějších nástrojů jako je CVS, Subversion, Git, Apache Ant, Maven nebo Kubernetes a Docker.
Flexibilita. Díky pluginům a otevřené architektuře je možné Jenkins využít pro různě velké projekty s různou komplexitou. Není stanoven limit na druh a počet serverů, které je možné integrovat, proto je možné pracovat v týmech napříč planetou.
Praktické API. API umožňuje zvolit, kolik dat si zobrazíte. Díky tomu se dá dobře přizpůsobit specifickým účelům.
Jednoduché použití. Jenkins má aktivní komunitu, často aktualizovanou dokumentaci a podporu pro všechny hlavní operační systémy. Je možné Jenkins zavést relativně rychle.
Nevýhody použití Jenkinsu
Nepředvídatelné náklady. Náklady na hosting serveru se obtížně odhadují. Není vždy možné odhadnout, jakou zátěž, podle počtu commitů, objemu kódu a dalších aspektů, bude server muset zvládnout. Proto je nákladová stránka relativně nepředvídatelná, přestože samotný program je bezplatný.
Zodpovědnost. Obvykle je správa Jenkinsu řízena jedním uživatelem, což vede k problému s určením zodpovědnosti v případě problému s přidaným kódem. Existuje trackování v rámci serveru na kontrolu verzí, ale Jenkins sám o sobě toto neřeší.
Absence funkcionalit pro spolupráci. Jenkins neumožňuje vývojáři vidět commity ostatních členů týmu. To znamená, že sledovat pokroky týmu je u větších týmů relativně složité. Pro release manažera to pak může působit mnoho problémů.
Absence analytických nástrojů. Jenkins neobsahuje dostatečně rozsáhlý nástroj na analýzu vývojového cyklu.
Náročnost na lidskou práci. Jenkins server potřebuje speciální pozornost a často i vyhrazený čas vývojáře. To přidává náročnost projektu na práci a může rovněž ovlivnit nákladovou stránku projektu.