[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-ci-cd-chto-takoe-multibranch-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":20,"progress":21,"seo":22},204,"chto-takoe-multibranch-pipeline",6,"ci-cd","CI\u002FCD","🔄","Что такое Multibranch Pipeline?","**Multibranch Pipeline** — это тип проекта в Jenkins, который автоматически обнаруживает ветки в Git-репозитории, содержащие `Jenkinsfile`, и создаёт для каждой из них отдельный пайплайн.\n\n> Представьте многоэтажный паркинг: каждый новый автомобиль (ветка) при въезде автоматически получает выделенное место (Job) с камерой наблюдения (CI-проверки). Когда автомобиль уезжает (ветка удалена) — место освобождается. Не нужно вручную управлять парковочными местами.\n\n### Как это работает\n\n1. Jenkins сканирует репозиторий и находит все ветки, в которых присутствует `Jenkinsfile`.\n2. Для каждой такой ветки автоматически создаётся отдельная Job.\n3. При появлении новой ветки — создаётся новый Job; при удалении ветки — Job удаляется.\n4. Pull Request \u002F Merge Request автоматически получают свой пайплайн, а результат CI отображается в Git-платформе.\n\n### Преимущества\n\n- **Автоматизация** — не нужно вручную создавать Job для каждой ветки.\n- **Индивидуальные пайплайны** — каждая ветка может иметь свой `Jenkinsfile` (например, в release-ветке добавлены стадии деплоя).\n- **PR-статусы** — статус сборки отображается прямо в Pull Request на GitHub\u002FGitLab\u002FBitbucket.\n- **Удобная навигация** — Jenkins UI группирует все ветки одного репозитория.\n- **Автоочистка** — удалённые ветки автоматически убираются из Jenkins.\n\n### Пример Jenkinsfile для Multibranch Pipeline\n\n\u003Cdetails>\n\u003Csummary>Полный пример с условным выполнением стадий по веткам\u003C\u002Fsummary>\n\n```groovy\npipeline {\n    agent { label 'java17' }\n\n    stages {\n        stage('Build') {\n            steps { sh 'mvn clean compile' }\n        }\n        stage('Test') {\n            steps { sh 'mvn test' }\n        }\n        stage('SonarQube') {\n            when { anyOf { branch 'main'; branch 'develop' } }\n            steps { sh 'mvn sonar:sonar' }\n        }\n        stage('Deploy to Nexus') {\n            when { branch 'main' }\n            steps { sh 'mvn deploy -DskipTests' }\n        }\n        stage('Deploy to Dev') {\n            when { branch 'develop' }\n            steps { sh '.\u002Fdeploy.sh dev' }\n        }\n        stage('Deploy to Production') {\n            when { branch 'main' }\n            steps {\n                input message: 'Deploy to production?'\n                sh '.\u002Fdeploy.sh production'\n            }\n        }\n    }\n\n    post {\n        always { junit '**\u002Fsurefire-reports\u002F*.xml' }\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### Полезные переменные окружения\n\n| Переменная | Описание | Пример значения |\n|---|---|---|\n| `env.BRANCH_NAME` | Имя текущей ветки | `feature\u002FABC-123` |\n| `env.CHANGE_ID` | Номер Pull Request (если сборка для PR) | `42` |\n| `env.CHANGE_TARGET` | Целевая ветка PR | `main` |\n| `env.CHANGE_AUTHOR` | Автор PR | `ivanov` |\n\n### Вывод\n\nMultibranch Pipeline — стандартный подход для проектов с активным ветвлением. Он автоматизирует создание и удаление джоб, обеспечивает CI-проверки для каждой ветки и Pull Request, и хорошо сочетается с GitHub Flow и Git Flow.\n\n> **На собеседовании:** часто спрашивают, как Multibranch Pipeline узнаёт о новых ветках. Ответ: Jenkins периодически сканирует репозиторий (по настройке) или получает webhook от Git-сервера. При обнаружении ветки с `Jenkinsfile` — автоматически создаётся Job.","","middle",[15,8,16,17,18,19],"pipeline","jenkins","pull-request","branches","multibranch",[],null,{"title":23,"description":24,"ogTitle":25,"ogDescription":26,"keywords":27,"schemaAnswer":37,"featuredSnippetReady":38},"Что такое Multibranch Pipeline в Jenkins — Gymterview","Multibranch Pipeline в Jenkins: автоматическое создание пайплайнов для каждой ветки с Jenkinsfile, поддержка Pull Request, условные стадии по имени ветки.","Multibranch Pipeline в Jenkins: автоматические пайплайны для веток — Gymterview","Как Multibranch Pipeline создает отдельный пайплайн для каждой ветки. Условные стадии, Pull Request, env.BRANCH_NAME.",[28,29,30,31,32,33,34,35,36],"Multibranch Pipeline","Jenkins ветки","Jenkinsfile","branch Jenkins","Pull Request CI","BRANCH_NAME","CHANGE_ID","when branch","Java CI\u002FCD","Multibranch Pipeline — тип проекта Jenkins, автоматически создающий отдельный пайплайн для каждой ветки репозитория, содержащей Jenkinsfile. Jenkins сканирует репозиторий, находит ветки с Jenkinsfile и создает Job для каждой. При появлении новой ветки — создается Job, при удалении — удаляется. Pull Request автоматически получают свой пайплайн. Переменная env.BRANCH_NAME содержит имя ветки, env.CHANGE_ID — номер PR.",true]