Ответ 1
Это, по-видимому, невозможно в текущей версии плагина git. Вместо этого мы записываем текущий файл в файл и сохраняем его как артефакт. Мы можем позже скрутить его и получить идентификатор фиксации, соответствующий данной сборке.
Мы используем Hudson с git. У нас есть сервер сборки/тестирования, который компилирует наш проект, а затем сервер QA, который нам нужно развернуть.
Мы хотим получить текущий построенный git commit sha и использовать его для вытягивания соответствующей фиксации для развертывания на нашем сервере QA.
К сожалению, похоже, что плагин hudon git не устанавливает шасси git commit в переменных среды (например, как это делает svn-плагин в SVN_REVISION). Как нам обойти это?
Указатель/примеры будут полезны, поскольку я hudson noob.
Спасибо
Это, по-видимому, невозможно в текущей версии плагина git. Вместо этого мы записываем текущий файл в файл и сохраняем его как артефакт. Мы можем позже скрутить его и получить идентификатор фиксации, соответствующий данной сборке.
Я добавил команду 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
Вы можете добавить дополнительный шаг к своему заданию Хадсона, опубликовав вновь созданный git commit ко второму репо на сервере сборки/тестирования.
В этом втором репо может быть нажата кнопка "после приема", автоматически передающая фиксацию на сервер QA.
Если вам не нужен дополнительный слой косвенности, тогда вам нужно иметь в своем дополнительном шаге команды git для запроса SHA1 HEAD: git describe
или git rev-parse
.
У вас есть другие опции git в вопросе "Сохранение git SHA1 при создании с помощью Hudson аналогично тегу CVS_BRANCH для CVS."
Возможно, довольно поздно, но вы можете сделать это на 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.
В исполняемой оболочке уже есть хорошее решение. Это решение имеет то преимущество, что вы можете сделать это как часть фазы сборки, используя скрипты, а не в фазе после сборки. Это объясняется ниже. См. fooobar.com/questions/147165/...
Фактически, вы можете получить доступ к информации до завершения фазы сборки, прочитав/проанализировав файл.. /builds/ $BUILD_NUMBER/changelog.xml внутри папки сборки. Этот файл создается с помощью запуска SVN/ GIT, а не с завершением фазы сборки или post_build. Это означает, что вы можете проанализировать его в начале фазы сборки того же задания с помощью script и вставить данные в переменные env.
Jenkins Версия: 2.46.2
Git Клиент: 2.4.5
Следующие переменные GIT
доступны, выполнив команду env
из shell
.
Итак, чтобы добавить их обратно в переменные среды работы, добавьте слово env
в раздел Script Content
...
Job > Configure > Build Environment > Inject environment variables to the build process > Script Content
В задании Jenkin вы можете использовать команду
git describe --always
Это вернет первые 7 символов SHA
Привет