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

В Хадсоне, как мне получить текущую сборку git commit sha?

Мы используем Hudson с git. У нас есть сервер сборки/тестирования, который компилирует наш проект, а затем сервер QA, который нам нужно развернуть.

Мы хотим получить текущий построенный git commit sha и использовать его для вытягивания соответствующей фиксации для развертывания на нашем сервере QA.

К сожалению, похоже, что плагин hudon git не устанавливает шасси git commit в переменных среды (например, как это делает svn-плагин в SVN_REVISION). Как нам обойти это?

Указатель/примеры будут полезны, поскольку я hudson noob.

Спасибо

4b9b3361

Ответ 1

Это, по-видимому, невозможно в текущей версии плагина git. Вместо этого мы записываем текущий файл в файл и сохраняем его как артефакт. Мы можем позже скрутить его и получить идентификатор фиксации, соответствующий данной сборке.

Ответ 2

Я добавил команду Post build:

окр

В журнале я нашел все переменные среды. Некоторые из них:

BUILD_TAG=jenkins-Datagen-17
JOB_URL=http://jenkins:18080/job/Datagen/
USER=jenkins
GIT_COMMIT=ce9a3c1404e8c91be604088670e93434c4253f03
JENKINS_HOME=/var/lib/jenkins
JOB_NAME=Datagen
BUILD_ID=2011-06-22_15-26-06
GIT_BRANCH=master
EXECUTOR_NUMBER=0
NODE_LABELS=master
LOGNAME=jenkins
NODE_NAME=master
BUILD_NUMBER=17

Ответ 3

Вы можете добавить дополнительный шаг к своему заданию Хадсона, опубликовав вновь созданный git commit ко второму репо на сервере сборки/тестирования.
В этом втором репо может быть нажата кнопка "после приема", автоматически передающая фиксацию на сервер QA.

Если вам не нужен дополнительный слой косвенности, тогда вам нужно иметь в своем дополнительном шаге команды git для запроса SHA1 HEAD: git describe или git rev-parse.
У вас есть другие опции git в вопросе "Сохранение git SHA1 при создании с помощью Hudson аналогично тегу CVS_BRANCH для CVS."

Ответ 4

Возможно, довольно поздно, но вы можете сделать это на jenkins, используя API:

https://jenkins-server/job/job-name/lastStableBuild/api/json

Это дает объект JSON, который вы можете проанализировать. Вы также можете использовать опцию tree, чтобы получить более точную строку JSON. Что-то вроде этого:

https://jenkins-server/job/job-name/lastStableBuild/api/json?tree=actions[lastBuiltRevision[branch[*]]]

Теперь вы можете использовать awk для разбора ветвей SHA1 и git.

Ответ 5

В исполняемой оболочке уже есть хорошее решение. Это решение имеет то преимущество, что вы можете сделать это как часть фазы сборки, используя скрипты, а не в фазе после сборки. Это объясняется ниже. См. fooobar.com/questions/147165/...

Фактически, вы можете получить доступ к информации до завершения фазы сборки, прочитав/проанализировав файл.. /builds/ $BUILD_NUMBER/changelog.xml внутри папки сборки. Этот файл создается с помощью запуска SVN/ GIT, а не с завершением фазы сборки или post_build. Это означает, что вы можете проанализировать его в начале фазы сборки того же задания с помощью script и вставить данные в переменные env.

Ответ 6

Jenkins Версия: 2.46.2

Git Клиент: 2.4.5

Следующие переменные GIT доступны, выполнив команду env из shell.

  • GIT_BRANCH
  • GIT_COMMIT
  • GIT_PREVIOUS_COMMIT
  • GIT_PREVIOUS_SUCCESSFUL_COMMIT
  • GIT_URL

Итак, чтобы добавить их обратно в переменные среды работы, добавьте слово env в раздел Script Content...

TL;DR

Job > Configure > Build Environment > Inject environment variables to the build process > Script Content

Пример

Ответ 7

В задании Jenkin вы можете использовать команду

git describe --always

Это вернет первые 7 символов SHA

Привет