본문으로 건너뛰기

iOS 워크플로를 runs-on 한 줄로 XenoCI에 옮기기

GitHub Actions의 macOS 잡에서 runs-on 한 줄만 xenoci-macos로 바꾸면 나머지 스텝은 그대로 Mac mini M4 위의 새 VM에서 돌아요, 옮기는 순서와 미리 알아 두실 차이를 정리했어요

GitHub가 제공하는 iOS 시작 워크플로(ci/ios.yml)도 runs-on: macos-latest로 시작해요, 이 줄 하나만 바꾸면 나머지 스텝은 그대로 Mac mini M4 위의 새 VM에서 돌아요

준비

  1. 콘솔에 GitHub로 로그인해요, 가입은 GitHub 로그인만 받아요
  2. 처음 나오는 조직 연결에서 GitHub 조직에 XenoCI 앱을 설치하고 빌드할 저장소를 골라요
  3. 개인 계정에는 앱을 설치할 수 없어서 조직이 필요해요, 따로 발급할 키나 시크릿은 없어요

바꾸는 줄

jobs:
  build:
-   runs-on: macos-latest
+   runs-on: xenoci-macos
    steps:
      - uses: actions/checkout@v4
      - run: xcodebuild -scheme App -destination 'platform=iOS Simulator,name=iPhone 17e' test

콘솔 GitHub Actions → 마이그레이션 마법사를 쓰시면 저장소와 macOS 잡을 고르고 변경 내용을 확인한 뒤 PR까지 만들어 줘요, PR을 병합하고 push하거나 Actions 탭에서 수동 실행하면 콘솔 실행 기록에서 상태와 로그를 볼 수 있어요

그대로 두는 것

  • ubuntu 잡, 시크릿, matrix, actions/checkout 같은 나머지 스텝
  • actions/cache, 저장소는 XenoCI 캐시로 바뀌고 조직당 25GB 무료(모든 저장소 합계), 7일 동안 안 쓰면 지워져요
  • 서명 인증서나 토큰은 지금처럼 저장소 Secrets에 두고 env로 넘기면 돼요

옮기기 전에 확인하실 것

  • 잡 환경: VM은 vCPU 4, 메모리 7GB이고 Xcode는 27.0과 26.6 중 잡마다 골라요
  • 호환 표: GitHub 호스트 macos-15와 나란히 돌려 본 결과와 다른 점, 대안은 GitHub Actions 호환 표에 있어요, 포크 PR, schedule 실제 실행, fastlane match는 나란히 돌리지 못해 규칙 기준으로 적어 두었어요
  • 라벨 오타: xenoci-mac처럼 조금만 달라도 잡이 GitHub에서 Queued로 남아요
  • 스티키 디스크는 준비 중이에요, 워크플로에 그 단계가 있어도 잡은 실패하지 않고 디스크 없이 돌아요

요금

  • 시작한 분마다 0.05크레딧(50원), 10초면 1분, 1분 1초면 2분으로 계산하고 대기와 VM 준비 시간은 차감하지 않아요
  • 1크레딧 = 1,000원이고 부가세 포함이에요
  • 조직마다 매달 무료 5크레딧(약 100분)이 매월 1일 새로 채워지고 이월되지 않아요, 무료 크레딧은 한 사람(GitHub 계정)당 한 조직까지예요
  • 무료 크레딧으로는 잡이 1개씩 돌아요
  • 자동 결제는 없고 카드 정보도 저장하지 않아요, 모자라면 콘솔에서 선불로 충전해요, 자세한 내용은 요금제에 있어요

얼마나 달라지나요

자체 측정(2026년 10월 24일), IceCubesApp Debug 시뮬레이터 빌드를 캐시 없이 돌린 가운데 값은 GitHub macos-latest 8분 42초, XenoCI 3분 2초였어요, 측정 조건은 GitHub Actions 비교 측정 방법에 있어요

한 앱의 Debug 빌드 결과라서 여러분 앱에서는 다를 수 있어요, 같은 커밋을 양쪽에서 한 번씩 돌려 보시는 게 가장 정확해요, 두 러너의 요금과 한도는 GitHub 호스티드 macOS 러너 비교에 나란히 있어요

옮기다 막힌 곳이나 호환 표에 없는 차이를 찾으시면 알려 주시면 감사드리겠습니다