Jenkins — Klasický CI/CD server
Jenkins je open-source automatizačný server, ktorý je na trhu už od roku 2011. Napriek vzniku modernejších alternatív zostáva jedným z najrozšírenejších CI/CD nástrojov na svete.
Čo je Jenkins
Jenkins je self-hosted CI/CD server napísaný v Jave. Pôvodne vznikol ako Hudson (2004), neskôr sa premenoval na Jenkins. Jeho sila spočíva v obrovskom ekosystéme pluginov (1800+) a flexibilite — dokáže automatizovať prakticky čokoľvek.
Jenkins beží na vlastnom serveri, čo dáva plnú kontrolu nad infraštruktúrou, ale vyžaduje údržbu, aktualizácie a škálovanie.
Jenkinsfile — Pipeline as Code
Moderný Jenkins používa deklaratívne pipeline definované v Jenkinsfile priamo v repozitári:
pipeline {
agent any
environment {
REGISTRY = 'registry.example.com'
}
stages {
stage('Build') {
steps {
sh 'npm ci'
sh 'npm run build'
}
}
stage('Test') {
parallel {
stage('Unit') {
steps {
sh 'npm test'
}
}
stage('Lint') {
steps {
sh 'npm run lint'
}
}
}
}
stage('Deploy') {
when {
branch 'main'
}
steps {
sh './deploy.sh'
}
}
}
post {
failure {
mail to: 'team@example.com',
subject: "Build Failed: ${env.JOB_NAME}",
body: "Check: ${env.BUILD_URL}"
}
}
}
Okrem deklaratívneho štýlu existuje aj scripted pipeline (plný Groovy), ktorý je flexibilnejší, ale ťažšie čitateľný.
Architektúra a Plugins
Jenkins funguje na princípe master-agent:
- Master (Controller) — riadi pipeline, UI, konfiguráciu
- Agent (Node) — vykonáva joby (môže byť VM, Docker container, Kubernetes pod)
Kľúčové pluginy:
| Plugin | Účel |
|---|---|
| Pipeline | Deklaratívne a scripted pipelines |
| Blue Ocean | Moderné UI pre pipeline vizualizáciu |
| Docker Pipeline | Build a beh v Docker kontajneroch |
| Kubernetes | Dynamické agenty v K8s |
| Credentials | Bezpečná správa secrets |
| Git | Integrácia s Git repozitármi |
Praktické použitie
- Enterprise prostredia s prísnymi bezpečnostnými požiadavkami
- On-premise infraštruktúra bez prístupu ku cloud CI/CD
- Komplexné pipeline s custom logikou (Groovy scripting)
- Migračné projekty — Jenkins často beží paralelne s novšími nástrojmi
Best Practices
- Vždy používajte Pipeline as Code (Jenkinsfile v repo), nie manuálnu konfiguráciu cez UI
- Obmedzte používanie scripted pipeline — deklaratívny štýl je bezpečnejší
- Pravidelne aktualizujte Jenkins a pluginy (bezpečnostné záplaty)
- Používajte Shared Libraries pre znovupoužiteľnú logiku naprieč projektmi
- Agentov spúšťajte v kontajneroch pre izoláciu a reprodukovateľnosť
- Secrets spravujte cez Credentials plugin, nikdy v Jenkinsfile
Jenkins je veterán, ktorý stále slúži spoľahlivo. Ak však začínate nový projekt, zvážte modernejšie alternatívy ako GitHub Actions alebo GitLab CI.