Xcode Server 4.0 git push from build trigger script Xcode Server 4.0 git push from build trigger script xcode xcode

Xcode Server 4.0 git push from build trigger script


I figured it out. You need to create new keys for the _xcsbuildd user. Then add them to github. Bottom of this thread: https://devforums.apple.com/message/1054122#1054122

sudo -u _xcsbuildd /bin/bashssh-keygen -t rsa -C "your_email@example.com"ssh -T git@github.com


Taking in a lot of the other answers I found throughout the web (and on this question), I have the steps to make this work in Xcode 6. First, do the stuff above what dmclean stated (with a couple changes) on your build server:

sudo -u _xcsbuildd /bin/bashssh-keygen -t rsa -b 4096 -C "your_email@example.com" (when asked for a keyphrase, just hit return)ssh -vT git@github.com (this will show you debugging output - you should not have to enter a keyphrase and it should successfully get to git)

Now, you need to set this new public key in your git account. Follow these steps: (Step 4) https://help.github.com/articles/generating-ssh-keys/

I am assuming you have a build script for your project. Our project has a Share Extension and a Watch Extension. I wanted the build numbers to increment across each (and be the same across each). Our build Numbers are in the format A.B.C.D (Major.Minor.Patch.build). This "Run Script" is in the "Build Phases" of the main project. Here is our script:

#!/bin/sh# Auto Increment Version Script# set CFBundleVersion to 1.0.0.1 first!!!# the perl regex splits out the last part of a build number (ie: 1.1.1.1) and increments it by one# if you have a build number that is more than 4 components, add a '\d+\.' into the first part of the regex. If you have less remove onebuildPlist=${INFOPLIST_FILE}newVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$buildPlist" | /usr/bin/perl -pe 's/(\d+\.\d+\.\d+\.)(\d+)/$1.($2+1)/eg'`echo $newVersion;/usr/libexec/PListBuddy -c "Set :CFBundleVersion $newVersion" "$buildPlist"/usr/libexec/PListBuddy -c "Set :CFBundleVersion $newVersion" "$SRCROOT/${PRODUCT_NAME} Extension/Info.plist"/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $newVersion" "$SRCROOT/${PRODUCT_NAME} WatchKit Extension/Info.plist"/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $newVersion" "$SRCROOT/${PRODUCT_NAME} WatchKit App/Info.plist"echo "Trying Git Config"git config user.email "your_email@example.com"git config user.name "XCode Build Server"echo "Trying Git Commit"git commit -a -m "Updated Build Numbers"echo "Trying Git Push"git push

If it doesn't work, take a look at the output in the Build Log (under the integration).

Some of the problems I encountered:

Since _xcsbuildd doesn't really have a $HOME I had to do the git configs, otherwise I was getting errors where git didn't know who I was (identity errors). If I put a keyphrase in the RSA key, then it gave me public key errors when trying to push (took me a bit to figure out to take out the keyphrase to make it work).

I hope this helps someone.