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 для секретов.