В gradle я хотел бы добавить как текущее имя ветки, так и номер фиксации в качестве суффикса к моей версииName. (Почему? Потому что, когда я создаю свое приложение в Jenkins, чтобы выпустить его в HockeyApp, полезно показать, какая ветка и зафиксировать это приложение было построено!)
Поэтому, когда я ввожу это в командной строке, возвращается мое текущее имя ветки:
git rev-parse --abbrev-ref HEAD
То же самое происходит, когда я использую эту строку в Android gradle, используя код в этом, или как показано в этом фрагменте кода gradle:
def getVersionNameSuffix = { ->
def branch = new ByteArrayOutputStream()
exec {
// The command line to request the current branch:
commandLine 'git', 'rev-parse', '--abbrev-ref', 'HEAD'
standardOutput = branch
}
println "My current branch: " + branch
def versionNameSuffix = "-" + branch
// ... some other suffix additions ...
return versionNameSuffix
}
buildTypes {
debug {
applicationIdSuffix ".test"
versionNameSuffix getVersionNameSuffix()
}
}
Результирующий журнал (это именно то, что я хочу):
"Моя текущая ветка: feature/MyFeature"
Однако, когда я создаю свое приложение в задании Дженкинса, он выдаст другой результат:
"Моя текущая ветка: HEAD"
Почему это происходит и как правильно получить мое текущее название ветки в Jenkins?
EDIT:
Я использовал другой подход, который в большинстве случаев возвращает имя branchName, также в Jenkins:
git name-rev --name-only HEAD
Пример вывода в командной строке:
"Моя текущая ветка: feature/MyFeature"
Пример вывода в Jenkins:
"Моя текущая ветка: пульты/происхождение/функция/MyFeature"
Я могу удалить "remotes/origin/", если мне нравится, так что все в порядке!
Но этот подход вызывает разные проблемы (как в подсказке, gradle, так и в Jenkins). Когда я пометил последнее коммит, он не выведет имя ветки, но это:
"Моя текущая ветка: tags/MyTag ^ 0"
ИЗМЕНИТЬ 2:
Третий подход можно найти здесь.
Включая комментарии ниже ответа, я могу использовать grep * для получения приглашения в ветке. Однако я не могу использовать обратную косую черту в коде gradle. Это не удается:
commandLine 'git', 'branch', '|', 'grep', '\\*'
Любые советы?