How to compose git log for pending changes in TeamCIty

后端 未结 3 2056
北荒
北荒 2021-02-13 21:46

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

3条回答
  •  甜味超标
    2021-02-13 22:33

    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:

    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.

提交回复
热议问题