본문으로 건너뛰기

레시피

반복해서 쓰는 빌드 스크립트를 레시피로 저장하고 잡, 배치, 플레이그라운드에서 recipe_id로 부르기

레시피는 워크스페이스에 저장한 빌드 스크립트입니다. XenoCI가 제공하는 기본 레시피 5개는 읽기 전용이고, 워크스페이스마다 레시피를 더 만들 수 있습니다

기본 레시피

모두 작업 폴더(올린 소스 또는 받은 저장소)에서 *.xcworkspace가 있으면 그것을, 없으면 *.xcodeproj를 자동으로 고릅니다. 스킴은 환경 변수 XENOCI_SCHEME으로 받고, 시뮬레이터는 XENOCI_SIMULATOR(기본 iPhone 16)입니다

ID이름하는 일필요한 env
rcp_builtin_ios_buildiOS 빌드시뮬레이터용 Debug 빌드, 서명 없음XENOCI_SCHEME, 선택 XENOCI_SIMULATOR
rcp_builtin_unit_test단위 테스트xcodebuild test, 결과 TestResults.xcresultXENOCI_SCHEME, 선택 XENOCI_SIMULATOR
rcp_builtin_ui_testUI 테스트시뮬레이터를 부팅하고 UI 테스트, 결과 UITestResults.xcresultXENOCI_SCHEME(UI 테스트 대상 포함 스킴), 선택 XENOCI_SIMULATOR
rcp_builtin_archive아카이브Release 아카이브, 서명 없음, 결과 App.xcarchive.zipXENOCI_SCHEME
rcp_builtin_testflight_uploadTestFlight 업로드작업 폴더의 서명된 .ipa를 altool로 올림ASC_KEY_ID, ASC_ISSUER_ID, ASC_KEY_P8

TestFlight 업로드는 required_env 세 개가 모두 있어야 합니다. 하나라도 없으면 VM을 띄우지 않고 400으로 거절하며 details.missing_env와 details.guide(App Store Connect에서 키 만드는 안내)를 돌려줍니다. 과금은 없습니다

참고 서명된 IPA를 만드는 레시피는 아직 없습니다. 아카이브 레시피는 서명 없는 .xcarchive를 남깁니다

콘솔에서

빌드 → 레시피(/console/workspaces/<워크스페이스>/recipes)

  • 목록에서 레시피를 열면 스크립트 전문과 필요한 env가 보입니다
  • 실행 아이콘은 플레이그라운드에서 그 레시피로 시작합니다
  • 레시피 만들기: 이름(워크스페이스 안에서 고유, 80자까지), 설명(500자까지), 스크립트(65,536자까지), 기본 Xcode(환경 화면의 버전 중 하나)
  • 기본 레시피는 고치거나 지울 수 없습니다

잡에서 부르기

POST /v1/jobs에 script 대신 recipe_id를 줍니다. 둘 다 주면 400입니다

curl -sS -X POST https://xenoci.com/api/runner/v1/jobs \
  -H "Authorization: Bearer $XENOCI_API_KEY" \
  -H 'XenoCI-Error-Format: 2' \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "recipe_id": "rcp_builtin_unit_test",
    "source": { "git_url": "https://github.com/acme/app.git", "ref": "main" },
    "env": { "XENOCI_SCHEME": "App" },
    "artifacts": ["TestResults.xcresult"]
  }'
  • xcode를 비우면 레시피의 default_xcode, 그다음 워크스페이스 기본 Xcode, 그다음 이미지 기본값을 씁니다
  • env는 레시피가 요구하는 변수를 채우는 자리입니다. 이름 100개까지, 값은 문자열입니다
  • 배치(POST /v1/batches)도 script 대신 recipe_id를 받습니다. 매트릭스의 xcode, simulator, scheme 값이 XENOCI_XCODE, XENOCI_SIMULATOR, XENOCI_SCHEME으로 들어가므로 기본 레시피와 바로 맞습니다

xenocast CLI와 MCP build는 script를 직접 받습니다. 레시피 스크립트를 CLI에서 쓰려면 GET /v1/recipes/{recipe_id}의 script를 파일로 저장해 --script에 넘깁니다

API

메서드와 경로키 권한설명
GET /v1/recipesread기본 레시피와 이 워크스페이스의 레시피
POST /v1/recipesrun레시피 만들기(name, script, 선택 description, default_xcode)
GET /v1/recipes/{recipe_id}read레시피 하나
PATCH /v1/recipes/{recipe_id}run고치기(기본 레시피는 403)
DELETE /v1/recipes/{recipe_id}run지우기, 204

레시피 객체

필드설명
idrcp_…
builtin기본 레시피이면 true
workspace_id기본 레시피는 null
name, description, script이름, 설명, 스크립트
default_xcode비우면 워크스페이스 기본값
required_env잡 env에 반드시 있어야 하는 이름
guide없는 env를 채우는 안내

다음 단계