Как получить родительский идентификатор для коммита в задании конвейера jenkins, запускаемом Gerrit - PullRequest
0 голосов
/ 11 января 2019

В коде конвейера мне нужно получить родительский идентификатор для фиксации в задании конвейера jenkins, инициированном триггером gerrit.

Я пытался получить родительский идентификатор из переменной среды триггера Gerrit $ GERRIT_PATCHSET_REVISION

        echo "$GERRIT_PATCHSET_REVISION^"
        echo "${GERRIT_PATCHSET_REVISION}^"
        echo "${env.GERRIT_PATCHSET_REVISION}^"
        echo "$GERRIT_PATCHSET_REVISION^^"
        echo "${GERRIT_PATCHSET_REVISION}^^"
        echo "${env.GERRIT_PATCHSET_REVISION}^^"

Фактический результат: Значение SHA1 текущей фиксации, значение GERRIT_PATCHSET_REVISION, за которым следуют 1 или 2 каретки ("^")

Ожидаемый результат: Значение SHA1 родительского коммита

Дженкинс не может интерпретировать и убежать "^". Любые указатели будут очень полезны!

1 Ответ

0 голосов
/ 11 января 2019

Используйте git rev-parse вместо echo, предположим, в bash:

firstparent=$(git rev-parse ${GERRIT_PATCHSET_REVISION}^)
echo ${firstparent}

Чтобы успешно извлечь родительский коммит, объект коммитирования ревизии набора патчей должен быть доступен из локального репозитория git. Если фрагмент работает вне хранилища, используйте git --git-dir=<path_to_repo_.git> rev-parse ${GERRIT_PATCHSET_REVISION}^.

...