🧑‍🔧 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.