Гайды
Jenkins: декларативные пайплайны
Jenkinsfile, agent и Docker, credentials, Shared Libraries и эксплуатация мастера.
~9 мин чтения
Jenkins: декларативные пайплайны
Jenkins — сервер CI с pipeline as code (Jenkinsfile в репозитории). Declarative Pipeline — структура pipeline { agent, stages, post }. Альтернативы — CI/CD: GitLab и GitHub Actions; артефакты часто в Docker — Docker: контейнеризация.
1. Минимальный Jenkinsfile
pipeline {
agent any
options {
timestamps()
timeout(time: 30, unit: 'MINUTES')
}
stages {
stage('Checkout') {
steps { checkout scm }
}
stage('Test') {
steps {
sh 'python -m pip install -r requirements.txt'
sh 'pytest -q'
}
}
stage('Build image') {
when { branch 'main' }
steps {
sh 'docker build -t myapp:${GIT_COMMIT} .'
}
}
}
post {
failure { echo 'notify slack' }
}
}
2. Agent и Docker
agent {
docker { image 'python:3.12' args '-u root' }
}
Или kubernetes {} pod template для агентов в k8s.
3. Credentials
withCredentials([usernamePassword(...)]) — не логировать значения.
Параметры сборки (parameters { string(name: 'TAG', defaultValue: 'main') }) и buildDiscarder в options делают историю билдов предсказуемой. Для артефактов используйте archiveArtifacts или публикацию в Nexus/Artifactory, а не только workspace агента.
4. Shared Libraries
Вынесение Groovy в отдельный git-репозиторий для переиспользования шагов между командами.
5. Плюсы и минусы
| Плюсы | Минусы |
|---|---|
| Гибкость, плагины | Эксплуатация мастера, безопасность плагинов |
| Зрелая модель прав | Groovy порог входа выше YAML Actions |
6. Безопасность и стабильность
Настройте Script Approval и права на запуск, чтобы непроверенный Groovy из PR не получал полный доступ к агенту. Replay на prod-джобах лучше запретить политикой. В agent { docker {} } не монтируйте Docker socket без изоляции — предпочтительны Kaniko/buildkit sidecar или отдельный build-нод. Логи и артефакты с секретами — маскирование в консоли и короткий TTL.
7. Параллельные стадии и матрица
Несколько stage внутри parallel { } ускоряют lint/test/integration. Для версий языка/ОС — matrix (declarative matrix axis или scripted); кэш агентов (tool + workspace) согласуйте с изоляцией.
8. Чек-лист
- Обновления Jenkins LTS и плагинов по расписанию.
- Job DSL / CasC (Configuration as Code) для воспроизводимости.
- Разделение агентов по нагрузке и trust zone.
- В
optionsзадавайтеbuildDiscarder,timeoutиtimestampsна типовых пайплайнах. - Уведомления в
post { always/unstable }с ссылкой на build и commit.
Дальше: CI/CD: GitLab и GitHub Actions · тег Jenkins