🟡 Intermediate

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.