공식 제한 문서는 GitHub Actions 작업 하나의 최대 실행 시간을 6시간으로 안내합니다. GitHub Actions 공식 제한 문서에 나온 이 상한에 자주 닿거나 대기열이 길다면, 단순히 더 비싼 러너를 고르는 것이 답은 아닙니다. 2026년 9월 4일 기준으로는 짧고 드문 작업은 GitHub Actions macOS Runner, 안정적인 고사용량 작업과 고정 환경은 자체 호스팅 Mac을 우선 검토하는 편이 합리적입니다. 이번 주에는 피크 동시 실행 수, 평균 빌드 시간, 목표 대기 시간을 먼저 기록하십시오.
마지막 업데이트: 2026년 9월 4일. GitHub의 러너 요금, 사용 제한, 이미지와 Xcode 27 상태를 공식 문서에서 다시 확인했습니다. 정책이 바뀌면 아래 계산도 다시 해야 합니다.
이 글이 필요한 팀과 먼저 확인할 범위
GitHub Actions macOS 작업이 자주 대기하거나 시간 제한에 걸리는 DevOps 엔지니어를 위한 글입니다.
iOS 빌드의 전체 비용을 계산해야 하는 팀 책임자, 자체 호스팅 러너를 배치하려는 플랫폼 엔지니어도 대상입니다.
이 글은 특정 장비나 고정 절약률을 약속하지 않습니다. GitHub가 제공하는 호스팅 러너, 자체 호스팅 러너, Xcode 27 프리뷰 라벨은 계속 바뀔 수 있으므로, 실제 선택은 네 가지 기록으로 결정해야 합니다.
- 한 달 동안 실행된 작업 시간
- 가장 바쁜 시간대의 동시 작업 수
- 작업 대기 시간
- 실패와 재실행에 사용한 시간
분 단가보다 전체 비용을 먼저 계산합니다
GitHub Actions의 공식 macOS 요금은 공식 러너 요금 문서에서 확인해야 합니다. 문서의 현재 단가를 적용할 때는 Linux 작업의 분 단가와 단순 비교하지 마십시오. macOS 작업은 사용하는 러너 종류와 계정 계획에 따라 계산 방식이 달라질 수 있습니다.
전체 비용은 다음처럼 나누어 기록하면 됩니다.
- 실행 비용: 실제 macOS 작업 시간 × 공식 macOS 단가
- 재실행 비용: 실패한 작업의 재실행 시간 × 같은 단가
- 대기 비용: 작업을 기다린 개발자와 검토자의 유휴 시간
- 캐시 손실 비용: 의존성, 빌드 중간 결과, 시뮬레이터를 다시 내려받는 시간
- 운영 비용: 이미지 점검, 인증서 교체, 러너 업데이트, 장애 대응에 든 시간
자체 호스팅 Mac은 사용 요금이 보이지 않는다고 무료가 아닙니다. 장비 구매 또는 임대료, 네트워크, 저장 공간, 전원과 복구 장치, 운영자의 관리 시간이 비용으로 이동합니다. 자체 호스팅 러너의 책임 범위도 함께 확인해야 합니다.
따라서 비교 기간을 통일해야 합니다. 예를 들어 호스팅 러너는 한 달의 모든 작업을 넣고, 자체 호스팅은 가장 빠른 한 번의 빌드만 넣으면 안 됩니다. 같은 저장소, 같은 테스트 범위, 같은 캐시 정책으로 비교해야 합니다.
동시 실행과 대기열은 별도 용량으로 봅니다
월간 작업 시간이 적어도 출시 직전에 작업이 몰리면 개발자가 오래 기다릴 수 있습니다. 반대로 총 실행 시간이 많아도 작업이 하루 종일 고르게 분산되면 대기 문제가 작을 수 있습니다.
용량을 계산할 때는 다음 순서가 안전합니다.
- 가장 바쁜 시간대에 동시에 들어오는 작업 수를 기록합니다.
- 작업 종류별 평균 실행 시간을 나눕니다. 빌드, 단위 테스트, 사용자 인터페이스 테스트, 배포 서명 작업을 한 값으로 합치지 않습니다.
- 목표 대기 시간을 정합니다. 검토 전에 끝나야 하는 작업과 야간 작업은 같은 기준을 적용할 필요가 없습니다.
- GitHub 계정 계획의 동시 실행 제한과 macOS 러너 제한을 공식 제한 문서에서 확인합니다.
- 제한에 걸린 것인지, 실제 러너가 부족한 것인지 구분합니다.
작업 하나가 6시간 제한에 가까워진다면 동시 러너를 늘리는 것만으로 해결되지 않습니다. 캐시 누락, 교착 상태, 지나치게 큰 테스트 조합부터 조사해야 합니다.
호스팅 러너를 선택할 때는 작업에 러너를 지정하는 공식 안내를 기준으로 라벨을 설계하십시오. 자체 호스팅에서는 라벨을 운영 목적별로 나눠야 합니다. 예를 들면 일반 빌드, 배포 서명, 사설망 접근 노드를 분리할 수 있습니다. 러너 라벨 설정 방법을 사용하면 작업이 잘못된 노드로 배정될 위험을 줄일 수 있습니다.
자동 이미지와 고정 환경은 서로 다른 운영 모델입니다
호스팅 러너의 장점은 새 운영 체제와 개발 도구 이미지를 직접 설치하지 않아도 된다는 점입니다. 대신 이미지가 갱신되면 같은 커밋이 다른 SDK나 도구 조합에서 실행될 수 있습니다. 공식 이미지 변경 사항은 러너 이미지 저장소의 변경 기록에서 확인해야 합니다.
자체 호스팅 Mac은 시스템과 Xcode 버전을 고정하기 쉽습니다. 그러나 고정은 방치와 다릅니다. 보안 업데이트를 미루면 재현성은 좋아져도 보안 위험이 커집니다. Xcode 27로 옮길 때는 다음 항목을 한 묶음으로 기록하십시오.
- macOS 버전과 빌드 식별자
- Xcode 27 버전과 SDK 목록
- 패키지 관리자와 의존성 잠금 파일
- 캐시 키와 캐시 생성 시점
- 시뮬레이터 런타임
- 빌드 스크립트와 서명 설정
이 기록이 없으면 실패 원인을 러너 문제인지 코드 문제인지 구분하기 어렵습니다. Xcode 27 프리뷰 라벨은 안정 버전과 같은 결과를 보장하는 표지가 아닙니다. 릴리스 전에 별도 검증 작업으로 분리하십시오.
지속 캐시와 임시 디스크의 차이를 비용에 넣습니다
호스팅 러너는 작업이 끝난 뒤 환경이 폐기되는 방식이 일반적입니다. 의존성, 파생 데이터, 시뮬레이터 런타임, 빌드 산출물을 매번 준비하면 실행 시간과 네트워크 사용량이 늘어날 수 있습니다.
GitHub Actions의 캐시는 만능 저장소가 아닙니다. 공식 의존성 캐시 문서에 따라 운영 체제, 잠금 파일, 도구 버전을 반영한 키를 설계해야 합니다. 잘못된 키는 오래된 의존성을 재사용하거나, 캐시 적중률은 낮고 저장 공간만 차지하는 결과를 만들 수 있습니다.
자체 호스팅 노드는 지속 디스크를 활용할 수 있습니다. 이때 얻는 이점은 캐시 재사용 시간입니다. 반대로 직접 해야 하는 일도 늘어납니다.
- 저장 공간이 임계값에 도달하기 전 정리
- 브랜치와 저장소별 캐시 격리
- 손상된 파생 데이터 삭제
- 시뮬레이터 런타임과 빌드 산출물의 보존 기간 설정
- 민감한 산출물의 삭제 확인
캐시는 빠르게 만드는 장치이지 신뢰 경계를 대신하는 장치가 아닙니다. 서명 파일이나 배포 비밀 값을 일반 캐시에 넣지 마십시오.
서명과 사설망은 편의보다 격리가 먼저입니다
iOS 배포 작업에는 인증서, 프로비저닝 파일, 키체인, 저장소 비밀 값이 함께 사용될 수 있습니다. 호스팅 러너는 짧은 수명의 환경을 만들기 쉽지만, 작업마다 비밀 값을 주입하고 종료 뒤 흔적을 확인해야 합니다.
자체 호스팅 러너는 편리하게 사설망과 내부 저장소에 접근할 수 있습니다. 그만큼 위험 범위도 커집니다. 특히 외부 기여자가 실행할 수 있는 작업에 서명 키가 노출되면 저장소 코드만 검토하는 방식으로는 부족합니다.
다음 기준을 적용하십시오.
- 서명 작업과 일반 테스트 작업을 다른 러너 그룹으로 나눕니다.
- 러너 그룹 공식 문서에 따라 접근 가능한 저장소를 제한합니다.
- 외부 풀 리퀘스트에서는 서명 비밀 값과 사설망 자격 증명을 주입하지 않습니다.
- 인증서와 개인 키에는 만료일, 담당자, 교체 절차를 기록합니다.
- 작업 종료 뒤 임시 키체인, 프로비저닝 파일, 로그를 삭제합니다.
- 러너가 침해되었다고 가정한 폐기와 재등록 절차를 준비합니다.
주의: 자체 호스팅 러너는 신뢰된 코드만 실행하는 전용 노드로 취급해야 합니다. 편의를 위해 모든 저장소와 모든 브랜치에 같은 라벨을 열어 두면, 캐시와 키체인이 서로 다른 작업에 노출될 수 있습니다.
유지 관리 시간까지 포함하면 선택이 달라집니다
호스팅 러너에서는 이미지 변경과 사용 제한을 확인하는 일이 중심입니다. 장애가 나면 다른 작업 방식으로 우회하기도 쉽습니다. 대신 특정 이미지가 사라지거나 Xcode 버전이 바뀌는 순간 빌드가 깨질 수 있습니다.
자체 호스팅에서는 다음 작업을 직접 맡습니다.
- 운영 체제와 Xcode 업데이트 검증
- 러너 프로그램 업데이트와 재등록
- 디스크 정리와 상태 감시
- 네트워크와 사설 저장소 연결 확인
- 인증서와 키체인 교체
- 장애 노드의 격리와 대체
- 전원 장애 뒤 무인 복구
이 과정은 작업이 실행되지 않는 시간에도 발생합니다. 자체 호스팅을 선택한다면 운영 기록에 실행 시간뿐 아니라 관리 시간도 넣으십시오. Hashvps의 원격 Mac 개발 환경 사례를 검토할 때도, 장비 사양 자체보다 필요한 운영 범위와 접근 방식을 비교하는 것이 좋습니다.
조건별로 러너를 결정하는 점검 목록
아래 항목에 체크하면서 마지막으로 선택하십시오.
-
[ ] 작업이 드물고 실행 시간이 짧으며 운영 인력이 부족합니다.
→ GitHub Actions macOS Runner를 우선 선택합니다. -
[ ] 작업량이 월별로 크게 흔들립니다.
→ 평소에는 호스팅 러너를 사용하고 피크를 흡수합니다. -
[ ] 특정 Xcode와 SDK를 장기간 고정해야 합니다.
→ 자체 호스팅 Mac을 평가합니다. -
[ ] 사설 저장소나 내부 서비스에 지속해서 접근해야 합니다.
→ 자체 호스팅 노드를 별도 네트워크 구역에 배치합니다. -
[ ] 평일 업무 시간에만 대기열이 길어집니다.
→ 먼저 캐시와 작업 분할을 고친 뒤 러너를 추가합니다. -
[ ] 안정적인 고사용량 작업이 계속되고 캐시 재사용 효과가 큽니다.
→ 장비 또는 임대료, 네트워크, 운영 시간을 포함해 자체 호스팅을 계산합니다. -
[ ] 피크는 높지만 평소 사용량은 낮습니다.
→ 일반 작업은 호스팅으로, 고정 작업은 자체 호스팅으로 나누는 혼합 방식을 선택합니다. -
[ ] 물리 장비나 특정 네트워크 장치가 꼭 필요합니다.
→ 원격 임대 환경보다 직접 관리하는 장비가 적합할 수 있습니다.
체크한 항목이 앞부분에 몰리면 호스팅 러너 쪽에 가깝습니다. 뒤쪽 항목이 많으면 자체 호스팅을 시험하십시오. 양쪽이 섞이면 전체 환경을 한 번에 옮기지 말고, 고정 환경이 필요한 배포 작업만 먼저 분리하는 방식이 안전합니다.
시험 운영은 같은 작업으로 검증합니다
자체 호스팅으로 바로 전환하지 말고, 먼저 짧은 시험 기간을 정하십시오. 기간 자체보다 비교 규칙이 중요합니다. 같은 커밋 집합과 같은 테스트 범위로 다음 다섯 단계를 실행하십시오.
- 최근 작업 기록에서 피크 동시 실행 수, 평균 실행 시간, 평균 대기 시간을 추출합니다.
- 호스팅 러너에서 캐시 적중 여부, 실패율, 재실행 시간을 기록합니다.
- 같은 라벨과 같은 Xcode 계열을 사용하는 자체 호스팅 노드를 준비합니다.
- 서명 없는 테스트 작업부터 옮긴 뒤, 저장소 접근과 캐시 격리를 확인합니다.
- 마지막으로 서명 작업을 제한된 그룹에서 실행하고 비용, 대기, 복구 시간, 관리 시간을 함께 비교합니다.
합격 기준은 단순한 가장 빠른 빌드가 아닙니다. 피크 대기 시간이 목표 안에 들어오는지, 같은 커밋이 재현되는지, 인증서가 일반 작업에 노출되지 않는지, 장애 뒤 사람이 개입하지 않아도 복구되는지를 확인해야 합니다.
GitHub Actions 사용 방식과 원격 개발 환경의 보안 경계를 함께 정리하려면 클라우드 Mac 개발 보안 안내도 참고할 수 있습니다.
자주 묻는 선택 기준
GitHub Actions macOS Runner 비용은 어떤 항목으로 계산해야 하나요?
공식 사용 요금만 더하면 실제 비용을 놓치기 쉽습니다. 월간 실행 시간과 macOS 요금을 먼저 계산한 뒤, 실패한 작업의 재실행 시간, 대기 때문에 발생한 개발자 유휴 시간, 캐시 부재로 늘어난 빌드 시간, 환경을 관리하는 운영 시간을 더해야 합니다. 같은 작업과 같은 기간을 기준으로 비교해야 결과가 왜곡되지 않습니다.
호스팅 러너와 자체 호스팅 Mac 중 어느 쪽이 더 경제적인가요?
실행 빈도가 낮고 작업량이 들쭉날쭉하며 별도 운영 인력이 부족하다면 호스팅 러너가 보통 더 단순합니다. 반대로 매달 많은 작업을 반복하고 고정된 시스템과 사설 네트워크가 필요하다면 자체 호스팅 Mac을 검토할 가치가 있습니다. 장비나 임대료, 네트워크, 복구와 보안 관리 비용까지 포함해 판단해야 합니다.
iOS 빌드 동시 실행이 부족하면 어떻게 확장해야 하나요?
먼저 피크 시간대의 대기 작업 수, 평균 빌드 시간, 목표 대기 시간을 기록해야 합니다. 그다음 작업을 직렬화하는 의존성, 불필요한 테스트 조합, 캐시 누락을 줄입니다. 그래도 대기열이 남으면 호스팅 러너의 계획별 제한을 확인하고, 고정 수요는 자체 호스팅 노드로 분리하는 혼합 구성이 안전합니다.
자체 호스팅 macOS Runner에서 서명 인증서는 어떻게 보호해야 하나요?
인증서와 개인 키를 저장한 키체인을 모든 작업에서 공유하지 않아야 합니다. 러너 그룹과 라벨로 신뢰된 저장소만 특정 노드를 사용하게 하고, 외부 기여 브랜치가 서명 작업에 접근하지 못하게 분리합니다. 인증서 교체 절차와 폐기 절차를 문서화하고, 작업 종료 뒤 임시 파일과 키체인 상태를 정리해야 합니다.
현재 호스팅 방식은 사용량이 낮을 때 관리 부담이 적다는 장점이 있습니다. 하지만 피크 대기열이 반복되고 캐시를 매번 다시 만들며, 고정된 Xcode 27 환경이나 사설망 접근이 필요해지면 제한과 예측 불가능한 이미지 변경이 단점이 됩니다. 자체 장비는 반대로 캐시와 환경을 통제할 수 있지만, 장비 장애와 인증서 관리, 네트워크 운영을 직접 떠안아야 합니다. 이런 조건이라면 Hashvps의 Mac Runner를 시험 환경으로 사용해 실제 작업 기록과 복구 절차를 먼저 검증하는 편이, 곧바로 장비를 고정하는 것보다 안전합니다.
FAQ
안정적인 맥 실행 환경을 Hashvps로 시작하세요
Hashvps의 원격 맥을 활용하면 모바일 앱 빌드와 테스트를 위한 전용 실행 환경을 빠르게 구성할 수 있습니다.
필요한 만큼 맥 자원을 선택해 대기 시간을 줄이고 여러 작업을 안정적으로 동시에 처리할 수 있습니다.