🧑🔧 Jenkins
CI/CD: Jenkinsfile, этапы, агенты, параметры, учётные данные.
Шпаргалки · Инфраструктура · #jenkins #ci #cd #pipeline
Jenkinsfile (декларативный)
pipeline {
agent any
environment { APP_ENV = 'prod' }
parameters { string(name: 'BRANCH', defaultValue: 'main') }
options { timeout(time: 30, unit: 'MINUTES'); disableConcurrentBuilds() }
stages {
stage('Build') {
steps { sh 'npm ci && npm run build' }
}
stage('Test') {
steps { sh 'npm test' }
post { always { junit 'reports/*.xml' } }
}
stage('Deploy') {
when { branch 'main' }
steps {
withCredentials([string(credentialsId: 'api-token', variable: 'TOKEN')]) {
sh './deploy.sh'
}
}
}
}
post {
failure { echo 'Сборка упала' }
success { archiveArtifacts artifacts: 'dist/**' }
}
}
Агенты
agent { docker { image 'node:22' } } // в контейнере
agent { label 'linux' } // на узле с меткой
agent none // выбирать на каждом этапе
Параллельные этапы
stage('Checks') {
parallel {
stage('Lint') { steps { sh 'npm run lint' } }
stage('Unit') { steps { sh 'npm test' } }
}
}
Основное
| Понятие | Смысл |
|---|---|
| Job / Pipeline | сборочная задача |
| Agent / Node | машина, выполняющая сборку |
| Stage / Step | этап / действие |
| Credentials | пароли, токены, ключи SSH |
| Trigger | запуск по git push (webhook), по расписанию cron('H 2 * * *') |
| Multibranch | автоматические пайплайны по веткам |
| Shared library | общий код для пайплайнов |
Приёмы
- Секреты только через Credentials, не в Jenkinsfile.
- Jenkinsfile лежит в репозитории рядом с кодом.
- Данные Jenkins (
JENKINS_HOME) выносите в том и делайте резервные копии. - Полезные плагины: Git, Pipeline, Blue Ocean, Docker Pipeline, Credentials Binding.