Jenkins

Jenkins — это открытая платформа автоматизации, написанная на Java, которая поддерживает сборку, развертывание и автоматизацию любого проекта. Jenkins является одним из самых популярных инструментов для реализации CI/CD процессов.

Основные возможности Jenkins

  • Continuous Integration — автоматическая сборка при изменениях в коде
  • Continuous Deployment — автоматическое развертывание
  • Pipeline as Code — описание процессов в коде
  • Плагины — огромная экосистема расширений
  • Распределенная сборка — master/slave архитектура

Типы проектов в Jenkins

  • Freestyle Project — простые задачи через GUI
  • Pipeline — сложные процессы через код
  • Multibranch Pipeline — автоматическое создание пайплайнов для веток
  • Organization Folders — сканирование организаций GitHub

Пример Jenkinsfile

 1pipeline {
 2    agent any
 3
 4    stages {
 5        stage('Checkout') {
 6            steps {
 7                git 'https://github.com/user/repo.git'
 8            }
 9        }
10
11        stage('Build') {
12            steps {
13                sh 'npm install'
14                sh 'npm run build'
15            }
16        }
17
18        stage('Test') {
19            steps {
20                sh 'npm test'
21            }
22            post {
23                always {
24                    junit 'test-results.xml'
25                }
26            }
27        }
28
29        stage('Deploy') {
30            when {
31                branch 'main'
32            }
33            steps {
34                sh 'docker build -t myapp .'
35                sh 'docker push myregistry/myapp'
36            }
37        }
38    }
39}

Популярные плагины

  • Git Plugin — интеграция с Git
  • Docker Plugin — работа с контейнерами
  • Slack Plugin — уведомления
  • BlueOcean — современный UI
  • Pipeline Plugin — пайплайны как код

Установка Jenkins

Для установки Jenkins используй один из следующих способов:

 1# Через Docker
 2docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
 3
 4# На Ubuntu/Debian
 5wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
 6sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
 7sudo apt update
 8sudo apt install jenkins
 9
10# Через Kubernetes с Helm
11helm install jenkins jenkins/jenkins

Best Practices для Jenkins

  • Используй Pipeline as Code вместо GUI конфигурации
  • Храни секреты в Jenkins Credentials
  • Настрой автоматические бэкапы
  • Используй агентов для распределения нагрузки
  • Регулярно обновляй Jenkins и плагины

FAQ

Чем Jenkins отличается от GitHub Actions?

Jenkins более гибкий и мощный, но требует собственной инфраструктуры. GitHub Actions проще в использовании и интегрирован с GitHub.

Как обеспечить безопасность Jenkins?

Настрой аутентификацию, используй HTTPS, регулярно обновляй, ограничь доступ к серверу и используй Jenkins Credentials для секретов.