Как составить журнал git для ожидающих изменений в TeamCIty
У меня есть агент TeamCity, настроенный для сборки моих проектов XCode, и я использую github. Я хотел бы автоматически включить в мои заметки о выпуске описания из всех ожидающих коммитов в TeamCity.
Как я могу получить их из github и хранить их в команде? Как только я помещаю их в переменную teamcity, я могу легко добавить их в мою сборку script.
Ответы
Ответ 1
Вы можете использовать параметр Добавление или изменение параметра сборки из этапа сборки", чтобы обновить некоторые параметры сборки прямо с шаг сборки.
Вам понадобится шаг, который будет вызывать git log origin/master..master
(см. "git: список не фиксируется до начала координат), после получения от GitHub.
(См. " Использование Team City With Git" для конфигурации TeamCity с GitHub и убедитесь, что TeamCity запущен с правильным аккаунтом)
Ответ 2
Вот как я это сделал, используя bash script:
#!/bin/bash
curl -o lastBuild.tmp "http://localhost:8111/app/rest/buildTypes/id:bt2/builds/status:SUCCESS" --user rest:rest
last_commit=`xpath lastBuild.tmp '/build/revisions/revision/@version'| awk -F"\"" '{print $2}'`
echo "##Last commit = $last_commit"
# prepare build notes
NOTES=`git log --pretty=format:"- %s" $last_commit..origin/master`
echo "this is it:$NOTES"
Некоторые объяснения:
- Используйте
curl
для извлечения последней успешной сборки из вашей конфигурации сборки. В моем примере это bt2, обязательно замените его на свой
- Используйте XPath/AWK для анализа ответа XML и получения последней версии git
- Используйте
git log
, чтобы получить все изменения в форме последней сборки и форматировать их в любом случае. Я хотел просто получить описания фиксации.
Ответ 3
Я обнаружил пару проблем, когда я выполнил вышеупомянутый ответ, который обновляется здесь:
#!/bin/bash
curl -o lastBuild.tmp "http://localhost:8111/app/rest/buildTypes/id:%system.teamcity.buildType.id%/builds/status:SUCCESS" --user rest:rest
last_commit=`xpath lastBuild.tmp '/build/revisions/revision/@version'| awk -F"\"" '{print $2}'`
git log --pretty=format:"- %%s" $last_commit..origin/master > changes.txt
Несколько более подробных вещей:
- Используйте
curl
для извлечения последней успешной сборки из вашей конфигурации сборки. Вы можете использовать подстановку teamcity для ввода идентификатора сборки.
-
Обратите внимание, что команда curl полагается на то, что пользователь TeamCity называется rest, с паролем "rest". Предложите сменить пароль.
-
Используйте XPath/AWK для анализа ответа XML и получения последней версии git
-
Используйте git log
, чтобы получить все изменения в форме последней сборки и форматировать их в любом случае. Я хотел просто получить описания фиксации и записать их в файл. Вам нужно убедиться, что файл удаляется между сборками, установив git для очистки между ними. NB: Если вы строите что-либо другое, кроме мастера, вам понадобится правильная спецификация отрасли.
-
Обратите внимание, что в опции формата git log
используется%, который является маркером замещения teamcity, и, следовательно, необходимо экранировать как %%.
-
Вам нужно настроить TeamCity, чтобы сделать каталог .git доступным. См. Использование команд git на этапе сборки TeamCity
-
Изменения теперь находятся в файле changes.txt. В моем приложении (вопрос, улучшающий редактор) я использовал этот файл для отправки в crashlytics для бета-дистрибутива iOS.