I have a TeamCity agent configured to build my XCode projects and I use github. I would like to automatically include in my release notes the descriptions from all pending commi
I found a couple of issues when I implemented the above answer, which are updated here:
#!/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
Some more detailed things:
curl
to fetch the last successful build from your build configuration. You can use teamcity's substitution to put in the build id.Note that the curl command relies on having a TeamCity user called rest, with a password "rest". Suggest changing the password.
Use XPath/AWK to parse the XML response and get the last git version
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.
Note that the git log
format option uses %, which is the teamcity substitution marker, and thus needs to be escaped as %%.
You need to do configure TeamCity to make the .git directory accessible. See Using git commands in a TeamCity Build Step
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.