Вопрос по github, git – Как составить git log для ожидающих изменений в TeamCIty

11

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

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

Ваш Ответ

3   ответа
21

Вот как я это сделал, используя скрипт bash:

#!/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. Use curl to fetch the last successful build from your build configuration. In my sample this is bt2, make sure to replace it with yours
  2. Use XPath/AWK to parse the XML response and get the last git version
  3. Use git log to get all changes form last build and format them anyway you want. I wanted to just get the commit descriptions.
спасибо, что поделились этим! У меня были небольшие проблемы с настройкой ветки, отличной от ветви по умолчанию, но мне нужно было добавить:builds/status:SUCCESS,branch:other_branch
Есть ли возможность получить информацию о ревизии из сборной?
Как вы можете использовать значение $ NOTES в TeamCity?
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. Use curl to fetch the last successful build from your build configuration. You can use teamcity's substitution to put in the build id.
  2. Note that the curl command relies on having a TeamCity user called rest, with a password "rest". Suggest changing the password.

  3. Use XPath/AWK to parse the XML response and get the last git version

  4. Use git log to get all changes form last build and format them anyway you want. I wanted to just get the commit descriptions and write them to a file. You'll need to make sure the file goes away between builds by setting up git to clean in-between. NB: If you're building off of anything other than master, you'll need the right branch spec here.

  5. Note that the git log format option uses %, which is the teamcity substitution marker, and thus needs to be escaped as %%.

  6. You need to do configure TeamCity to make the .git directory accessible. See Using git commands in a TeamCity Build Step

  7. The changes are now in the changes.txt file. In my application (editor improving question) I used this file to submit to crashlytics for an iOS beta distribution.

2

Вы можете использовать & quot;Добавление или изменение параметра сборки из шага сборки& Quot; функция для обновления некоторых параметров сборки прямо с шага сборки.

Вам понадобится шаг, который вызоветgit log origin/master..master (см. & quot;git: список коммитов еще не передан к источнику& quot;) после загрузки с GitHub.
(См. & Quot;Использование Team City с Git& Quot; для конфигурации TeamCity с GitHub, и убедитесь, что вашTeamCity работает с правильным аккаунтом)

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

Похожие вопросы