엔지니어링 지원 절차

문제가 발생한 단계를 먼저 찾고, 그다음 지원 요청 여부를 결정하세요

VMRunner는 전용 Apple Silicon 물리 노드를 제공합니다. 연결 실패, 빌드 오류, 서명 중단, 디스크 요구 사항, 노드 변경 문의, 청구 확인은 반복 재시작이나 중복 티켓이 아니라 재현 가능한 정보에서 시작해야 합니다.

  • 연결 실패
  • 빌드 오류
  • 디스크 요구 사항
  • 노드 문의
  • 청구 확인
진단 실행

빌드 단계 진단판

노드 응답 가능
  1. 01
    연결 핸드셰이크 노드 주소, 포트, 호스트 지문, 자격 증명 확인
    확인
  2. 02
    환경 기준선 시스템 시간, 디스크 여유 공간, 도구 버전 기록
    확인
  3. 03
    작업 재현 같은 브랜치, 명령, 매개변수로 다시 실행
    실행
  4. 04
    로그 정리 첫 오류와 앞뒤 관련 출력 보존
    캡처
  5. 05
    지원 요청 주문 식별자, 노드, 시간, 예상 결과 제출
    티켓
물리 노드 전용 사용 주문 1건 = 전용 노드 1대
첫 점검 순서

환경 기준선 6가지를 확인하는 편이 환경을 바로 초기화하는 것보다 빠릅니다

현재 상태를 먼저 보존한 뒤 범위를 하나씩 좁히세요. 각 항목을 완료할 때마다 결과를 기록하면 연결, 시스템, 프로젝트 설정 사이를 추측하며 오갈 필요가 없습니다.

  1. 01

    연결 자격 증명 확인

    노드 주소, 사용자 이름, 포트, 키 파일이 현재 주문에 해당하는지 확인하세요. 호스트 지문이 바뀌었다면 검증을 무시하지 말고 먼저 노드 정보를 확인하세요.

    ssh -v vmrunner-node
  2. 02

    네트워크 연결성 확인

    DNS, 대상 포트, 로컬 네트워크를 각각 확인하세요. 네트워크를 바꾼 뒤 다시 테스트하면 로컬 출구, 라우팅, 노드 연결 문제를 구분할 수 있습니다.

    nc -vz node.example 22
  3. 03

    디스크 여유 공간 확인

    시스템 볼륨, 작업 디렉터리, 캐시 디렉터리를 함께 확인하세요. 빌드 실패는 디스크가 가득 찬 뒤에만 발생하는 것이 아니며, 여유 공간 부족으로 의존성 압축 해제나 아카이브 오류가 발생할 수도 있습니다.

    df -h
  4. 04

    시스템 시간 확인

    시간 차이는 인증서 검증, 토큰 유효 기간, 의존성 다운로드에 영향을 줍니다. 시스템 시간대와 현재 시간을 기록한 뒤 작업 로그의 타임스탬프와 비교하세요.

    date && systemsetup -gettimezone
  5. 05

    개발 도구 버전 고정

    Xcode, Command Line Tools, Ruby, Fastlane, 패키지 관리자의 버전을 기록하세요. 재현 과정에서 여러 구성 요소를 동시에 업그레이드하지 마세요.

    xcodebuild -version
  6. 06

    첫 유효 오류 보존

    작업 시작 지점부터 첫 오류를 찾고 마지막 한 줄만 잘라내지 마세요. 마지막 실패는 대개 상위 오류의 결과입니다.

    tee build.log
명령줄 재현

같은 명령 세트로 비교 가능한 출력을 남기세요

다음 명령은 SSH 연결, Xcode 빌드, Fastlane 흐름을 각각 점검합니다. 복사한 뒤 프로젝트의 실제 scheme과 lane에 맞게 조정하고, 공개 티켓에는 키나 전체 토큰을 첨부하지 마세요.

build-session · ssh / xcodebuild / fastlane
연결 및 환경 기준선
ssh -v vmrunner-node
sw_vers
date
df -h
xcode-select -p
xcodebuild -version
Xcode 빌드 재현
set -o pipefail
xcodebuild \
  -workspace App.xcworkspace \
  -scheme App \
  -configuration Release \
  clean build | tee xcodebuild.log
Fastlane 출력 발췌
bundle exec fastlane beta --verbose | tee fastlane.log
grep -n -E "error:|failed|Exit status" fastlane.log
Xcode 및 서명

컴파일, 아카이브, 서명 실패를 먼저 구분하세요

하나의 파이프라인이 의존성 확인, 컴파일, 테스트, 아카이브, 내보내기를 차례로 수행할 수 있습니다. 먼저 실패 단계를 확인한 다음 해당 설정을 점검하세요.

인증서

인증서 유효성

현재 Keychain에서 인증서가 보이는지, 유효 기간 내인지, 개인 키와 올바르게 연결되는지 확인하세요. 인증서 이름만 보인다고 서명 체인이 완전한 것은 아닙니다.

security find-identity -v -p codesigning
Keychain

키체인 잠금 해제

비대화형 작업에서는 Runner 세션에서 지정한 Keychain을 명시적으로 잠금 해제하고 서명 도구가 개인 키에 접근할 수 있는지 확인해야 합니다. 암호를 저장소나 빌드 로그에 직접 입력하지 마세요.

security list-keychains -d user
프로비저닝 프로파일

프로비저닝 프로파일 일치 확인

Bundle Identifier, 인증서 유형, 대상 환경, 프로비저닝 프로파일의 적용 범위를 확인하세요. 하나의 target에서 자동 서명과 수동 서명을 함께 적용하지 마세요.

xcodebuild -showBuildSettings
캐시

DerivedData 정리

오류가 오래된 인덱스, 모듈 캐시, 중간 산출물을 가리킬 때만 DerivedData를 정리하세요. 먼저 경로와 현상을 기록해 안정적으로 재현되는 문제를 우연한 문제로 만들지 마세요.

xcodebuild clean
명령줄 도구 경로도 기록하세요

다음 명령을 함께 실행하세요 xcode-select -pxcrun xcodebuild -version그래픽 인터페이스와 Runner가 서로 다른 Xcode 경로를 사용하면 같은 프로젝트에서도 결과가 달라질 수 있습니다.

CI/CD 점검

Runner가 시작된다고 작업 환경까지 동일한 것은 아닙니다

CI 문제는 대개 계정 권한, 환경 변수 범위, 캐시 소유권, 동시 실행 충돌, 산출물 반환 경로에서 발생합니다. Runner를 반복 등록하는 것보다 항목별 확인이 효과적입니다.

AUTH

Runner 권한

실행 계정이 저장소를 읽고, 작업 디렉터리에 쓰고, 필요한 Keychain에 접근하며, 빌드 스크립트를 실행할 수 있는지 확인하세요. 대화형 터미널과 서비스 프로세스의 사용자 ID를 비교하세요.

whoami
ENV

환경 변수

변수가 로그인 셸이 아니라 현재 job에 주입되었는지 확인하세요. 변수 이름 목록만 출력하고 값은 로그에 기록하지 마세요.

env
CACHE

캐시 디렉터리

의존성 캐시, DerivedData, 빌드 디렉터리를 현재 계정이 소유하는지 확인하세요. 캐시 키에는 도구 버전과 lock 파일 요약을 포함해 버전 간 재사용을 방지하세요.

du -sh
JOBS

동시 실행 작업

여러 작업이 같은 작업 디렉터리, 시뮬레이터, 출력 파일 이름, Keychain 상태를 공유하지 않는지 확인하세요. 먼저 동시 실행 1개로 재현한 뒤 점차 동시 실행을 복원하세요.

ps aux
ARTIFACT

빌드 산출물 반환

실제 아카이브 경로, 업로드 단계의 종료 코드, 파일 권한, 보존 규칙을 확인하세요. 빌드는 성공했지만 산출물이 없다면 먼저 스크립트가 경로를 덮어썼는지 확인하세요.

find
원격 세션

화면 끊김과 노드 성능을 분리해 판단하세요

원격 화면은 로컬 네트워크, 인코딩, 해상도, 세션 상태의 영향을 받습니다. 먼저 명령줄 작업이 정상 실행되는지 확인한 뒤 문제가 그래픽 세션에만 발생하는지 판단하세요.

01 · 지연

로컬 네트워크 기준선 설정

유선 및 무선 네트워크에서 왕복 지연 시간, 지터, 패킷 손실을 기록하세요. 업로드 대역폭을 사용하는 동기화 작업을 종료한 뒤 다시 테스트해 로컬 혼잡을 노드 오류로 오인하지 않도록 하세요.

02 · 화면

해상도를 낮춰 비교

먼저 해상도와 새로 고침 요구량을 낮추고 입력 지연이 개선되는지 확인하세요. 명령줄 빌드 시간은 안정적인데 화면만 끊긴다면 원격 세션 경로를 우선 점검하세요.

03 · 입력

키보드 매핑 확인

로컬 키보드 배열, 보조 키 매핑, 원격 입력기 상태를 확인하세요. 단축키에 문제가 있으면 개발 도구에서 바로 판단하지 말고 일반 텍스트 편집기에서 먼저 테스트하세요.

04 · 세션

잠금 및 재연결 확인

기존 세션이 잠겨 있거나 연결이 끊긴 상태인지 확인하세요. 기존 세션을 안전하게 종료한 뒤 다시 연결하고, 같은 데스크톱을 두고 여러 그래픽 세션을 동시에 사용하지 마세요.

지원 요청 제출

6가지 정보를 한 번에 제공해야 티켓이 바로 진단 단계로 넘어갑니다

지원 요청에 개인 키는 필요하지 않습니다. 주문을 식별하고 시간을 특정하며 오류를 재현할 수 있는 정보를 제공하고, 제출 전에 필요한 비식별화를 완료하세요.

주문 식별자
콘솔에서 확인할 수 있는 주문 번호
노드 도시
싱가포르, 일본(도쿄), 한국(서울) 또는 홍콩
발생 시간
시간대가 포함된 장애 시작 시간과 최근 재현 시간
재현 절차
어떤 명령이나 작업에서 시작했는지 핵심 단계를 순서대로 기재
로그 발췌
첫 오류, 종료 코드, 앞뒤 관련 출력을 비식별화하여 제공
예상 결과
원래 생성되어야 했던 빌드, 서명, 세션 또는 청구 결과 설명
지원 요청

직접 점검을 중단하고 지원팀에 문의해야 하는 경우

연결 진입점에 계속 접근할 수 없음

현재 주문 자격 증명을 확인하고 다른 네트워크에서도 테스트했지만 대상 포트에 연결할 수 없습니다.

같은 작업이 안정적으로 재현됨

코드, 명령, 도구 버전을 고정했는데도 같은 단계에서 오류가 계속 발생합니다.

노드 또는 디스크 요구 사항 변경

노드 선택, 스토리지 확장, 작업 리소스 한도를 확인해야 하지만 현재 주문 정보만으로 판단하기 어렵습니다.

청구 정보를 일치시킬 수 없음

주문 식별자, 청구 주기, 결제 기록이 콘솔 표시와 일치하지 않아 수동 확인이 필요합니다.

시작하기

새 전용 물리 노드가 필요하다면 모델과 기간을 바로 선택하세요

세 가지 Apple Silicon 구성을 일, 주, 월, 분기 단위로 대여할 수 있습니다. 싱가포르, 일본(도쿄), 한국(서울), 홍콩의 네 데이터센터를 선택할 수 있으며 실제 이용 가능 여부는 콘솔의 실시간 결과를 기준으로 합니다.