Ответ 1
Я извлек последнюю успешную дату сборки, используя bash:
git log --pretty="%s" --since="`date -r ./../lastSuccessful/build.xml "+%F %T"`"
(В xml файле мне пришлось заменить "
на объект "e;
).
Я использую Phing для выполнения задач построения сборки в Hudson.
Я хочу создать журнал изменений, содержащий все коммиты с момента последней успешной сборки Hudson. Но похоже, что ни Хадсон, ни плагин Git для Hudson не предоставляют переменную %last_build_time%
.
Это будет удовлетворительное решение (но как получить время?):
git log --pretty="%s" --since="%last_build_time%"
Единственный способ, который я вижу сейчас, - извлечь его из файла задания xml, но я не знаю, возможно ли это с помощью Phing.
Как вы создаете журналы изменений?
Я извлек последнюю успешную дату сборки, используя bash:
git log --pretty="%s" --since="`date -r ./../lastSuccessful/build.xml "+%F %T"`"
(В xml файле мне пришлось заменить "
на объект "e;
).
Ответ @takeshin в порядке, если у вас есть доступ к файлу build.xml, но это может сломаться, особенно если вы строите на подчиненном устройстве node (так как ведомое устройство не имеет ссылки на build.xml).
Не бойтесь, так как вы можете напрямую обращаться к этой информации через Jenkins, используя свой удаленный доступ api:
https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
Например:
http://<host>/jenkins/job/<job_name>/lastSuccessfulBuild/api/xml
(предоставит вам xml-контент... вы можете заменить xml на json, чтобы, например, получить json-содержимое вместо XML).
ПРИМЕЧАНИЕ. Возможно, вам потребуется использовать аутентификацию, если вы настроили экземпляр Jenkins для его использования. Опять же, не бойтесь: https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients
Тогда это простой вопрос анализа XML для того, что вы хотите. Что-то вроде этого, возможно:
curl --silent --user $USER:$API_TOKEN $URL | grep "<lastBuiltRevision>" | sed 's|.*<lastBuiltRevision>.*<SHA1>\(.*\)</SHA1>.*<branch>.*|\1|'
Итак, потянув все это вместе, вы можете получить (относительно) простую оболочку script, чтобы извлечь последний хэш хэши хэнд-версий из Jenkins:
#!/bin/sh
GIT_LOG_FORMAT="%ai %an: %s"
USER=<username>
API_TOKEN=<api_token>
LAST_SUCCESS_URL_SUFFIX="lastSuccessfulBuild/api/xml"
#JOB_URL gets populated by Jenkins as part of the build environment
URL="$JOB_URL$LAST_SUCCESS_URL_SUFFIX"
LAST_SUCCESS_REV=$(curl --silent --user $USER:$API_TOKEN $URL | grep "<lastBuiltRevision>" | sed 's|.*<lastBuiltRevision>.*<SHA1>\(.*\)</SHA1>.*<branch>.*|\1|')
# Pulls all commit comments since the last successfully built revision
LOG=$(git log --pretty="$GIT_LOG_FORMAT" $LAST_SUCCESS_REV..HEAD)
echo $LOG
Приветствия,
Леви