Как получить git короткий хэш в переменной в Jenkins, запущенной в Windows 2008
Я пытаюсь получить короткий хэш git в переменной. Я попытался установить переменную GIT_COMMIT_SHORT для запуска 'git rev-parse --short HEAD', но это не сработало.
Мне нужна эта переменная для перехода к ant build script, поэтому имя пакета включает этот короткий хэш.
Я запускаю Jenkins на сервере Windows 2008.
Спасибо
Ответы
Ответ 1
Я предлагаю вам использовать плагин EnvInject для загрузки этого параметра из создаваемого файла свойств, который содержит хэш.
Извлеките результат вашей команды git
в сформированный файл key=value
в рабочем пространстве задания и загрузите его с указанным плагином.
Я использовал его для таких нужд, и это очень просто.
Надеюсь, это поможет.
EDIT:
Как написать файл свойств в окнах:
@for /f "delims=" %l in ('git command') do @echo hash=%l >> hash.properties
Затем вы можете загрузить hash.properties
с помощью плагина.
Ответ 2
Возможно, самым простым способом добиться желаемого результата будет использование маркера GIT_REVISION makro, например:
${GIT_REVISION,length=6}
Посмотрите https://wiki.jenkins-ci.org/display/JENKINS/Token+Macro+Plugin для более подробной информации.
Надеюсь, что это поможет,
Ян
Ответ 3
На jenkins 2.73 с git-плагином этот шаблон-заполнитель работает
${GIT_REVISION:0:7}
Я использовал его с подключаемым модулем доставки, чтобы установить имя задачи.
Например, здание GIT rev. ${GIT_REVISION:0:7}
Ответ 4
Без каких-либо дополнительных плагинов вы можете получить фиксацию, используя следующую команду в Jenkins script (шаг выполнения команды "Выполнение Windows" ):
for /f %%i in ('git rev-parse HEAD') do set GITHASH=%%i
В командной строке вы должны использовать одиночный %
вместо %%
:
for /f %%i in ('git rev-parse HEAD') do set GITHASH=%%i
Ответ 5
Не уверен, что это применимо, но я искал способ сделать это в конвейере Дженкинса. Я закончил тем, что использовал это ${GIT_REVISION[0..7]}
Ответ 6
Еще один возможный вариант для трубопровода Blue Ocean:
pipeline {
...
environment {
GIT_COMMIT_SHORT = sh(
script: "printf \$(git rev-parse --short ${GIT_COMMIT})",
returnStdout: true
)
}
...
Ответ 7
Это сработало для меня в конвейере jenkins с использованием плагина git:
SHORT_COMMIT = "${GIT_COMMIT[0..7]}"