Я нашел несколько вопросов, когда я реализовал ответ выше, которые обновленные здесь:
#!/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 доступным. См. Using git commands in a TeamCity Build Step
Изменения теперь находятся в файле changes.txt.В моем приложении (в редакторе, улучшающем вопрос) я использовал этот файл для отправки в crashlytics для бета-дистрибутива iOS.
Спасибо, Все мои изменения уже перенесены в github, поэтому исходный файл git/master..master не будет работать, но я все еще вижу, что эти изменения и teamcity должны каким-то образом отслеживать их, просто не знаете, как это сделать. – mishod