기능 개요
XenoCI macOS 러너가 잡 하나를 받아 끝낼 때까지 제공하는 기능과 각 기능을 어디서 쓰는지 한눈에 봅니다
XenoCI 러너는 셸 스크립트 하나를 새 macOS VM에서 실행하고 실행한 분만큼 선불 크레딧에서 차감하는 CI 러너이며, 아래 표의 모든 기능은 이 한 줄을 돕는 장치입니다
잡 하나의 흐름
- 소스를 정합니다 (폴더 업로드 또는 공개 git 저장소)
- 스크립트와 Xcode 버전, 제한 시간, 환경 변수, 모을 결과물 경로를 담아 잡을 제출합니다
- 잡은
queued상태로 접수되고, 빈 VM 슬롯이 나면preparing을 거쳐running이 됩니다 - 스크립트가 끝나면 종료 코드에 따라
succeeded또는failed가 되고, VM은 바로 지워집니다 - 로그와 결과물을 내려받고, 과금된 분과 금액을 확인합니다
VM 준비 시간(preparing)은 과금하지 않고, 스크립트가 시작한 순간부터 끝난 순간까지의 초를 1분 단위로 올림해 과금합니다
기능과 진입점
| 기능 | API | CLI (xenocast) | 콘솔 메뉴 |
|---|---|---|---|
| 잡 제출 | POST /v1/jobs | build --script ./ci.sh | 빌드 → 플레이그라운드 |
| 잡 조회, 목록 | GET /v1/jobs/{job_id}, GET /v1/jobs | status, jobs | 실행 → 잡 |
| 취소 | POST /v1/jobs/{job_id}/cancel | cancel | 실행 → 잡 |
| 로그 스트리밍 | GET /v1/jobs/{job_id}/logs?offset= | logs --wait | 실행 → 잡 |
| 소스 업로드 | POST /v1/uploads | build --dir ./app | 빌드 → 파일 |
| 결과물 | GET /v1/jobs/{job_id}/artifacts | artifacts --out ./dist | 빌드 → 파일 |
| 배치 빌드 | POST /v1/batches | 없음 | 빌드 → 배치 |
| 레시피 | GET /v1/recipes, 잡 제출의 recipe_id | 없음 | 빌드 → 레시피 |
| Xcode와 런타임 목록 | GET /v1/environments | 없음 | 실행 → 환경 |
| 잔액, 사용량 | GET /v1/balance, GET /v1/usage | credits, usage | 분석 → 사용량, 비용 |
| 한도 | GET /v1/limits, GET /v1/tiers | 없음 | 분석 → 한도 |
MCP 서버(xenocast mcp)는 build, status, cancel, logs, whoami, credits, usage 일곱 도구를 제공하고, GitHub Actions는 xeno-ci/build 액션 한 단계로 같은 API를 부릅니다
인증 한 가지
CLI, MCP, GitHub Actions, 직접 호출 모두 콘솔에서 발급한 API 키(xci_live_…) 하나로 인증합니다
키는 워크스페이스 하나에 묶이고 권한은 run(잡 제출과 조회) 또는 read(조회만)입니다
결제, 키 발급, 멤버 관리는 어떤 키로도 할 수 없고 콘솔 로그인(Google 또는 이메일)으로만 합니다
export XENOCI_API_KEY=xci_live_...
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로 거절하고 실행 중인 잡은 끝까지 돕니다
다음 단계
- Jobs API 사용하기: 잡 제출부터 결과 확인까지 curl로 따라 하기
- 잡 상태와 종료 이유: 상태 값과 과금 관계
- 러너 개요: 러너 한 종류와 Xcode 선택
- 콘솔 빠른 시작: CLI, MCP, GitHub Actions 연결 3단계