Как определить, является ли ветка веткой по умолчанию в файле jenkins? - PullRequest
1 голос
/ 11 февраля 2020

У нас есть многоотраслевой конвейер на jenkins.

Я знаю, что можно проверить, соответствует ли ветвь имени, например,

when {
    branch "master"
}

К сожалению, наша ветвь по умолчанию не называется master, а имя ветка по умолчанию меняется регулярно.

Есть ли способ проверить, является ли данная ветка веткой по умолчанию, не проверяя имя?

when {
    branch is default
}

или что-то в этом роде?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 12 февраля 2020
git ls-remote -q --symref | head -1

Это обходной путь, так как Gitlab & co использует Remote HEAD для пометки «ветви по умолчанию». Мы можем получить удаленные ссылки с помощью «git ls-remote -q --symref».

Удаленная головка будет первой строкой, поэтому мы можем выбрать первую строку с заголовком трубы -1. Это дает нам Ха sh «ветви по умолчанию».

1 голос
/ 11 февраля 2020

Вы можете использовать API вашего SCR, чтобы получить ветку по умолчанию. В зависимости от того, какую SCR вы используете, вызов API будет отличаться.

В GitLab вы можете запросить Project REST API , и в ответе вы найдете поле default_branch содержащий эту информацию

GET /projects/:id

В GitHub вы можете запросить Repositories REST API , и в ответе вы найдете поле default_branch, содержащее эту информацию как хорошо.

GET /repos/:owner/:repo

Будьте осторожны с ответом GitHub, поскольку он содержит 3 поля с именем default_branch, одно для реального репо, одно для родительского репо и последнее для источника Сделки рЕПО. Вы ищете тот на root из json, который является тем для репо, к которому вы обращаетесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...