Lesstep
GitHub Actions・macOS・2026年11月5日に確認

runs-on: xcode-27 で「Unable to find a device matching the provided destination specifier」:iPhone Duo しかない iOS 27.1 のシミュレーターと、イメージにある Xcode の版

GitHub の Xcode 27 のランナーのイメージが一般公開されました(GitHub の changelog・2026年10月15日)。macOS 27 の上で動き、イメージはこれから macOS の版でなく Xcode の大きい版ごとに分かれ、ラベルは xcode-27 と xcode-27-xlarge です。Apple Silicon(arm64)だけで動きます。移したあとにいちばんよく落ちるのは、存在しないテストの行き先です:既定の Xcode は 27.1 で、その iOS 27.1 のシミュレーターのランタイムにはデバイスが1つ、iPhone Duo しかありません。

見え方

xcodebuild test がテストをビルドする前に止まります(runner-images #15000):

xcodebuild test -destination 'platform=iOS Simulator,name=iPhone 18 Pro,OS=27.1' ...
xcodebuild: error: Unable to find a device matching the provided destination specifier

iOS 27.1 のランタイムが受け持つデバイスを並べると、理由が分かります:

xcrun simctl list -j runtimes | jq '.runtimes[] | select(.version=="27.1") | [.supportedDeviceTypes[].name]'
["iPhone Duo"]

同じランタイムなら CI の外の Mac でも同じなので、イメージの不具合ではなく Apple の iOS 27.1 の出し方です。issue のコメントは、iOS 27.1 は iPhone Duo のためだけで、すべてのデバイス向けには 27.2 が続く、と読んでいます。

イメージにあるもの

イメージの readme から(イメージの版 20261026.0314.1):

一覧はイメージの版ごとに変わります。ジョブが受け取ったものを出すには:

xcodebuild -version
xcrun simctl list devices available

直し方

actionlint と新しいラベル

actionlint 1.7.12 はまだ xcode-27 を知らず、知らないランナーのラベルとして出します(sauna-studio/sauna-app #8)。知っている版が出るまでは .github/actionlint.yaml に並べます:

self-hosted-runner:
  labels:
    - xcode-27
    - xcode-27-xlarge

見分け方

失敗したジョブを IntelliJ IDEA から見るなら

Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べるので、シミュレーターが見つからなかったステップがすぐ分かり、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。

JetBrains Marketplace で入れる

GitHub と GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標、Apple・Xcode・iPhone・macOS は Apple Inc. の商標です。このページはそのいずれとも提携しておらず、承認も受けていません。

ほかに:macOS 14 の終わり · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English