====== Jenkins ====== **Jenkins** je open-source automatizační server napsaný v jazyce Java. Pomáhá vývojářům automatizovat části procesu vývoje softwaru, jako je sestavování (build), testování a nasazování (deploy), čímž usnadňuje implementaci [[CI/CD|průběžné integrace a doručování]]. ===== Hlavní vlastnosti ===== * **Open-source:** Zcela zdarma a spravovaný komunitou. * **Pluginy:** Existuje přes 1 800 pluginů, které umožňují Jenkins propojit prakticky s čímkoliv (Docker, Kubernetes, Slack, Jira, různé cloudové služby). * **Distribuované sestavování:** Jenkins může delegovat práci na více "agentů" (slave uzlů), což umožňuje paralelní sestavování na různých operačních systémech. * **Pipeline as Code:** Moderní způsob definování procesů pomocí souboru **Jenkinsfile** (psaném v jazyce Groovy). ===== Jak funguje Jenkins Pipeline? ===== Pipeline je sada kroků, které Jenkins provádí. Rozlišují se dva typy zápisu: - **Declarative Pipeline:** Novější, přehlednější a doporučený formát (začíná klíčovým slovem ''pipeline''). - **Scripted Pipeline:** Starší, založený přímo na Groovy, poskytuje maximální flexibilitu za cenu vyšší složitosti. ==== Příklad jednoduché deklarativní pipeline (Jenkinsfile) ==== pipeline { agent any stages { stage('Build') { steps { echo 'Kompiluji kód...' } } stage('Test') { steps { echo 'Spouštím unit testy...' } } stage('Deploy') { steps { echo 'Nasazuji do produkce...' } } } } ===== Srovnání: Jenkins vs. GitHub Actions ===== ^ Vlastnost ^ Jenkins ^ GitHub Actions ^ | **Správa** | Musíte si ho sami nainstalovat a spravovat (Self-hosted). | Hostováno GitHubem (SaaS), ale lze i vlastní agenty. | | **Konfigurace** | Velmi komplexní, přes GUI nebo Groovy. | Jednoduchá, přes YAML soubory. | | **Rozšiřitelnost** | Obrovské množství pluginů (často starších). | Moderní "Actions" sdílené v Marketplace. | | **Vhodnost** | Složité firemní on-premise systémy. | Moderní cloud-native vývoj a open-source. | ===== Výhody a nevýhody ===== * **(+) Flexibilita:** Neexistuje proces, který by v Jenkinsu nešel zautomatizovat. * **(+) Nezávislost:** Máte plnou kontrolu nad svými daty a infrastrukturou. * **(-) Údržba:** Musíte se starat o aktualizace serveru, bezpečnost a pluginy (tzv. "Plugin Hell"). * **(-) Uživatelské rozhraní:** Design vypadá ve srovnání s moderními nástroji zastarale. ---- > **Tip:** Pokud začínáte s novým projektem na GitHubu, pravděpodobně bude lepší volbou **GitHub Actions**. Pokud ale pracujete ve velké korporaci s vlastními servery a složitým procesem, **Jenkins** je stále králem. //Související: [[CI/CD]], [[DevOps]], [[Docker]], [[https://www.jenkins.io|Oficiální web Jenkins]]//