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에서도 실패하니까요.