The Funky Hermit
The Funky Hermit

Reputation: 101

How to setup Jenkins Xcode plugin for workspaces?

I am green to the iOS app development space. I need to setup a build in Jenkins for a new Swift application I built. As part of that, I used Cocoapods to manage dependencies which in turn, meant I now had a workspace instead of a simple project.

I'm now trying to build this application as part of our pipepline and have hit the following error:

FATAL: Since there are multiple projects in the workspace, you must be specify the location of the target project as Xcode Project File.
Build step 'Xcode' marked build as failure
Finished: FAILURE

The root of my project looks as follows:

$ ls -la
total 32
drwxr-xr-x  14 mcbint  staff  448 15 Jan 15:16 .
drwxr-xr-x   3 mcbint  staff   96 15 Jan 14:33 ..
drwxr-xr-x  13 mcbint  staff  416 16 Jan 11:11 .git
-rw-r--r--   1 mcbint  staff  108 15 Jan 14:56 .gitignore
-rw-r--r--   1 mcbint  staff  501 15 Jan 14:56 Podfile
-rw-r--r--   1 mcbint  staff  379 15 Jan 14:56 Podfile.lock
drwxr-xr-x   9 mcbint  staff  288 15 Jan 15:16 Pods
-rw-r--r--   1 mcbint  staff  666 15 Jan 14:56 README.md
drwxr-xr-x  10 mcbint  staff  320 15 Jan 14:56 mcb-phoneagent-ios
drwxr-xr-x   5 mcbint  staff  160 15 Jan 15:16 mcb-phoneagent-ios.xcodeproj
drwxr-xr-x   4 mcbint  staff  128 15 Jan 14:56 mcb-phoneagent-ios.xcworkspace
drwxr-xr-x   4 mcbint  staff  128 15 Jan 14:56 mcb-phoneagent-iosTests
drwxr-xr-x   4 mcbint  staff  128 15 Jan 14:56 mcb-phoneagent-iosUITests
drwxr-xr-x   2 mcbint  staff   64 15 Jan 15:07 test-reports

I have setup the project in xcode as follows: jenkins ios workspace config

On my development machine I can successfully build the application with the command:

xcodebuild -workspace mcb-phoneagent-ios.xcworkspace -scheme mcb-phoneagent-ios

Does anybody see anything I've setup incorrectly?

Upvotes: 2

Views: 2459

Answers (2)

Pasosta
Pasosta

Reputation: 855

This is how I resolved this issue when i ran into it:

  1. Make sure that you have your scheme container set to the workspace (not the project. This can be checked in Xcode in Product -> Scheme -> Manage Schemes, then look in the column titled "Container")

  2. confirm that the xcshareddata is in the workspace directory that Jenkins is using.

  3. In Jenkins Under the General build settings of the Xcode there is a "Settings" button settings button

click on it and find the Xcode schema file text box.schema text box

Fill that box in with the name of the xcsheme file you want to use for the given workspace that was entered as the Xcode Workspace file (in your case I'm guessing it would be mcb-phoneagent-ios).

Upvotes: 2

Chief Madog
Chief Madog

Reputation: 1507

Since you use Cocopod, you need to use the *.xcworkspace file, not the *.workspace,

and from personal experience much easier to archive and use *.app files with jenkins instead of letting it to build for u the projects

Upvotes: 0

Related Questions