Подтвердить что ты не робот

Как получить git короткий хэш в переменной в Jenkins, запущенной в Windows 2008

Я пытаюсь получить короткий хэш git в переменной. Я попытался установить переменную GIT_COMMIT_SHORT для запуска 'git rev-parse --short HEAD', но это не сработало. Мне нужна эта переменная для перехода к ant build script, поэтому имя пакета включает этот короткий хэш.

Я запускаю Jenkins на сервере Windows 2008.

Спасибо

4b9b3361

Ответ 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]}"