CI에서 샌드박스 실행

CI에서 샌드박스 실행 (Run sandboxes in CI)

CI 환경과 스크립트에서 로컬 샌드박스를 실행하는 방법을 알아볼게요.

출처: 문서

본문

이 페이지는 CI에서의 로컬 샌드박스를 설명해요. 로컬 가상화 없는 클라우드 실행은 붙지 않고 실행을 참고하세요.

브라우저를 사용할 수 없는 CI 환경과 스크립트에서는 Docker Personal Access Token(PAT)으로 인증하세요:

$ echo "$DOCKER_PAT" | sbx login --username <your-docker-id> --password-stdin

PAT는 최소 Read 스코프로 Docker 계정 설정에서 생성하세요.

sbx create로 샌드박스를 백그라운드로 만들고, sbx exec로 에이전트 작업을 실행하고, 끝나면 샌드박스를 제거하세요:

$ sbx create --name ci-task --clone claude .
$ sbx run --name ci-task  # attach and give instructions, or use sbx exec for one-off commands
$ git fetch sandbox-ci-task
$ sbx rm --force ci-task

에이전트 자격 증명(API 키, GitHub 토큰)은 전역 비밀로 사전 구성해 CI 러너가 만드는 어떤 샌드박스든 사용할 수 있게 할 수 있어요. 관련 환경 변수가 이미 CI 환경에 설정되어 있다면(각 서비스가 어떤 변수를 읽는지는 내장 서비스 표 참고) 한 번에 모두 가져오세요:

$ sbx secret import --all

기존 저장 항목을 덮어쓰려면 --force를 추가하세요. CI 제공자의 비밀 저장소에서 값을 전달하려면 -t를 사용하세요. 예를 들어 GitHub Actions 스텝에서:

- run: sbx secret set anthropic -t "${{ secrets.ANTHROPIC_API_KEY }}"

정리 및 종료 코드 (Cleanup and exit codes)

스크립트에서 리소스를 제거할 때 확인을 건너뛰려면 --force를 사용하세요. 제거나 필수 재시작 프롬프트를 거부하면 0이 아닌 종료 코드가 반환돼요. 스크립트를 계속할지 결정할 때 이를 불완전한 작업으로 취급하세요.

반복 가능한 정리를 위해 제거하기 전에 어떤 리소스가 존재하는지 확인하세요. 예를 들어 sbx mcp rm 앞에 sbx mcp ls를 사용하세요. 미등록 서버는 --force에서도 실패하니까요.

더 알아보기 (Learn more)