Wednesday, October 5, 2016

Xcode 8 automatic code signing problem with Jenkins

Xcode 8 automatic code signing is great. However if you try to use Jenkins to automate your app build with a specific provision profile, you would want to use manual code signing. What I wanted to do was use automatic code signing during development and use manual code signing with Ad-Hoc provision with Jenkins.

To switch from automatic to manual code signing, you need to change the following setting in the project file ([project name].xcodeproj/project.pbxproj).
Change "ProvisioningStyle = Automatic" to "ProvisioningStyle = Manual"
By default "ProvisioningStyle = Automatic" is not in the project.pbxproj. You just need to uncheck and check "Automatically manage signing" in app Target -> General in Xcode to add that setting.

Now in Jekins, you want to add this shell script before you run the Xcode build command to change "ProvisioningStyle = Automatic" to "ProvisioningStyle = Manual"

sed -i '' 's/ProvisioningStyle = Automatic;/ProvisioningStyle = Manual;/' [project name].xcodeproj/project.pbxproj

You can then use xcodebuild argument "PROVISIONING_PROFILE=xxxx-xxxx-xxxx" to use the provision profile you want.