Конфигурация источника ветвей GitSCMExtension или GitSCM для извлечения всех / некоторых дополнительных удаленных ветвей в конвейере Jenkins multi-branch

#git #jenkins #jenkins-declarative-pipeline #gitversion #jenkins-git-plugin

#git #дженкинс #jenkins-декларативный конвейер #gitversion #jenkins-git-plugin

Вопрос:

Я пытался найти конфигурацию источника ветки для извлечения, по крайней мере develop , и master удаленных ветвей, в дополнение к ветке, для которой выполняется задание, с нулевым успехом.

Мой вариант использования — определение версии из имен ссылок git и фиксация сообщений с помощью GitVersion. Пока что единственное решение, которое я нашел, является громоздким и непереносимым, поскольку оно требует предоставления учетных данных для командной строки git, когда не выполняется с локальным ( file:// ) репозиторием.

 sh "git fetch origin master:master"
sh "git fetch origin develop:develop"
 

должен ли я написать пользовательское GitSCMExtension решение для получения такого поведения?

Ответ №1:

Похоже, ссылки для удаленных ветвей ( origin / {branch} ) фактически извлекаются, только не создаются соответствующие локальные отслеживающие ветви ( origin / {branch} -> {branch} ), что отключает GitVersion. Похоже, что сообщение об ошибке, которое оно выдает, напрямую противоречит этой конфигурации по умолчанию:

 System.InvalidOperationException: Could not find a 'develop' or 'master' branch, neither locally nor remotely.
 

Решение найдено в https://github.com/GitTools/GitVersion/issues/1049#issuecomment-585878737

которая заключалась в настройке GitVersion для фактического учета /origin/master и /origin/develop

   develop:
    # (..)
    regex: (^dev(elop)?(ment)?$|^origin/dev(elop)?(ment)?$)
  master:
    # (..)
    regex: (^master$|^origin/master$)