[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-ci-cd-kak-ispolzovat-parametry-usloviya-i-parallelnye-stadii-v-jenkins-pipeline":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":21,"progress":22,"seo":23},198,"kak-ispolzovat-parametry-usloviya-i-parallelnye-stadii-v-jenkins-pipeline",6,"ci-cd","CI\u002FCD","🔄","Как использовать параметры, условия и параллельные стадии в Jenkins Pipeline","**Параметры, условия и параллельные стадии** — это механизмы Declarative Pipeline, которые делают пайплайн гибким: параметры позволяют настраивать сборку при запуске, условия управляют выполнением стадий, а параллельные стадии ускоряют пайплайн.\n\n### Параметры (parameters)\n\nПараметры позволяют задавать входные данные при запуске сборки. Доступные типы: `string`, `choice`, `booleanParam`, `password`, `text`.\n\n```groovy\npipeline {\n    agent any\n    parameters {\n        string(name: 'BRANCH', defaultValue: 'main', description: 'Branch to build')\n        choice(name: 'ENVIRONMENT', choices: ['dev', 'staging', 'production'],\n               description: 'Target environment')\n        booleanParam(name: 'SKIP_TESTS', defaultValue: false, description: 'Skip tests')\n        password(name: 'DEPLOY_TOKEN', description: 'Deployment token')\n    }\n    stages {\n        stage('Build') {\n            steps {\n                echo \"Building branch: ${params.BRANCH}\"\n                sh \"mvn clean package ${params.SKIP_TESTS ? '-DskipTests' : ''}\"\n            }\n        }\n        stage('Deploy') {\n            steps {\n                echo \"Deploying to: ${params.ENVIRONMENT}\"\n            }\n        }\n    }\n}\n```\n\nВажно: при первом запуске пайплайна параметры ещё не существуют — Jenkins создает их после первого прогона. Последующие запуски покажут форму с параметрами.\n\n### Условия (when)\n\nДиректива `when` определяет, при каких условиях выполняется стадия. Основные условия:\n\n| Условие | Описание |\n|---|---|\n| `branch 'main'` | Только для указанной ветки |\n| `expression { ... }` | Произвольное Groovy-выражение |\n| `environment name: 'X', value: 'Y'` | Переменная окружения равна значению |\n| `changeRequest()` | Сборка запущена для Pull Request |\n| `not { ... }` | Отрицание условия |\n| `allOf { ... }` | Все условия выполнены (AND) |\n| `anyOf { ... }` | Хотя бы одно условие выполнено (OR) |\n\n\u003Cdetails>\n\u003Csummary>Пример использования when\u003C\u002Fsummary>\n\n```groovy\nstages {\n    stage('Deploy to Staging') {\n        when {\n            branch 'develop'  \u002F\u002F Только для ветки develop\n        }\n        steps { sh '.\u002Fdeploy.sh staging' }\n    }\n    stage('Deploy to Production') {\n        when {\n            allOf {\n                branch 'main'\n                expression { params.ENVIRONMENT == 'production' }\n            }\n        }\n        steps {\n            input message: 'Deploy to production?', ok: 'Deploy'\n            sh '.\u002Fdeploy.sh production'\n        }\n    }\n    stage('SonarQube') {\n        when {\n            not { changeRequest() }  \u002F\u002F Не для pull request\n        }\n        steps { sh 'mvn sonar:sonar' }\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### Параллельные стадии (parallel)\n\nПараллельные стадии позволяют выполнять несколько задач одновременно, сокращая общее время пайплайна.\n\n```groovy\nstage('Tests') {\n    parallel {\n        stage('Unit Tests') {\n            steps { sh 'mvn test -pl unit-tests' }\n        }\n        stage('Integration Tests') {\n            agent { label 'docker' }\n            steps { sh 'mvn verify -pl integration-tests' }\n        }\n        stage('Security Scan') {\n            steps { sh 'mvn dependency-check:check' }\n        }\n    }\n}\n```\n\nВажно: по умолчанию, если одна параллельная стадия упадет, остальные продолжат выполнение. Чтобы прервать все при первой ошибке, используйте `failFast true`:\n\n```groovy\nstage('Tests') {\n    failFast true\n    parallel {\n        stage('Unit Tests') { steps { sh 'mvn test' } }\n        stage('Integration Tests') { steps { sh 'mvn verify -Pit' } }\n    }\n}\n```\n\n### Комбинирование параметров, условий и параллелизма\n\n\u003Cdetails>\n\u003Csummary>Полный пример\u003C\u002Fsummary>\n\n```groovy\npipeline {\n    agent any\n    parameters {\n        choice(name: 'ENV', choices: ['dev', 'staging', 'prod'], description: 'Target')\n        booleanParam(name: 'RUN_SECURITY', defaultValue: true, description: 'Security scan')\n    }\n    stages {\n        stage('Build') {\n            steps { sh 'mvn clean compile' }\n        }\n        stage('Quality Checks') {\n            parallel {\n                stage('Unit Tests') {\n                    steps { sh 'mvn test' }\n                }\n                stage('Security Scan') {\n                    when { expression { params.RUN_SECURITY } }\n                    steps { sh 'mvn dependency-check:check' }\n                }\n            }\n        }\n        stage('Deploy') {\n            when { expression { params.ENV == 'prod' } }\n            steps {\n                input message: 'Confirm production deploy?', submitter: 'release-managers'\n                sh '.\u002Fdeploy.sh prod'\n            }\n        }\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### Вывод\n\nПараметры, условия и параллельные стадии — три столпа гибкости Declarative Pipeline. Параметры делают пайплайн настраиваемым, `when` — адаптивным к контексту (ветка, PR, окружение), а `parallel` — быстрым.\n\n> **На собеседовании:** часто дают задачу: «Напишите пайплайн, который деплоит на production только из ветки main с ручным подтверждением». Это проверяет знание `when`, `input` и `parameters` одновременно.","","middle",[15,16,17,18,19,20],"pipeline","parallel","jenkins","cicd","parameters","when",[],null,{"title":24,"description":25,"ogTitle":26,"ogDescription":27,"keywords":28,"schemaAnswer":34,"featuredSnippetReady":35},"Parameters, when, parallel в Jenkins Pipeline — примеры — Gymterview","Параметры (string, choice, boolean) задают входные данные. when — условное выполнение стадии. parallel — параллельные стадии для ускорения пайплайна.","Параметры, условия и параллельные стадии в Jenkins Pipeline","parameters — входные данные при запуске. when — условное выполнение (branch, expression). parallel — параллельные стадии для ускорения пайплайна.",[29,30,31,32,33],"Jenkins parameters","Jenkins when условие","Jenkins parallel стадии","параметры Jenkins Pipeline","параллельные стадии Jenkins","Parameters (string, choice, booleanParam, password) задают входные данные при запуске сборки, доступны через params. When определяет условия выполнения стадии (branch, expression, allOf, not). Parallel позволяет запускать стадии параллельно для ускорения пайплайна, например, Unit Tests, Integration Tests и Security Scan одновременно.",true]