GitHub Actions에서 Xcode 27 쓰기, 어떤 러너를 골라야 할까?

워크플로에 Xcode 27을 적어 두었는데도 다음 빌드의 기본 Xcode와 SDK가 바뀌어 있다. xcode-27 러너에서 같은 컴파일러를 계속 쓰려면 무엇을 고정해야 할까?

GitHub Actions에서 Xcode 27 쓰기, 어떤 러너를 골라야 할까?
세 줄 요약
  • Xcode 27용 GitHub 호스팅 러너는 xcode-27과 xcode-27-xlarge 라벨로 선택한다.
  • 27 계열을 선택해도 세부 버전과 설치 도구는 이미지 업데이트에 따라 달라진다.
  • 기존 작업을 옮길 때는 선택된 Xcode와 빌드에 쓰는 실행 파일을 함께 확인해야 한다.

Xcode 27이 필요하면 라벨로 직접 선택한다

GitHub Actions에서 Xcode 27로 Apple 앱을 빌드하려면 작업의 runs-on을 xcode-27로 지정하면 된다. 더 큰 러너용 라벨은 xcode-27-xlarge다. 10월 15일 정식 제공으로 전환된 이미지는 macOS 27에서 실행되며, 두 라벨 모두 Apple Silicon 기반이다. 미리보기 때부터 이 라벨을 썼다면 정식 전환만을 이유로 YAML을 바꿀 필요는 없다.

macos-latest가 원하는 Xcode를 골라 줄 것이라고 기대하는 것과는 다르다. 10월 26일 기준 공식 이미지 목록에서 이 라벨은 macOS 26 arm64 이미지를 가리킨다. OS의 최신 라벨과 프로젝트가 요구하는 도구 버전은 각각 선택해야 할 대상이다.

xcode-27은 Xcode 27.0을 영구 고정하는 설정이 아니다

새 라벨은 Xcode의 주 버전을 기준으로 이미지를 고르는 방법이다. 같은 27 계열 안에서도 기본 버전은 바뀔 수 있다. 이미지 20261023.0307.1의 설치 목록에는 Xcode 27.1이 기본값이고 27.0과 27.2 RC도 함께 들어 있다. 같은 페이지의 SDK 표는 Xcode 27.0에 iOS 27.0, 27.1에 iOS 27.1을 연결한다.

원하는 주 버전을 골랐다는 사실만으로 매번 같은 컴파일러·SDK를 쓴다고 볼 수 없는 이유다. 이미지 지원 정책에서도 새 패치가 나오면 이전 패치를 교체한다고 명시한다. 특정 패치가 계속 남아 있을 것을 전제로 경로를 박아 두면 이후 이미지에서 그 경로를 찾지 못할 수 있다.

선택정하는 것추가로 볼 것
runs-on: xcode-27실행할 이미지 계열해당 실행의 이미지 버전
활성 Xcode 경로명령줄에서 사용할 도구경로에 설치된 실제 Xcode
SDK·시뮬레이터앱의 빌드·테스트 환경프로젝트가 요구하는 항목의 설치 여부

먼저 선택된 도구를 로그에 남긴다

앱 전체 빌드에 들어가기 전, 러너가 어떤 Xcode를 선택했는지 출력하는 작은 작업을 둘 수 있다. 다음은 도구 확인용 워크플로 예시다.

name: Check Apple toolchain
on: workflow_dispatch
jobs:
  toolchain:
    runs-on: xcode-27
    steps:
      - name: Show selected developer tools
        run: |
          xcode-select --print-path
          xcodebuild -version

Apple의 명령줄 도구 안내에 따르면 xcode-select --print-path는 활성 개발자 디렉터리를 보여준다. 다른 설치본을 써야 한다면 해당 이미지에 존재하는 Xcode 경로를 확인한 뒤 xcode-select --switch로 바꾼다. 이전 러너의 경로를 그대로 복사하는 것보다 현재 설치 목록과 맞추는 것이 먼저다.

버전이 맞으면 설치 목록의 SDK·시뮬레이터를 프로젝트의 테스트 대상과 대조한다. 앱에서 사용할 테스트 기기가 목록에 있는지까지 확인해야 빌드 도구를 골랐다는 사실과 테스트를 실행할 수 있다는 사실을 구분할 수 있다.

Intel 전용 실행 도구가 있다면 별도로 옮겨야 한다

runs-on은 작업을 실행하는 머신을 정하는 설정이다. 앱 프로젝트의 배포 대상이나 지원 아키텍처를 자동으로 바꾸는 스위치는 아니다. 따라서 러너가 arm64라는 이유만으로 앱의 모든 타깃을 바꿀 필요는 없지만, 빌드 도중 내려받아 실행하는 도구는 그 머신에서 동작해야 한다.

기존 작업이 Intel 전용 실행 파일이나 특정 설치 경로에 의존한다면 그 부분을 먼저 살펴야 한다. Xcode 27이 필요한 작업은 새 라벨에서 검증하고, Intel 호스트 자체가 필요한 작업은 macos-26-intel 같은 별도 선택지를 검토할 수 있다. 다만 Intel 라벨로 옮겼다고 Xcode 27 이미지까지 제공되는 것은 아니다. 새 도구 체인 선택과 기존 실행 환경 유지 중 어느 조건이 필수인지에 따라 작업을 나누는 편이 명확하다.