Ответ
Конвейер в Jenkins описывается в файле Jenkinsfile и определяет этапы сборки, тестирования и развертывания. Основные стили — Declarative (декларативный) и Scripted (скриптовый).
Пример Declarative Pipeline для Java-приложения:
pipeline {
agent any // Запуск на любом доступном агенте
options {
timeout(time: 1, unit: 'HOURS') // Таймаут на выполнение
}
stages {
stage('Build') {
steps {
sh 'mvn clean package -DskipTests' // Сборка артефакта
archiveArtifacts artifacts: 'target/*.jar', fingerprint: true // Сохранение артефакта
}
}
stage('Test') {
steps {
sh 'mvn test' // Запуск unit-тестов
}
post {
always {
junit 'target/surefire-reports/*.xml' // Публикация отчетов о тестах
}
}
}
stage('Deploy to Staging') {
when {
branch 'main' // Этап только для ветки main
}
steps {
sh 'kubectl apply -f k8s/staging-deployment.yaml' // Развертывание в staging-кластер Kubernetes
}
}
}
post {
failure {
emailext (
subject: 'Сборка ${env.JOB_NAME} - ${env.BUILD_NUMBER} провалилась',
body: 'Проверьте консольный вывод: ${env.BUILD_URL}',
to: 'team@example.com'
) // Уведомление при неудаче
}
}
}
Ключевые элементы:
agent: Определяет, где выполняется конвейер (Docker, Kubernetes, конкретная нода).stagesиstage: Логические блоки, разделяющие процесс.steps: Конкретные команды внутри этапа.post: Блок для действий после завершения этапа или всего конвейера (уведомления, очистка).when: Условное выполнение этапа (по ветке, тегу, изменению в определенной директории).