인스턴스 만들기
카탈로그에서 region · image · type을 고르고 POST /instances 로 만듭니다. Go SDK 예시 포함.
아직 호출할 수 없습니다. 아래 계약은 공개 Go SDK와 통합 패키지가 이미 쓰는 계약이라 확정되어 있지만, 서버 구현은 만드는 중입니다. 호출할 수 있게 되면 변경 기록에 공지합니다.
카탈로그
리전·이미지·타입은 각각 슬러그로 고릅니다. 판매 가능한 항목만 enabled: true이며, 준비 중인 항목은 목록에는 있지만 생성 요청에서 400이 납니다.
curl -sS https://cicd.im/api/v1/regions \
-H "Authorization: Bearer $CICD_API_KEY"
# {"total":1,"regions":[{"slug":"kr-seoul-1","name":"Seoul", ...}]}
curl -sS "https://cicd.im/api/v1/instance-images?region=kr-seoul-1" \
-H "Authorization: Bearer $CICD_API_KEY"
# {"total":1,"instance_images":[{"slug":"macos-tahoe","os_type":"macos",
# "architecture":"arm64","enabled":true, ...}]}
curl -sS "https://cicd.im/api/v1/instance-types?region=kr-seoul-1" \
-H "Authorization: Bearer $CICD_API_KEY"
# mac-m4-c8-m12 (enabled) · mac-m4-c12-m24 · mac-m4-c16-m36생성
project_id는 모든 /instances 경로에서 필수입니다. 이름은 1–32자, A–Z a–z 0–9 . _ -만 쓰고 공백은 쓸 수 없습니다.
curl -sS -X POST "https://cicd.im/api/v1/instances?project_id=$PROJECT" \
-H "Authorization: Bearer $CICD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"project_id":"'$PROJECT'","name":"dev-1","image":"macos-tahoe",
"region":"kr-seoul-1","type":"mac-m4-c8-m12"}'
# 201 {"id":"<uuid>","name":"dev-1","status":"queued", ...}
# poll until running
curl -sS "https://cicd.im/api/v1/instances/$ID?project_id=$PROJECT" \
-H "Authorization: Bearer $CICD_API_KEY"생성은 즉시 queued를 돌려줍니다. 고정된 시간을 기다리지 말고 GET /instances/{id}를 running이 될 때까지 폴링하세요. failed·stopped·deleting은 종료 상태이므로 바로 실패로 처리하고 status_reason을 출력하면 됩니다.
수명 주기와 한도
POST /instances/{id}/stop— 저장 후 정지. 컴퓨트 과금이 멈춥니다.POST /instances/{id}/start— 저장본에서 복원. 같은 호스트로 돌아갑니다.DELETE /instances/{id}— 삭제. 이미 없으면 404이며 재시도해도 안전합니다.- 동시에 실행할 수 있는 인스턴스 수는 플랜의
active_instance_limit을 따릅니다. 초과하면 409입니다.
Go SDK
import "cicd.im/sdk"
client := sdk.New(os.Getenv("CICD_API_KEY"))
inst, err := client.Instances.Create(ctx, sdk.CreateInstance{
ProjectID: projectID,
Name: "dev-1",
Image: "macos-tahoe",
Region: "kr-seoul-1",
Type: "mac-m4-c8-m12",
})
if err != nil { return err }
running, err := client.Instances.WaitRunning(ctx, projectID, inst.ID)Go SDK는 /api/v1 계약을 고정하기 위해 백엔드보다 먼저 공개했습니다. 위 호출은 아직 404이며, 쓸 수 있게 되면 변경 기록에 공지합니다.