2012-05-29 3 views
10

У меня есть агент TeamCity, настроенный для сборки моих проектов XCode, и я использую github. Я хотел бы автоматически включить в свои заметки о выпуске описания из всех ожидающих коммитов в TeamCity.Как составить журнал git для ожидающих изменений в TeamCIty

Как я могу получить их из github и хранить их в команде? Как только я помещаю их в переменную teamcity, я могу легко добавить их в мой скрипт сборки.

ответ

2

Вы можете использовать функцию «Adding or Changing a Build Parameter from a Build Step», чтобы обновить некоторые параметры сборки прямо со стадии сборки.

Вам понадобится шаг, который будет называться git log origin/master..master (см. «git: list commits not pushed to the origin yet»), после получения от GitHub.
(См «Using Team City With Git» для конфигурации TeamCity с GitHub, и убедитесь, что ваш TeamCity is runnig with the right account)

+0

Спасибо, Все мои изменения уже перенесены в github, поэтому исходный файл git/master..master не будет работать, но я все еще вижу, что эти изменения и teamcity должны каким-то образом отслеживать их, просто не знаете, как это сделать. – mishod

20

Вот как я в конечном итоге делает это с помощью Баш скрипт:

#!/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" 

Некоторые пояснения:

  1. Используйте curl для получения последней успешной сборки из вашей конфигурации сборки. В моем примере это bt2, убедитесь, чтобы заменить его с вашим
  2. Использование XPath/AWK для разбора ответа XML и получить последнюю GIT версию
  3. Используйте git log, чтобы получить все изменения, образуют последнюю сборку и форматировать их в любом случае вы хотите , Я хотел просто получить описания фиксации.
+0

Интересная обратная связь. +1 – VonC

+0

Как вы можете использовать значение $ NOTES в TeamCity? – Steve

+0

Есть ли все, чтобы получить информацию о пересмотре команды? – Sam

1

Я нашел несколько вопросов, когда я реализовал ответ выше, которые обновленные здесь:

#!/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 

Некоторые более подробные вещи:

  1. Используйте curl для извлечения последней успешной сборки из вашей конфигурации сборки. Вы можете использовать подстановку teamcity для ввода идентификатора сборки.
  2. Обратите внимание, что команда curl полагается на то, что пользователь TeamCity называется rest, с паролем «rest». Предложите сменить пароль.

  3. Использование XPath/AWK для разбора XML-ответа и получите последнее GIT версию

  4. git log Используйте, чтобы получить все изменения, образуют последнюю сборку и форматировать их в любом случае вы хотите. Я хотел просто получить описания фиксации и записать их в файл. Вам нужно будет убедиться, что файл удаляется между сборками, установив git для очистки между ними. NB: Если вы строите что-либо другое, кроме мастера, вам понадобится правильная спецификация отрасли.

  5. Обратите внимание, что в опции формата git log используется%, который является маркером замены teamcity и, следовательно, должен быть экранирован как %%.

  6. Вам необходимо настроить TeamCity, чтобы сделать каталог .git доступным. См. Using git commands in a TeamCity Build Step

  7. Изменения теперь находятся в файле changes.txt.В моем приложении (в редакторе, улучшающем вопрос) я использовал этот файл для отправки в crashlytics для бета-дистрибутива iOS.

Смежные вопросы