Xcode 11 GM Seed 1 Released

We have released an Xcode 11 GM Seed 1 image today. You can select the image by adding the following to a job in config.yml :

macos:
  xcode: 11.0.0

There are some changes from the Xcode 11 Beta 7 image:

  • Xcode is now version 11.0 GM Seed Version 11A419c
  • We have added more SDKs and simulators to the image. In addition to the suite of iOS 13 simulators, we have also installed simulators and SDKs for
    • iOS 12.2
    • iOS 11.4
    • tvOS 12.2
    • watchOS 5.2
  • To account for the extra disk space for the SDKs, we have increased the diskl size from 64G to 73G, and the free space for running jobs is now 29G.

Minor changes:

  • Node upgraded from 12.9.1 -> 2.10.0
  • Fastlane 2.129.0 => 2.130.0

The full manifest of the installed software and SDKs is available here.

Known issues

  • There is an issue where a dialog appears for the first 30 seconds after the image boots reporting that the OS did not shut down cleanly on the last boot. This might impact UI tests. We pre-boot VMs so that builds can start as quickly as possible, so in many cases our VMs have been booted more than 30 seconds prior before to build running, which will reduce the rate of occurrence of this bug.

Upcoming deprecations / changes

4 Likes

Great! Thanks for the quick turnaround @marc!

Any idea why xcodebuild fails to resolve package dependencies in this image? I expect this might be an Xcode bug.

I keep getting: Authentication failed because the credentials were rejected, but I can’t seem to debug what’s going wrong. If I ssh into the machine I can clone the offending GitHub repos through ssh, but xcodebuild still fails.

I’ve had the same issue with Xcode failing to resolve package dependencies. I believe it’s ultimately caused by this setting in ~/.gitconfig causing all GitHub URLs to be rewritten as SSH URLs:

[url "ssh://git@github.com"]
        insteadOf = https://github.com

This isn’t necessary for cloning public GitHub repos, so on my project I added an early build step to my job that overrides this with a much more specific pattern that only matches private repos in my GitHub organisation. This way all my package dependencies are still cloned over HTTPS and don’t hit the SSH host verification issue noted in the Xcode 11 release notes:

  • When using xcodebuild , resolving packages may fail to verify SSH fingerprints unless that fingerprint is already in the ~/.ssh/known_hosts file. (50686014)

    Workaround: SSH into the host and verify the fingerprint from the command line before using xcodebuild , or manually add the host fingerprint to the ~/.ssh/known_hosts file.

2 Likes

Thanks for the quick turnaround. This is so helpful. One thing that would have helped going forward would be to be able to specify which beta we built with rather than being force upgraded. Having your VM change out from under us without changing our config file sometimes caused us to scramble - especially on the betas. Even if you remove the old betas a week later, it would still have given us time to migrate and fix any issues on a newer beta

@marc Is it possible to install xcode11 command line tools?

Any idea when more simulators will come to this build, like iPhoneXs not only iPhone 8 and iPhone 8 Plus?

Yeah, that seems to be a workaround for the problem. I’ve managed to get the public repos working, but the private ones still don’t work (I’ve tried https with url username / password and it rejects the SSL certificate).

I wonder why Xcode doesn’t honor the SSH configuration to allow all keys from github.com, though.

@marc Why is ruby 2.4 missing?

Hi Zerob,

We have the system Ruby installed, as well as the stable releases as documented on https://www.ruby-lang.org/en/downloads/ at the time that we build the image, which is 2.5 and 2.6. Ruby 2.4 is marked as ā€œIn security maintenance phase (will EOL soon!)ā€, so we don’t install it.

When installing software, there is a balance that we need to maintain – the most software that we install, the larger the image, which means that it takes us longer to distribute the images, and we would have to limit the number of images that are available.

Hi Daniel,

This is something that we would like to do. I’ll add a card to our backlog to track it. Logged as CIRCLE-21017.

Marc

1 Like

Hi Fassko,

Can you email a specific list of the devices and SDKs that you would like to support@circleci.com please? I’ve tried to add iOS 11, 12 and 13 for all devices, so any omissions are probably an error on our part.

Thanks,

Marc

Just a heads-up, it looks like Apple have released GM 2 and are now rejecting uploads from GM 1:

[11:50:30]: ERROR ITMS-90534: ā€œInvalid Toolchain. Your app was built with an unsupported version of Xcode or SDK. If you plan to submit this build to the App Store, make sure you are using the GM version of Xcode 9 and the SDK for iOS 11, tvOS 11, watchOS 4, or macOS 10.13 or later. If you are using an Xcode beta version to test your app, make sure you are using the latest supported version. For more information about supported beta versions, view the TestFlight Release Notes (https://developer.apple.com/testflight/release-notes/).ā€

Ignoring ā€˜iPhone XŹ€ (13.0)’, couldn’t find matching simulator

iPhone XR (13.0) seems to be missing now (but was present in last beta).

We will need iOS 13 simulators for a lot more devices (all iPhones from 6s onward, inclusive). Reason being: we to run tests on the older devices also.

Thank you.

https://circle-macos-docs.s3.amazonaws.com/image-manifest/v1136/index.html

List of ones that appear to be missing:

  • iPhone 6s (11.4)
  • iPhone 6s (12.2)
  • iPhone 6s Plus (11.4)
  • iPhone 6s Plus (12.2)
  • iPhone 7 (11.4)
  • iPhone 7 (12.2)
    missing iPhone 7 (13.0)
  • iPhone 7 Plus (11.4)
  • iPhone 7 Plus (12.2)
    missing iPhone 7 Plus (13.0)
  • iPhone 8 (11.4)
  • iPhone 8 (12.2)
  • iPhone 8 (13.0)
  • iPhone 8 Plus (11.4)
  • iPhone 8 Plus (12.2)
  • iPhone 8 Plus (13.0)
  • iPhone SE (11.4)
  • iPhone SE (12.2)
    missing iPhone SE (13.0)
  • iPhone X (11.4)
  • iPhone X (12.2)
    missing iPhone X (13.0)
  • iPhone Xs (12.2)
    missing iPhone Xs (13.0)
  • iPhone Xs Max (12.2)
    missing iPhone Xs Max (13.0)
  • iPhone XŹ€ (12.2)
    missing iPhone XŹ€ (13.0)

I am seeing an issue with copying system logs:

+--------------------+----+
|      Test Results       |
+--------------------+----+
| Number of tests    | 12 |
| Number of failures | 0  |
+--------------------+----+

[13:42:28]: ------------------------------
[13:42:28]: --- Collecting system logs ---
[13:42:28]: ------------------------------
[13:42:28]: $ xcrun simctl spawn 11D27F33-48EC-41A8-875E-7D2446C12EBE log collect --output /Users/distiller/project/build/scan/system_logs-iPhone\ 5s_iOS_12.2.logarchive 2>/dev/null

[13:42:29]: Exit status: 124

The same command works locally, so it might be a CircleCI environment issue?

1 Like

Running into this also. Xcode 11 supports swift packages much better now so there are going to be a lot more situations where this comes up.

I’m seeing this in the checkout step in the log that looks likely to be the issue:

use git+ssh instead of https

git config --global url.ā€œssh://git@github.comā€.insteadOf ā€œhttps://github.comā€ || true
git config --global gc.auto 0 || true

but I’m not sure where that’s coming from or how to fix it (yet).

Any pointers on how to do this?
New to circleci / fastlane and not sure how I’d do this.
If I add a - run step before the - checkout step in the config.yml file:

  - run:
      name: check git config
      command: git config -l

but that’s not showing this setting so this makes it seem like if I try to change it in this step before checkout it’s just going to get overridden by something in the checkout step (?).

TIA

Here’s what I’m using to work around the URL rewriting issue:

      - run:
          name: Override GitHub URL rewriting
          command: |
            git config --global --unset url."ssh://git@github.com".insteadOf &&
            git config --global url."ssh://git@github.com/my-org".insteadOf "https://github.com/my-org"
1 Like

Thank you! Where are you putting this in the sequence of run commands?
I currently have:

  - checkout
  - run:
      name: Build and run tests
      command: fastlane scan
      environment:
        SCAN_DEVICE: iPhone 11 (13.0)
        SCAN_SCHEME: Scheme1

Seems like it goes after the checkout and before the run to build…

Thank you very much!

@marc When can we get an image with Xcode 11 GM Seed 2. It is already released