Я использую работу многоотраслевого конвейера jenkins для выполнения различных проверок и слияний между ветвями и тегами в одном репозитории. Выборка SCM выполняется с использованием этих расширений scm, чтобы убедиться, что все ветви и теги выбраны в рабочей области (параметр «Honor refspe c on initial clone» не проверен):
[[$class: 'PruneStaleBranch'], [$class: 'CloneOption', noTags: false, reference: '', shallow: false]]
Работает нормально для первой сборки, когда рабочее пространство пусто:
git fetch --tags --force --progress -- https://scmServer/repo.git +refs/heads/*:refs/remotes/origin/*
Но не в последующих сборках, где jenkins выбирает только ветвь, связанную с заданием:
git fetch --tags --force --progress --prune -- https://scmServer/repo.git +refs/heads/release/10.0.0:refs/remotes/origin/release/10.0.0
В этом случае другие ветви, такие как master, не выбираются и устаревают в рабочей области по сравнению с исходной.
Одним неприятным решением было бы стирать рабочее пространство при каждой сборке, но я бы предпочел этого избежать. Как я могу заставить Дженкинса выбрать все ветки для всех сборок? Одним из объяснений такого поведения может быть l ie в названии опции "Honor refspe c on initial clone". Поскольку я не в исходном клоне, этот параметр может не применяться, и поведение по умолчанию в не начальных сборках выглядит так, чтобы соблюдать refspe c.