Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

xcodebuild commands give different results when run from the command line than when run from within Jenkins

Tags:

I'm setting up a CI system using Jenkins and was finding that the build was failing because xcodebuild reports there are no schemes when I was executing the line

-xcodebuild -workspace XXX -scheme NNN.

I couldn't figure out why this could be happening, so to eliminate something screwy being up with my workspace I created a new project template using XCode and found that I am getting a difference in behavior for any xcodebuild command and for any workspace/project.

The template project was called scrap and if from the terminal command line I run this command for example:

  xcodebuild -list 

It outputs

Information about project "scrap":     Targets:         scrap      Build Configurations:         Debug         Release      If no build configuration is specified and -scheme is not passed then "Release" is used.      Schemes:         scrap 

But if I run xcodebuild -list from within Jenkins then the output instead is:

Building in workspace /Users/Shared/Jenkins/Home/workspace/scrap [scrap] $ /bin/sh -xe /var/folders/ph/s6dvlfq9769741g_yzmjlmz000007c/T/hudson3765407964219991487.sh + xcodebuild -list Information about project "scrap":     Targets:         scrap      Build Configurations:         Debug         Release      If no build configuration is specified and -scheme is not passed then "Release" is used.      This project contains no schemes. 

This is the most simple of jenkins jobs - all I do is create a new job, set it to a free-style software project, then add a build step of Execut shell and add the xcodebuild -list command, that's it.

Why is xcodebuild saying there are no schemes when there are? And why is it behaving differently when run from within Jenkins?

like image 297
Gruntcakes Avatar asked Nov 21 '12 19:11

Gruntcakes


1 Answers

Figured out that all you need to do is to set the scheme to be shared. Scheme > Manage Schemes Make sure "Shared" is checked.

This will then generate out a new folder/file .../xcshareddata/xcschemes/???.xcscheme

Check this file into your source control and scheme should now appear on your jenkins box.

like image 185
poxion Avatar answered Sep 23 '22 04:09

poxion