본문으로 건너뛰기

기능 개요

XenoCI macOS 러너가 잡 하나를 받아 끝낼 때까지 제공하는 기능과 각 기능을 어디서 쓰는지 한눈에 봅니다

XenoCI 러너는 셸 스크립트 하나를 새 macOS VM에서 실행하고 실행한 초만큼 선불 크레딧에서 차감하는 CI 러너이며, 아래 표의 모든 기능은 이 한 줄을 돕는 장치입니다

잡 하나의 흐름

  1. 소스를 정합니다 (폴더 업로드 또는 공개 git 저장소)
  2. 스크립트와 Xcode 버전, 제한 시간, 환경 변수, 모을 결과물 경로를 담아 잡을 제출합니다
  3. 잡은 queued 상태로 접수되고, 빈 VM 슬롯이 나면 preparing을 거쳐 running이 됩니다
  4. 스크립트가 끝나면 종료 코드에 따라 succeeded 또는 failed가 되고, VM은 바로 지워집니다
  5. 로그와 결과물을 내려받고, 과금된 시간과 금액을 확인합니다

요청 접수, 대기, VM 준비(preparing)는 과금하지 않습니다, 과금 구간은 VM이 준비되고 사용자 작업(업로드한 소스 받기나 저장소 내려받기, 그다음 스크립트)이 시작된 순간(billable_started_at)부터 잡이 끝난 순간까지이고 초 단위로 과금합니다, 잡마다 최소 1분이고 금액은 센트 단위로 반올림합니다(요금)

기능과 진입점

기능APICLI (xenocast)콘솔 메뉴
잡 제출POST /v1/jobsbuild --script ./ci.sh빌드 → 플레이그라운드
잡 조회, 목록GET /v1/jobs/{job_id}, GET /v1/jobsstatus, jobs실행 → 잡
취소POST /v1/jobs/{job_id}/cancelcancel실행 → 잡
로그 스트리밍GET /v1/jobs/{job_id}/logs?offset=logs --wait실행 → 잡
소스 업로드POST /v1/uploadsbuild --dir ./app빌드 → 파일
결과물GET /v1/jobs/{job_id}/artifactsartifacts --out ./dist빌드 → 파일
배치 빌드POST /v1/batches없음빌드 → 배치
레시피GET /v1/recipes, 잡 제출의 recipe_id없음빌드 → 레시피
Xcode와 런타임 목록GET /v1/environments없음실행 → 환경
러너 목록GET /v1/runnersrunners없음
잔액, 사용량GET /v1/balance, GET /v1/usagecredits, usage분석 → 사용량, 비용
한도GET /v1/limits, GET /v1/tiers없음분석 → 한도

MCP 서버(xenocast mcp)는 build, status, cancel, logs, list_runners, whoami, credits, usage 여덟 도구를 제공하고, GitHub Actions는 xeno-ci/build 액션 한 단계로 같은 API를 부릅니다

인증 한 가지

CLI, MCP, GitHub Actions, 직접 호출 모두 콘솔에서 발급한 API 키(xci_live_…) 하나로 인증합니다, 키는 사람이 xenocast login이나 환경 변수로 자기 터미널에 넣습니다

키는 워크스페이스 하나에 묶이고 권한은 run(잡 제출과 조회) 또는 read(조회만)입니다

결제, 키 발급, 멤버 관리는 어떤 키로도 할 수 없고 콘솔 로그인(Google 또는 이메일)으로만 합니다

curl -s https://xenoci.com/api/runner/v1/me \
  -H "Authorization: Bearer $XENOCI_API_KEY"

과금과 한도 요약

  • 요금은 분당 US$0.0396(부가세 포함, 정가 US$0.078의 49% 할인)이고, 잡이 대기열을 떠나는 순간의 요율이 그 잡에 고정됩니다
  • 제출 시 사용 가능 잔액이 1분 요금보다 적으면 402 insufficient_credit으로 거절합니다
  • 실행 중 조직 잔액이 다음 1분을 감당하지 못하면 분 경계에서 잡을 멈추고 credit_exhausted로 끝냅니다
  • 조직 티어의 동시 실행 한도를 넘는 잡은 거절하지 않고 대기열(queued_reason: tier_concurrency_limit)에 넣습니다
  • 워크스페이스 월 지출 한도와 티어 월 한도에 닿으면 새 잡을 402로 거절하고, 실행 중인 잡도 30초마다 검사해 멈춥니다, 검사 사이에 쓴 만큼 한도를 조금 넘을 수 있습니다

다음 단계