시작하기

GitHub Actions 워크플로를 macOS 러너로 옮기는 방법, 크레딧·사용량·한도, 격리와 삭제 확인.

cicd는 Apple Silicon macOS 러너를 원화 선충전·분 단위로 제공합니다. 잡마다 새 VM이 만들어지고 끝나면 삭제됩니다. 이 문서는 콘솔 이용 가이드를 공개 문서로 옮긴 것으로, 로그인 없이 읽을 수 있습니다.

1. 계정 연동 · 충전 · 사용량

로그인 후 GitHub 저장소를 연결하고 워크플로를 만드세요. 최초 연결 시 $10 가입 크레딧(14,000원)을 드리며 지급 시점부터 30일 동안 사용할 수 있습니다. 플랫폼 계정과 GitHub 계정 각각 최초 1회만 지급됩니다. 유료 크레딧은 카드로 5,000원부터 충전할 수 있습니다. 작업 실행 시간은 분 단위로 올림해 선택한 환경의 단가로 차감합니다.

콘솔 사용량 · 한도 탭에서 KST 기준 일별 요금, 저장소·라벨 필터, CSV 내려받기, 월 사용 한도·동시 실행 상한·할당 일시 중지를 설정할 수 있습니다. 한도는 새 잡 수신만 막으며, 이미 실행 중인 잡은 끝까지 진행됩니다.

2. GitHub 연결 · 워크플로 · 사전점검

GitHub → Settings → Developer settings → Fine-grained personal access token. 대상 저장소를 고르고 권한을 Actions: Read and write, Administration: Read and write, Metadata: Read로 둡니다. Classic 토큰이면 repo 스코프. 토큰은 암호화되어 저장되고 잡마다 1회용(JIT) 러너 등록에만 씁니다.

연결 후 감시할 저장소를 등록하면 15초마다 큐를 확인합니다. 콘솔 환경 · 사전점검 탭(또는 GET /api/portal/ci/preflight?label=…&source=github|api)에서 크레딧·월 한도·호스트 적합성을 외부 GitHub 호출 없이 확인할 수 있습니다. 즉시 시작하려면 저장소 Settings → Webhooks에 콘솔 URL·시크릿을 넣고 이벤트를 Workflow jobs만 고르세요.

jobs:
  ios:
    runs-on: groa-macos-m4-8x
    steps:
      - uses: actions/checkout@v4
      - run: xcodebuild -scheme App -destination 'platform=iOS Simulator,name=iPhone 16' test

최소 워크플로 예시

판매 중인 라벨과 분당 요금은 공개 카탈로그 /api/ci/catalog가 기준입니다. 오늘 쓸 수 있는 macOS 라벨은 groa-macos-m4-8x 하나이며, 새 Xcode 이미지는 검증을 통과해 카탈로그에 오른 뒤에 라벨이 생깁니다.

3. 시크릿 · OIDC · 아티팩트

  • 저장소/조직 Secrets — GitHub Actions secrets에 넣은 값은 GitHub가 잡에 주입합니다. cicd 러너도 GitHub-hosted와 같이 secrets.* 컨텍스트를 받습니다. cicd 콘솔 API 키와 혼동하지 마세요.
  • OIDC 클라우드 로그인 — AWS/GCP/Azure 등에 토큰 없이 배포하려면 OIDC와 permissions: id-token: write가 필요합니다. cicd는 GitHub가 발급한 OIDC 토큰을 그대로 전달합니다.
  • 아티팩트 · 캐시 소유권actions/upload-artifactactions/cache로 올린 데이터는 GitHub 저장소에 남습니다. cicd macOS VM은 종료 시 삭제됩니다.

4. 격리 · 네트워크 · 삭제 확인

잡마다 새 VM이 만들어지고 끝나면 삭제됩니다. 러너는 인터넷으로 나가는 기본 경로가 없고 허용된 도메인으로만 프록시를 통해 나갑니다. GitHub·npm·PyPI·crates.io·Go proxy·Maven·Docker Hub·Ubuntu/Debian·Apple 개발자 도메인은 기본 허용이며, 사설 레지스트리는 콘솔 네트워크 탭에서 추가합니다.

종료된 잡 상세에 삭제 확인서가 표시됩니다. executor_kindretention 정책(zero-retention)으로 VM 제거를 기록합니다. 스케줄러 DB의 cleanup_result만 표시하며 live 재검증·secure overwrite 증명은 포함하지 않습니다.

5. GitHub 없이 — REST · MCP

콘솔 API · MCP 탭에서 키를 만들어 아래 표면을 사용합니다. 토큰은 환경 변수(CICD_CI_TOKEN)로만 전달하고 URL 쿼리에 넣지 마세요. 공개 카탈로그 /api/ci/catalog는 인증 없이 호출할 수 있습니다.

# REST (Bearer or CICD_CI_TOKEN)
GET  /api/ci/v1/me
GET  /api/ci/v1/rates
GET  /api/ci/v1/jobs
POST /api/ci/v1/jobs          # Idempotency-Key header supported
GET  /api/ci/v1/jobs/:id/log
GET  /api/ci/v1/jobs/:id/diagnostics
GET  /api/ci/v1/jobs/:id/wait?wait_seconds=75
POST /api/ci/v1/jobs/:id/cancel
GET  /api/ci/v1/usage
GET  /api/ci/v1/policies
PUT  /api/ci/v1/policies
GET  /api/ci/v1/jobs/:id/deletion-receipt

# macOS job example (curl)
curl -sS -X POST https://cicd.im/api/ci/v1/jobs \
  -H "Authorization: Bearer $CICD_CI_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"label":"groa-macos-m4-8x","command":"xcodebuild -version","wait":true,"wait_seconds":75}'

# MCP tools (same API key, HTTP)
list_runners, get_balance, run_command, wait_job, get_job, get_job_log, diagnose_job, cancel_job

API 대기는 요청당 최대 90초이며 wait_timed_out이면 같은 작업 ID로 GET /wait 또는 MCP wait_job을 바로 이어 호출합니다. 작업 생성 재시도에는 동일한 Idempotency-Key를 사용하세요.

6. 제한 사항

  • 하드웨어: groa-macos-m4-8x 단일 프로필 — 8 vCPU · 12 GiB · 110원/분.
  • 게스트: macOS 26.6.2 · Xcode 26.2. Xcode 버전은 라벨이 정하며, 지금은 이 한 가지입니다.
  • 잡 기본 시간 제한 60분(API 잡은 요청 시 최대 360분). 초과 시 종료되고 실행 시간만 과금됩니다.
  • 암호화폐 채굴, 스팸, 스캔 등 빌드·테스트가 아닌 용도는 금지되며 발견 시 계정의 CI 이용이 정지됩니다.