Announcing Xcode 8.3 support and opt-in upgrades for macOS

Xcode 8.3 is now available for use on the CircleCI macOS platform. To start using Xcode 8.3 in your builds, add the following to your circle.yml:

machine:
  xcode:
    version: 8.3

This update also changes the base OS version to macOS Sierra.

Opt-in upgrades on macOS platform

We are also announcing opt-in upgrades for the macOS platform. This feature allows customers building iOS and Mac projects to choose when they would like to upgrade to a newer build image and Xcode version.

Going forward, we will no longer automatically change images for you. All new changes will be introduced in new images, together with new Xcode versions. Updating to those new images is opt-in.

When we release a new build image, our plan is to make small updates to it in the first two weeks in response to your feedback. After that we intend to only update the image when absolutely necessary, for example in the case of security updates.

This feature also allows us to add support for newer Xcode versions more quickly than before. Previously, we had been using a monolithic build image with multiple Xcode versions preinstalled. This update changes that to multiple images, each with a single version of Xcode installed.

Please let us know what you think in the comments. Thanks!

5 Likes

I’m seeing archives fail when changing to use 8.3 (the only other additional change needed when upgrading to 8.3 was to install node as a dependency)

Failure:

The following build commands failed:
[10:46:37]: ▸ PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /

We’re seeing failures with fastlane after changing to 8.3 and the message points to something related with configuration of the image. Can be something wrongly configured?

[13:33:22]: -----------------------
[13:33:22]: --- Step: xcversion ---
[13:33:22]: -----------------------
Please enable Spotlight indexing for /Applications.

I had a similar issue with my cocoapods that seems to be related to the Sierra update.

The fix for me was to execute this before calling xcodebuild:
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k circle circle.keychain

Seems to be a new behavior related to Sierra where keychain access for code signing requires a prompt from the ui otherwise.

3 Likes

Did you place this in your circle.yml before the xcodebuild command or did you place it somewhere else?

I put it in an environment variable via the circle settings then ran it via my circle.yml in the test section on a step before my xcodebuild like below:

test:

  • $ENV_VAR_COMMAND_HERE
  • xcode_build_script_here.sh
2 Likes

I can’t switch Xcode version because of this error.

It seems that Xcode8.3 is not installed on my instance.

$ sudo xcode-select --switch /Applications/Xcode-8.3.app && xcodebuild -version
xcode-select: error: invalid developer directory '/Applications/Xcode-8.3.app'

sudo xcode-select --switch /Applications/Xcode-8.3.app && xcodebuild -version returned exit code 1

Action failed: Select Xcode Version

Did you change the circle.yml to specify 8.3?

machine:
xcode:
version: “8.3”

I had to remove the quotes around 8.3 to get it working for me.

This change reached my instance with some delay.
I can built my project with Xcode8.3!

2 Likes

Was Git LFS removed from the new image? We are getting errors when we try to pull some assets from it on a CI build after bumping to 8.3.

Looks like Ruby version 2.3.1 is not installed on new build images. I’m getting this error:

chruby: unknown Ruby: 2.3.1

It does have 2.3.4 though. I updated to that for my build after sshing in to an instance to figure out what versions were available.

Hi. We’re getting the failure gym: command not found with this update. Are there changes to the fastlane setup that would cause this error? Thanks.

I have the same problem. Do you solved it?

What carthage version is installed please?

Refer to: Update Carthage

try fastlane gym

From Fastlane output:

Unfortunately the legacy build API was removed with Xcode 8.3. Please make sure to remove use_legacy_build_api from your ./fastlane/Fastfile and update the gym call to include the export method like this:

App Store Builds

gym(scheme: "MyScheme", export_method: "app-store")

Ad Hoc Builds

gym(scheme: "MyScheme", export_method: "ad-hoc")

Development Builds

gym(scheme: "MyScheme", export_method: "development")

In-House Enterprise Builds

gym(scheme: "MyScheme", export_method: "enterprise")

Hi @alexey, thank you for the update-

I’m noticing that installing cocoapods (sudo gem install cocoapods -v 1.2.0.beta.3) on the container that gets utilized when using Xcode version: “8.2” installs something like 28 gems total, and in turn seems to dirty the git repository somehow.

Please compare build (8.3) : https://circleci.com/gh/cliqueinc/ios-shopwhowhatwear/4999
with build (8.2): https://circleci.com/gh/cliqueinc/ios-shopwhowhatwear/5001

The only difference between the two is that one is using the machine Xcode version of 8.3, as opposed to 8.2. I have ensure_git_repository_clean set on my Fastfile, which is how I ran into this issue.

Please let me know if I can provide any more information. Thanks a lot.

Upgrading fastlane to latest version fixed the 8.3 use_legacy_build_api for me but now experiencing this issue:

 Running script 'Crashlytics'
 ▸ Running script '[CP] Embed Pods Frameworks'
 ** ARCHIVE FAILED **
 
 
 The following build commands failed:
 PhaseScriptExecution [CP]\ /Script-AF458ECBD39814D6D0B9C16F.sh
 (1 failure)
 [04:34:47]: Exit status: 65
 [04:34:47]: 📋  For a more detailed error log, check the full log at:
 [04:34:47]: 📋  /tmp/circle-artifacts.5wdqiVU/gym/....log
 [04:34:47]: Found multiple versions of Xcode in '/Applications/'
 [04:34:47]: Make sure you selected the right version for your project
 [04:34:47]: This build process was executed using '/Applications/Xcode-8.3.app'
 [04:34:47]: If you want to update your Xcode path, either
 [04:34:47]: 
 [04:34:47]: - Specify the Xcode version in your Fastfile
 [04:34:47]: ▸ xcversion(version: "8.1") # Selects Xcode 8.1.0
 [04:34:47]: 
 [04:34:47]: - Specify an absolute path to your Xcode installation in your Fastfile
 [04:34:47]: ▸ xcode_select "/Applications/Xcode8.app"
 [04:34:47]: 
 [04:34:47]: - Manually update the path using
 [04:34:47]: ▸ sudo xcode-select -s /Applications/Xcode.app