장치 상태 확인
먼저 콘솔에 로그인해 인스턴스가 사용 가능 상태인지 확인하고, 주문에 해당하는 장치 이름과 노드를 대조하세요. 콘솔에서 사용 가능하지만 두 연결 방식 모두 실패하면 네트워크를 계속 확인하고 시스템 설정부터 변경하지 마세요.
- 주문 번호, 장치 식별자와 노드를 확인하세요.
- 이전 기록에 저장된 주소에 연결하고 있지 않은지 확인하세요.
- 콘솔에 표시된 상태와 확인 시각을 기록하세요.
현상부터 문제를 진단하세요
오류 메시지, 도구 이름 또는 연결 방식을 입력하세요. 개념 설명에 그치지 않고 장치 상태, 로그 위치, 확인 명령과 지원 요청에 필요한 자료를 순서대로 안내합니다.
빠른 분류
가장 가까운 현상을 먼저 선택한 뒤 페이지의 순서대로 확인하세요. 네트워크와 디스크 상태를 확인하기 전에 Xcode, 의존성 또는 Runner를 바로 재설치하지 마세요.
최초 연결
연결 문제는 보통 상태, 자격 증명, 네트워크 또는 클라이언트 설정 중 한 계층에서 발생합니다. 정해진 순서대로 확인하면 네트워크 장애를 장치 장애로 오해하지 않을 수 있습니다.
먼저 콘솔에 로그인해 인스턴스가 사용 가능 상태인지 확인하고, 주문에 해당하는 장치 이름과 노드를 대조하세요. 콘솔에서 사용 가능하지만 두 연결 방식 모두 실패하면 네트워크를 계속 확인하고 시스템 설정부터 변경하지 마세요.
시스템 사용자 이름, 초기 비밀번호와 SSH 키를 구분하세요. 자격 증명을 복사할 때 앞뒤 공백을 확인하고, 키 인증이 실패하면 올바른 개인 키와 사용자 이름을 사용했는지 먼저 확인하세요. 여러 조합을 연속으로 시도하지 마세요.
신뢰할 수 있는 다른 네트워크로 전환해 다시 테스트하고, 회사 프록시·VPN·출구 방화벽과 보안 소프트웨어 규칙을 일시적으로 제외하세요. 대상 주소, 포트, 발생 시각과 시간 초과 문구를 기록하세요.
클라이언트에 저장된 주소, 사용자 이름과 화면 설정이 현재 장치에 해당하는지 확인하세요. 화면은 열리지만 입력이 지연되면 먼저 해상도와 색 품질을 낮춘 뒤 로컬 네트워크 지연을 확인하세요.
상세 출력을 사용해 실패가 확인, 핸드셰이크 또는 인증 단계 중 어디에서 발생하는지 확인하세요. 핸드셰이크는 되지만 인증에 실패하면 사용자 이름, 개인 키와 인증 파일을 집중적으로 확인하고, 바로 시간 초과되면 네트워크 경로로 돌아가 점검하세요.
ssh -vvv user@host
chmod 600 ~/.ssh/id_ed25519
ssh-add -l
지원 요청에 비밀번호, 개인 키, 복구 코드, 전체 결제 자격 증명 또는 비식별화하지 않은 인증서를 제출하지 마세요. 설정을 보여줘야 한다면 장애와 관련된 필드만 남기세요.
Xcode 및 서명
한 번의 전체 배포 작업으로 모든 단계를 동시에 검증하지 마세요. 먼저 도구 체인 버전을 확인하고, 테스트 프로젝트로 서명을 검증한 다음 실제 프로젝트의 아카이브 로그를 확인하세요.
그래픽 인터페이스에서 선택한 버전, 명령줄 경로와 프로젝트 요구 사항이 일치하는지 확인하세요. 버전을 전환한 뒤 터미널과 빌드 프로세스를 다시 여세요.
xcode-select -p
필요한 인증서와 개인 키가 완전히 가져와졌고 현재 로그인 세션에서 접근 가능한지 확인하세요. 인증서 이름이 보인다는 이유만으로 가져오기가 성공했다고 판단하지 마세요.
security find-identity -v -p codesigning
앱 식별자, 팀, 기능과 유효 범위를 확인하세요. 이전 프로파일을 정리하기 전에 목록을 저장해 되돌릴 수 없게 되는 상황을 피하세요.
~/Library/MobileDevice/Provisioning Profiles
그래픽 인터페이스에서는 아카이브되지만 CI에서 실패한다면 Runner 세션이 사용하는 Keychain, 잠금 해제 절차와 접근 제어를 집중적으로 확인하세요.
security list-keychains
아카이브 로그에서 가장 먼저 발생한 실패를 찾고 마지막 요약만 복사하지 마세요. 대상, 구성, SDK와 실행 명령을 기록하세요.
xcodebuild -showBuildSettings
CI/CD 장애 매뉴얼
CI 장애는 스케줄링, 실행 환경, 리소스와 스크립트의 네 계층으로 나누어야 합니다. 무작정 재실행하면 현장 로그만 덮어쓸 뿐 문제가 복구되었다는 증거가 되지 않습니다.
| 현상 | 우선 확인할 항목 | 처리 순서 | 복구 기준 |
|---|---|---|---|
| Runner 오프라인 | 프로세스, 네트워크, 등록 정보, 실행 사용자 | 장치에 접근 가능한지 확인한 다음 서비스 로그를 읽으세요. 등록 범위와 시작 사용자를 확인하고 먼저 재등록하지 마세요. | Runner가 계속 온라인 상태이며 최소 테스트 작업 하나를 성공적으로 수신함 |
| 작업이 장시간 대기 | 태그, 동시 실행 상한, 기존 작업 | 작업 태그가 Runner와 일치하는지 확인하고 종료되지 않은 프로세스 또는 사용 중인 실행 슬롯이 있는지 확인하세요. | 새 작업이 예상 대기열에서 수신되고 기존 작업의 종료 상태가 명확함 |
| 캐시 복원 실패 | 캐시 키, 디렉터리 권한, 남은 디스크 공간 | 성공 작업과 실패 작업의 캐시 키를 비교하고 디렉터리 소유자를 확인한 뒤 다시 생성할 수 있는 캐시를 정리하세요. | 의존성 복원이 완료되고 다음 작업이 동일한 캐시 규칙을 재사용함 |
| 스크립트 권한 오류 | 실행 권한, 인터프리터, 작업 디렉터리 | 스크립트가 저장소에 포함되어 실행 권한을 유지하는지 확인하고 첫 줄의 인터프리터와 상대 경로를 점검하세요. | Runner 사용자의 비대화형 세션에서 스크립트 실행이 성공함 |
| 빌드 시간 초과 | 마지막 활성 단계, CPU, 메모리, 디스크 | 먼저 마지막 유효 로그를 찾은 뒤 프로세스 정지, 리소스 부족 또는 네트워크 의존성 대기인지 판단하세요. | 동일한 커밋이 연속으로 완료되고 소요 시간이 기준값에 가깝고 잔여 프로세스가 없음 |
상태 확인은 작업 디렉터리, 디스크, 도구 체인 경로와 짧은 테스트 하나만 검증합니다. 배포 자격 증명을 포함하거나 대형 캐시에 의존해서는 안 됩니다.
whoami
pwd
df -h
xcodebuild -version
git --version
성능 및 스토리지
작업 한 번이 느려졌다고 더 높은 사양이 필요하다고 판단할 수는 없습니다. 활성 상태 보기, 디스크 용량과 빌드 로그를 함께 확인하고 동일 프로젝트의 정상 기준과 비교하세요.
특정 1초가 아니라 전체 작업 주기를 관찰하세요. CPU가 장시간 가득 차도 작업이 계속 진행되면 계산 부하입니다. 메모리 압력이 계속 높아지고 스왑이 많이 발생할 때만 동시 실행 수나 프로젝트 규모가 현재 구성의 한계를 넘었을 가능성이 있습니다.
먼저 프로젝트, 의존성, 시뮬레이터, 아카이브와 다시 생성할 수 있는 캐시의 사용량을 집계하세요. 디스크가 용량 한계에 가까우면 의존성 압축 해제, 아카이브와 로그 기록에서 문제가 발생할 수 있습니다. 정리하기 전에 결과물과 재생성 가능한 데이터를 구분하세요.
리소스 곡선은 정상인데 동일한 스크립트, 의존성 다운로드 또는 컴파일 단계에서 멈춘다면 버전 변경, 네트워크 의존성과 스크립트 대기 조건을 확인하세요. 성공 로그와 비교하면 전체 소요 시간만 보는 것보다 이탈 지점을 빠르게 찾을 수 있습니다.
동시 실행 수를 낮춰 재테스트하세요. 소요 시간이 동시 실행 수에 따라 일정하게 변하면 더 높은 구성을 검토하세요.
재생성 가능한 캐시와 오래된 아카이브 결과물을 정리하고 작업 후 정리 규칙을 마련하세요.
스크립트, 의존성 소스, 도구 체인 버전과 비대화형 권한을 확인하세요.
노드 및 네트워크
NUMACS는 싱가포르, 일본(도쿄), 한국(서울)과 홍콩 노드를 제공합니다. 모든 디렉터리 조합을 주문할 수 있으며 실제 사용 가능 여부는 콘솔의 실시간 응답을 따릅니다.
동남아시아 및 주변 네트워크에서 접속하기에 적합합니다. 진단 시 로컬 통신사, 대상 주소, 연결 방식과 발생 시각을 기록하세요.
싱가포르 노드 선택연결 이상이 발생하면 원격 데스크톱과 SSH를 각각 테스트하고 특정 로컬 네트워크에서만 문제가 나타나는지 표시하세요.
일본 노드 선택네트워크 문제를 제출할 때 시간 초과 또는 연결 끊김 시간대와 동일 장치를 다른 네트워크에서 재테스트한 결과를 첨부하세요.
한국 노드 선택대화형 지연이 갑자기 변하면 대상 주소, 사용 프로토콜, 클라이언트 버전과 당시 실행 중인 작업을 기록하세요.
홍콩 노드 선택발생 시각과 시간대, 사용 노드, 대상 주소, 사용 프로토콜, 로컬 네트워크 유형, 전체 오류 문구와 네트워크 변경 후 재테스트 결과를 함께 제공하세요. 진단 명령을 실행했다면 비식별화한 텍스트 결과를 제출하고 스크린샷의 일부 숫자만 보내지 마세요.
청구 및 주기
장치는 일·주·월 또는 분기 단위로 대여할 수 있습니다. 주문 금액은 모두 미국 달러(USD)로 결제되며 주기와 구성은 주문 기록을 따릅니다.
단기 검증, 임시 빌드 또는 마이그레이션 리허설에 적합합니다. 청구 문제를 제출할 때 주문 시작 시각과 장치 식별자를 명시하세요.
연속 스프린트 또는 버전 검수에 적합합니다. 확인할 때 달력상의 주와 실제 주문 주기를 혼동하지 마세요.
안정적인 개발과 CI 워크플로에 적합합니다. 구성을 업그레이드하기 전에 필요한 데이터를 내보내고 마이그레이션 일정을 확인하세요.
지속적인 프로젝트와 고정 Runner에 적합합니다. 팀은 자격 증명 교체, 백업과 작업 인계 절차를 미리 기록해야 합니다.
제출 전 최종 확인
다음 정보가 갖춰져야 지원 담당자가 기본 정보를 되묻지 않고 바로 재현과 원인 파악을 시작할 수 있습니다.
먼저 콘솔에서 장치 상태를 확인한 뒤 주문 번호, 노드, 발생 시각과 시간대, 대상 주소, 두 연결 방식의 전체 오류 문구와 로컬 네트워크 변경 후 재테스트 결과를 제출하세요. 비밀번호나 개인 키는 제출하지 마세요.
권장하지 않습니다. 먼저 첫 번째 근본 원인 오류, Xcode 버전, 명령줄 도구 경로, 프로젝트 구성과 최근 변경 사항을 저장하세요. 재설치하면 현장 상태가 바뀌고 원인 파악에 필요한 버전 차이와 로그가 삭제될 수 있습니다.
먼저 장치 연결, Runner 프로세스, 실행 사용자와 서비스 로그를 확인하세요. 등록 정보가 손상되었거나 만료된 사실을 확인한 경우에만 다시 등록하세요. 그렇지 않으면 이전 Runner와 새 Runner 기록이 동시에 남아 스케줄링 문제를 판단하기 어려워질 수 있습니다.
시간, 명령, 오류 코드, 도구 버전과 장애 관련 경로 구조는 유지하고 사용자 이름, 저장소 주소, 액세스 토큰, 인증서 내용, 개인 키와 업무 데이터를 바꾸세요. 비식별화 후 다시 읽어 맥락이 재현에 충분한지 확인하세요.
제목에 빌드 장애라고 표시하고 주문 번호, 노드, 발생 시각, 재현 절차, 기대 결과, 실제 결과와 비식별화한 로그를 제공하세요. 요청은 정보 완성도에 따라 처리 대기열에 배치됩니다. 맥락이 자세할수록 추가 확인을 줄일 수 있습니다.
전문 지원으로 에스컬레이션
주문 번호, 노드, 발생 시각과 시간대, 재현 절차, 기대 결과, 실제 결과, 시도한 작업과 비식별화한 로그를 준비하세요. 기존 주문은 콘솔에서 티켓을 제출할 수 있으며 사전 상담, 노드 문의와 청구 문제는 support@numacs.com으로 보낼 수 있습니다.