[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-ci-cd-kakie-osnovnye-sektsii-jenkinsfile-vy-znaete":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":23,"progress":24,"seo":25},197,"kakie-osnovnye-sektsii-jenkinsfile-vy-znaete",6,"ci-cd","CI\u002FCD","🔄","Какие основные секции Jenkinsfile вы знаете","**Секции Jenkinsfile** — это структурные блоки Declarative Pipeline, каждый из которых отвечает за определенный аспект конфигурации пайплайна. Обязательные секции — `pipeline {}`, `agent` и `stages {}`.\n\n### pipeline\n\nКорневой блок, обязательный. Все остальные секции находятся внутри него.\n\n### agent\n\nОпределяет, где выполняется пайплайн:\n\n```groovy\nagent any                          \u002F\u002F Любой доступный агент\nagent none                         \u002F\u002F Агент указывается на уровне stage\nagent { label 'linux' }            \u002F\u002F Агент с меткой\nagent { docker { image 'maven:3.9' } }  \u002F\u002F Docker-контейнер\n```\n\n### stages и stage\n\n`stages {}` содержит упорядоченный список стадий, а `stage('Name')` — отдельная стадия с именем:\n\n```groovy\nstages {\n    stage('Build')   { steps { sh 'mvn compile' } }\n    stage('Test')    { steps { sh 'mvn test' } }\n    stage('Deploy')  { steps { sh '.\u002Fdeploy.sh' } }\n}\n```\n\n### steps\n\nКонкретные шаги внутри стадии — команды, которые нужно выполнить:\n\n```groovy\nsteps {\n    sh 'mvn clean package'           \u002F\u002F Выполнение shell-команды\n    echo 'Hello!'                     \u002F\u002F Вывод сообщения\n    archiveArtifacts '**\u002F*.jar'       \u002F\u002F Архивация артефактов\n    junit '**\u002Fsurefire-reports\u002F*.xml'  \u002F\u002F Публикация результатов тестов\n}\n```\n\n### environment\n\nПеременные окружения, доступные во всем пайплайне или внутри конкретной стадии:\n\n```groovy\nenvironment {\n    APP_VERSION = '1.0.0'\n    NEXUS_URL = credentials('nexus-url')  \u002F\u002F Из Jenkins Credentials\n}\n```\n\n### tools\n\nИнструменты сборки (должны быть предварительно настроены в Jenkins Global Tool Configuration):\n\n```groovy\ntools {\n    maven 'Maven-3.9'\n    jdk 'JDK-17'\n}\n```\n\n### options\n\nГлобальные параметры пайплайна:\n\n```groovy\noptions {\n    timeout(time: 30, unit: 'MINUTES')    \u002F\u002F Максимальное время выполнения\n    timestamps()                           \u002F\u002F Временные метки в логах\n    disableConcurrentBuilds()              \u002F\u002F Запрет параллельных сборок\n    buildDiscarder(logRotator(numToKeepStr: '10'))  \u002F\u002F Хранить 10 последних сборок\n}\n```\n\n### triggers\n\nТриггеры автоматического запуска:\n\n```groovy\ntriggers {\n    cron('H\u002F15 * * * *')         \u002F\u002F Каждые 15 минут\n    pollSCM('H\u002F5 * * * *')       \u002F\u002F Проверка VCS каждые 5 минут\n}\n```\n\n### parameters\n\nВходные параметры, задаваемые при запуске сборки:\n\n```groovy\nparameters {\n    string(name: 'BRANCH', defaultValue: 'main', description: 'Branch to build')\n    choice(name: 'ENV', choices: ['dev', 'staging', 'prod'], description: 'Target env')\n    booleanParam(name: 'SKIP_TESTS', defaultValue: false, description: 'Skip tests')\n}\n```\n\n### post\n\nДействия после выполнения пайплайна (или стадии):\n\n```groovy\npost {\n    always  { junit '**\u002Fsurefire-reports\u002F*.xml' }   \u002F\u002F Всегда\n    success { echo 'Build succeeded' }               \u002F\u002F При успехе\n    failure { mail to: 'dev@company.com', subject: 'Build failed', body: '...' }  \u002F\u002F При ошибке\n    unstable { echo 'Build is unstable' }            \u002F\u002F При нестабильной сборке\n    cleanup { cleanWs() }                             \u002F\u002F Очистка рабочей директории\n}\n```\n\n### when\n\nУсловие выполнения стадии (указывается внутри `stage`):\n\n```groovy\nstage('Deploy') {\n    when { branch 'main' }\n    steps { sh '.\u002Fdeploy.sh' }\n}\n```\n\n### Сводная таблица секций\n\n| Секция | Обязательная | Уровень | Назначение |\n|---|---|---|---|\n| `pipeline` | Да | Корень | Корневой блок |\n| `agent` | Да | pipeline \u002F stage | Где выполнять |\n| `stages` | Да | pipeline | Список стадий |\n| `steps` | Да | stage | Команды |\n| `environment` | Нет | pipeline \u002F stage | Переменные |\n| `tools` | Нет | pipeline | Инструменты |\n| `options` | Нет | pipeline \u002F stage | Настройки |\n| `triggers` | Нет | pipeline | Запуск |\n| `parameters` | Нет | pipeline | Входные данные |\n| `post` | Нет | pipeline \u002F stage | Действия после |\n| `when` | Нет | stage | Условия |\n\n### Вывод\n\nЗнание секций Jenkinsfile позволяет писать чистые и поддерживаемые пайплайны. Обязательные секции — `pipeline`, `agent`, `stages` — формируют каркас, а остальные добавляют гибкость.\n\n> **На собеседовании:** часто просят написать минимальный Jenkinsfile или дополнить существующий. Убедитесь, что знаете разницу между секциями уровня pipeline и stage, особенно `environment`, `options` и `post`, которые могут использоваться на обоих уровнях.","","middle",[15,16,17,18,19,20,21,22],"pipeline","agent","environment","post","jenkins","stages","cicd","jenkinsfile",[],null,{"title":26,"description":27,"ogTitle":28,"ogDescription":29,"keywords":30,"schemaAnswer":36,"featuredSnippetReady":37},"Секции Jenkinsfile — agent, stages, steps, post, environment — Gymterview","Основные секции Declarative Pipeline: pipeline, agent, stages, steps, environment, tools, options, triggers, post. Примеры каждой секции с кодом.","Основные секции Jenkinsfile — полный обзор с примерами","pipeline, agent, stages, steps, environment, tools, options, triggers, post — все секции Declarative Pipeline с примерами Groovy-кода.",[31,32,33,34,35],"секции Jenkinsfile","Jenkinsfile agent","Jenkinsfile stages","Jenkinsfile post","Jenkinsfile environment options","Declarative Pipeline включает секции: pipeline (корневой блок), agent (где выполняется), stages\u002Fstage (стадии), steps (шаги), environment (переменные окружения), tools (JDK, Maven), options (timeout, timestamps), triggers (cron, pollSCM, webhook), post (always, success, failure, cleanup).",true]