In the next few days we will roll out the new OS X build image. In this update we have:
Added Xcode 8.3 beta
Upgraded the host OS to macOS Sierra
Updated all pre-installed Ruby gems, including fastlane, to the latest version
Open source image specification
We have published the project that we use to collect data on the OS X image. You can now check out how we are testing the OS X image releases, suggest improvements to our test coverage, and view the diff between the current release and the next one.
We will update this post with the status of the release as soon as we have new data. You can change the notification settings for this post right below on this page—setting that to “Watching” is a great way to stay up-to-date on the new release.
Quick update on the image release process: because of the major OS upgrade (we had to upgrade to Sierra at this point) the image spent longer in production testing than we initially expected.
We are now testing the version of the image that contains Xcode 8.3 beta 2 which was released earlier today. We are aiming for pushing Xcode 8.3 beta 2 to production this week.
During the roll-out of the image, we noticed a number of issues that were not highlighted by our testing, the most prominent of which are:
Xcode 7.x on Sierra cannot release to the App Store in some cases
Some dependencies would not build due to the major OS upgrade
After identifying the problems, we were left with three options:
Release the 8.3 Beta and the Sierra image, and risk breaking Xcode 7
Release the 8.3 Beta on El Capitan, and risk breaking Xcode 8.3
Modify the platform to support multiple images in production
We decided to go with option 3, and start to run multiple images on our macOS fleet. This has required extra engineering effort that is still currently underway, but this will allow us to provide a much more deterministic and reliable environment in the future, while also allowing us to dramatically reduce the lead time on new Xcode versions, by releasing images that are specific to a given Xcode version, that will automatically be used based on your circle.yml Xcode configuration.