Xcode 13 RC Released

22 Stepmber Update: Apple has marked the same Xcode build number 13A233 as the Release version of Xcode 13. In this instance we do not need to re-build the Xcode 13 image as they are identical releases.


The Xcode 13 RC image has just been released and can be selected as follows:

macos:
    xcode: 13.0.0

This image replaces the Xcode 13 Beta 5 image


Breaking changes in this image

If upgrading from Xcode 12 images, please be aware of the following changes:

  • Ruby 2.5 via chruby has been removed as Ruby 2.5 is EOL as of April 2021. We continue to provide Ruby 2.6, 2.7 and 3.0
  • We have added nvm to the image to manage nodejs installations. By default we will always ship the latest current and lts releases

Image Info

Xcode 13.0 Build version 13A233 is installed at /Applications/Xcode-13.0.app

The following runtimes are installed:

  • iOS 14.5
  • iOS 15.0
  • tvOS 14.5
  • tvOS 15.0
  • watchOS 7.4
  • watchOS 8.0

The full manifest of installed software can be found here

2 Likes

Hi. I noticed today that the iOS 14.5 and iOS 15 simulator names in this release are the same for each iPhone model. The result is that I don’t appear to have a way to specify the iOS version my tests are run on. I don’t think this has been the case in the past. Is this expected?

[18:53:59]: ▸ --- xcodebuild: WARNING: Using the first of multiple matching destinations:
[18:53:59]: ▸ { platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Any iOS Device }
[18:53:59]: ▸ { platform:iOS Simulator, id:dvtdevice-DVTiOSDeviceSimulatorPlaceholder-iphonesimulator:placeholder, name:Any iOS Simulator Device }
[18:53:59]: ▸ { platform:iOS Simulator, id:BD7EA2AE-50CD-4B90-90D5-7D10F49A0D91, OS:14.5, name:iPhone 8 }
[18:53:59]: ▸ { platform:iOS Simulator, id:6168B126-527A-4508-AA91-1E11081C5BBB, OS:15.0, name:iPhone 8 }
[18:53:59]: ▸ { platform:iOS Simulator, id:E3523FC6-B82A-4904-B691-64416E3394D7, OS:14.5, name:iPhone 8 Plus }
[18:53:59]: ▸ { platform:iOS Simulator, id:D7F5DE6F-61D0-47DA-87DD-332AE0B62176, OS:15.0, name:iPhone 8 Plus }
[18:53:59]: ▸ { platform:iOS Simulator, id:B6A0777D-77EF-4FE4-AD49-4EF50CFD04A0, OS:14.5, name:iPhone 11 }
[18:53:59]: ▸ { platform:iOS Simulator, id:05CC9261-12FE-4516-BFB6-C832FF45D85D, OS:15.0, name:iPhone 11 }
[18:53:59]: ▸ { platform:iOS Simulator, id:652F2F1B-8D64-47BF-92D8-33507E6AF7D7, OS:14.5, name:iPhone 11 Pro }
[18:53:59]: ▸ { platform:iOS Simulator, id:D7370E8A-55D1-444F-9099-71DBC35836DE, OS:15.0, name:iPhone 11 Pro }
[18:53:59]: ▸ { platform:iOS Simulator, id:FA82DA71-262D-45AC-AFBE-6F0495E024DE, OS:14.5, name:iPhone 11 Pro Max }
[18:53:59]: ▸ { platform:iOS Simulator, id:985679AC-8766-47F3-983C-DBA9CDAFCEA9, OS:15.0, name:iPhone 11 Pro Max }
[18:53:59]: ▸ { platform:iOS Simulator, id:46D341EF-CBD0-444A-849B-402A2CAC0220, OS:14.5, name:iPhone 12 }
[18:53:59]: ▸ { platform:iOS Simulator, id:52A9C12A-2E11-483A-9473-64A702522A1E, OS:15.0, name:iPhone 12 }
[18:53:59]: ▸ { platform:iOS Simulator, id:A610FFB2-A75F-4D15-8373-7EC3A91426FC, OS:14.5, name:iPhone 12 Pro }
[18:53:59]: ▸ { platform:iOS Simulator, id:3B5CA477-9761-435D-9ACD-E5B108C1ABD8, OS:15.0, name:iPhone 12 Pro }
[18:53:59]: ▸ { platform:iOS Simulator, id:D5951EBA-A19E-42F1-9CF0-613B55628216, OS:14.5, name:iPhone 12 Pro Max }
[18:53:59]: ▸ { platform:iOS Simulator, id:24FEDA55-5B75-40BB-B16B-EA4CF4BA2016, OS:15.0, name:iPhone 12 Pro Max }
[18:53:59]: ▸ { platform:iOS Simulator, id:03728DE9-EB36-4A62-BCFC-D751B908B643, OS:14.5, name:iPhone 12 mini }
[18:53:59]: ▸ { platform:iOS Simulator, id:73654E30-2B3C-4C9F-B313-5B624D491ED4, OS:15.0, name:iPhone 12 mini }
[18:53:59]: ▸ { platform:iOS Simulator, id:A63F2005-A0FE-41AB-8D31-609D1144131A, OS:15.0, name:iPhone 13 }
[18:53:59]: ▸ { platform:iOS Simulator, id:2830EBA7-94CB-4B07-A1F6-3C24E019CA9E, OS:15.0, name:iPhone 13 Pro }
[18:53:59]: ▸ { platform:iOS Simulator, id:C6EC0329-2047-4602-A5FD-6D9EC4BC1827, OS:15.0, name:iPhone 13 Pro Max }
[18:53:59]: ▸ { platform:iOS Simulator, id:5CCC5438-3B03-4D04-A0AA-6B763007A123, OS:15.0, name:iPhone 13 mini }
[18:53:59]: ▸ { platform:iOS Simulator, id:13737317-CF68-418D-907E-E97F622D73AF, OS:14.5, name:iPhone SE (2nd generation) }
[18:53:59]: ▸ { platform:iOS Simulator, id:E2450AD5-F277-4F9B-9AD1-7AFF68E56D21, OS:15.0, name:iPhone SE (2nd generation) }
[18:53:59]: ▸ { platform:iOS Simulator, id:1AA41A69-698E-4D39-A76F-E5E3CEAA56A7, OS:14.5, name:iPod touch (7th generation) }
[18:53:59]: ▸ { platform:iOS Simulator, id:B8E9D277-042B-4952-B012-CB14B536A148, OS:15.0, name:iPod touch (7th generation) }
[18:53:59]: ▸ { platform:iOS Simulator, id:83D612FB-AD1B-4FED-8147-952B1DE95E75, OS:14.5, name:iPad (8th generation) }
[18:53:59]: ▸ { platform:iOS Simulator, id:D829B9EF-3217-4647-854C-1516950F9297, OS:15.0, name:iPad (9th generation) }
[18:53:59]: ▸ { platform:iOS Simulator, id:560749A4-AE84-484F-B350-33BBC02E5A9C, OS:14.5, name:iPad Air (4th generation) }
[18:53:59]: ▸ { platform:iOS Simulator, id:F523493F-BE64-4E3B-A667-99F579BE9514, OS:15.0, name:iPad Air (4th generation) }
[18:53:59]: ▸ { platform:iOS Simulator, id:CFA5C5F2-EB27-4803-AFB3-D0A5CED6FD64, OS:14.5, name:iPad Pro (9.7-inch) }
[18:53:59]: ▸ { platform:iOS Simulator, id:03B961C2-570B-4BC7-B5A1-4335BAE2AEC9, OS:15.0, name:iPad Pro (9.7-inch) }
[18:53:59]: ▸ { platform:iOS Simulator, id:9EB6B5A5-C4EA-4646-B73D-47249358A7DE, OS:14.5, name:iPad Pro (11-inch) (3rd generation) }
[18:53:59]: ▸ { platform:iOS Simulator, id:2E6C3685-101E-46F4-9B8C-0E15B2F200A7, OS:15.0, name:iPad Pro (11-inch) (3rd generation) }
[18:53:59]: ▸ { platform:iOS Simulator, id:F9321003-7F67-49CD-9BEE-4F913C41592B, OS:14.5, name:iPad Pro (12.9-inch) (5th generation) }
[18:53:59]: ▸ { platform:iOS Simulator, id:C92F6E55-4E35-4FC6-A6EC-3DD2BE29749A, OS:15.0, name:iPad Pro (12.9-inch) (5th generation) }
[18:53:59]: ▸ { platform:iOS Simulator, id:DD695456-3733-452B-A0DB-FE7FCC913CE8, OS:15.0, name:iPad mini (6th generation) }

Hi, this is a difference in how xcrun instruments and xcrun simctl works. The former is no longer available in Xcode 13 as Apple removed it (it was deprecated since Xcode 12). If you run xcrun simctl list you will see it now mostly relies on unique ids for the simulators, rather than having the iOS version in the name. E.g.,

== Devices ==
-- iOS 15.0 --
    iPhone 8 (4F3C3334-5BFF-4F16-A1E8-97AF050ACE08) (Shutdown)
    iPhone 8 Plus (0326776B-B6F0-4FC3-8016-8DBDBF76A260) (Shutdown)
    iPhone 11 (4AA076A4-4933-46F3-BBCE-15F723EF694A) (Shutdown)
    ...

The easiest way forward is to use the macOS Orb as documented here:

https://circleci.com/docs/2.0/testing-ios/#pre-starting-the-simulator

I recently added a new command to the orb which can boot the simulator on Xcode 13+

Source code for this step is here if you are curious about how it works:

We have an issue that was triggered only by changing our circleci run target from Xcode 12.5.1 to Xcode 13.0.0.

Same code was working all fine on 12.5.1

Any ideas?
We took care of checking that Simulator iPhone 8 with iOS 14.5 was available in your image.

[13:18:40]: Running Tests: ▸ Touching ProjectNameTests.xctest (in target 'ProjectNameTests' from project 'ProjectName')
[13:20:05]: ▸ 2021-10-26 13:20:05.172 xcodebuild[8425:56916]  iOSSimulator: EDD63EED-4FDE-4CDB-BD5B-14E9BC2D4F26: Failed to launch app with identifier: com.org.ios.development.ProjectName and options: {
[13:20:05]: ▸     "activate_suspended" = 0;
[13:20:05]: ▸     arguments =     (
[13:20:05]: ▸         "-AppleLanguages",
[13:20:05]: ▸         "(ja)",
[13:20:05]: ▸         "-AppleTextDirection",
[13:20:05]: ▸         NO
[13:20:05]: ▸     );
[13:20:05]: ▸     environment =     {
[13:20:05]: ▸         "CA_ASSERT_MAIN_THREAD_TRANSACTIONS" = 0;
[13:20:05]: ▸         "CA_DEBUG_TRANSACTIONS" = 0;
[13:20:05]: ▸         "DYLD_FALLBACK_FRAMEWORK_PATH" = "/Applications/Xcode-13.0.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks";
[13:20:05]: ▸         "DYLD_FALLBACK_LIBRARY_PATH" = "/Applications/Xcode-13.0.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/lib";
[13:20:05]: ▸         "DYLD_FRAMEWORK_PATH" = "/Users/distiller/project/fastlane/derived_data/Build/Products/Debug-iphonesimulator";
[13:20:05]: ▸         "DYLD_INSERT_LIBRARIES" = "/Users/distiller/project/fastlane/derived_data/Build/Products/Debug-iphonesimulator/ProjectName DEV.app/Frameworks/libXCTestBundleInject.dylib:/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 14.5.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libMainThreadChecker.dylib";
[13:20:05]: ▸         "DYLD_LIBRARY_PATH" = "/Users/distiller/project/fastlane/derived_data/Build/Products/Debug-iphonesimulator";
[13:20:05]: ▸         "LLVM_PROFILE_FILE" = "/var/folders/bl/wbxjgtzx7j5_mjsmfr3ynlc00000gp/T/com.org.ios.development.ProjectName/E0E1EF91-468C-4303-9C63-E620AD622E69-8425-0000021A1DC3E94A/028538D1-DA0B-4038-9A1E-CE7BAF891F0C-%p%c.profraw";
[13:20:05]: ▸         "MTC_CRASH_ON_REPORT" = 1;
[13:20:05]: ▸         NSApplicationQuitWithoutSuddenTermination = YES;
[13:20:05]: ▸         NSUnbufferedIO = YES;
[13:20:05]: ▸         "OS_ACTIVITY_DT_MODE" = YES;
[13:20:05]: ▸         "RUN_DESTINATION_DEVICE_NAME" = "Clone 4 of iPhone 8";
[13:20:05]: ▸         "RUN_DESTINATION_DEVICE_PLATFORM_IDENTIFIER" = "com.apple.platform.iphonesimulator";
[13:20:05]: ▸         "RUN_DESTINATION_DEVICE_UDID" = "EDD63EED-4FDE-4CDB-BD5B-14E9BC2D4F26";
[13:20:05]: ▸         "SQLITE_ENABLE_THREAD_ASSERTIONS" = 1;
[13:20:05]: ▸         XCInjectBundleInto = unused;
[13:20:05]: ▸         XCTestBundlePath = "PlugIns/ProjectNameTests.xctest";
[13:20:05]: ▸         XCTestConfigurationFilePath = "";
[13:20:05]: ▸         XCTestSessionIdentifier = "300F7FCA-5A18-4E52-B43E-BEE61AA12CFB";
[13:20:05]: ▸         "__XCODE_BUILT_PRODUCTS_DIR_PATHS" = "/Users/distiller/project/fastlane/derived_data/Build/Products/Debug-iphonesimulator";
[13:20:05]: ▸         "__XPC_DYLD_FRAMEWORK_PATH" = "/Users/distiller/project/fastlane/derived_data/Build/Products/Debug-iphonesimulator";
[13:20:05]: ▸         "__XPC_DYLD_LIBRARY_PATH" = "/Users/distiller/project/fastlane/derived_data/Build/Products/Debug-iphonesimulator";
[13:20:05]: ▸         "__XPC_LLVM_PROFILE_FILE" = "/var/folders/bl/wbxjgtzx7j5_mjsmfr3ynlc00000gp/T/com.org.ios.development.ProjectName/E0E1EF91-468C-4303-9C63-E620AD622E69-8425-0000021A1DC3E94A/028538D1-DA0B-4038-9A1E-CE7BAF891F0C-%p%c.profraw";
[13:20:05]: ▸     };
[13:20:05]: ▸     stderr = "/dev/ttys006";
[13:20:05]: ▸     stdout = "/dev/ttys006";
[13:20:05]: ▸     "terminate_running_process" = 1;
[13:20:05]: ▸     "wait_for_debugger" = 0;
[13:20:05]: ▸ } (error = Error Domain=FBSOpenApplicationServiceErrorDomain Code=1 "The request to open "com.org.ios.development.ProjectName" failed." UserInfo={BSErrorCodeDescription=RequestDenied, NSLocalizedDescription=The request to open "com.org.ios.development.ProjectName" failed., NSUnderlyingError=0x7fdecd9d49c0 {Error Domain=FBProcessExit Code=64 "The process failed to launch." UserInfo={NSUnderlyingError=0x7fdeb05febb0 {Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x7fde7ed45860 {Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied" UserInfo=0x7fdeb05fecb0 (not displayed)}}}, BSErrorCodeDescription=launch-failed, NSLocalizedFailureReason=The process failed to launch.}}, FBSOpenApplicationRequestID=0x1999, NSLocalizedFailureReason=The request was denied by service delegate (SBMainWorkspace).})

Too long with no output (exceeded 30m0s): context deadline exceeded
1 Like