С Multibranch вы получаете один Jenkinsfile на ветку. Без этого вы не можете. В этом главное отличие.
С файлом на ветку вы можете иметь отдельные инструкции о том, как именно построить эту ветку (понятие «конфигурация как код»). Например, если у вас есть 5 контейнеров, у вас может быть пять этапов «Сборка контейнера X» (возможно, параллельно) и пять этапов «Тестирование контейнера X» (так же). В вашей новой ветке вы разрабатываете новый контейнер, поэтому в Jenkinsfile этой ветки * теперь у вас может быть шесть этапов сборки и шесть этапов тестирования вместо пяти. Теперь под контролем исходного кода любая ветвь, которая происходит от обычной ветки (веток), будет наследовать свой Jenkinsfile (и собирать / тестировать 5 контейнеров), в то время как любая ветвь над этой новой веткой будет наследовать , что Jenkinsfile (и build / проверить 6 контейнеров) без необходимости что-либо менять.
С одним Jenkinsfile это может быстро запутаться.
Это полностью ортогонально переменной ветвления, которую вы можете проверить и воздействовать на нее иначе. В нашей среде у нас есть оба: Jenkinsfile на ветку и проверка переменной ветки во всех Jenkinsfile. Это сводит к минимуму усилия по слиянию.