저장소 스크립트
저장소 스크립트는 저장소별로 구성하는 셸 스크립트입니다(설정 → 리포지토리 →
저장소 행의 터미널 아이콘). Control Center의 서버는 이 스크립트를 해당
저장소의 스페이스 워크트리, 즉 에이전트가 작업하는
<dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ 아래의 격리된
체크아웃을 대상으로 실행합니다.
종류는 두 가지입니다.
| 스크립트 | 실행 시점 | 용도 |
|---|---|---|
| 셋업 | 스페이스에 워크트리가 프로비저닝된 직후 | 의존성 설치, 파일 생성, .env 복사 |
| 아카이브 | 워크트리가 삭제되거나 가비지 컬렉션되기 직전 | 워크트리 바깥의 리소스 정리(docker 네트워크, 터널, 외부 상태) |
스크립트가 실행되는 위치
섹션 제목: “스크립트가 실행되는 위치”두 스크립트 모두 bash -lc(로그인 셸이므로 Homebrew/nvm으로 설치한 도구가
PATH에 있습니다)로 실행되며, 작업 디렉터리는 워크트리이고 다음 환경
변수가 설정됩니다.
| 변수 | 값 |
|---|---|
CC_WORKSPACE_PATH |
워크트리(스크립트의 cwd) |
CC_ROOT_PATH |
등록된 소스 저장소 — 본인의 체크아웃 |
CC_SPACE_ID |
워크트리가 속한 스페이스 |
CC_SPACE_NAME |
스페이스의 표시 이름 |
CC_REPO_NAME |
저장소의 표시 이름 |
예를 들어 의존성을 설치하고 저장소의 gitignore된 .env를 가져오는 셋업
스크립트는 다음과 같습니다.
pnpm installcp "$CC_ROOT_PATH/.env" .envpnpm run build실패 시 동작
섹션 제목: “실패 시 동작”- 셋업 스크립트가 0이 아닌 코드로 종료되거나 5분 타임아웃을 초과하면 스페이스 프로비저닝이 실패합니다. 스페이스는 재시도와 함께 실패 상태를 표시하고, 그 실행의 출력 마지막 부분이 기록됩니다. 재시도하면 깨끗한 워크트리에서 프로비저닝한 뒤 스크립트를 다시 실행합니다 — 설치가 일부만 끝난 뒤 다시 실행해도 동작하도록 셋업 스크립트를 작성하세요(패키지 관리자는 이미 그렇게 동작합니다).
- 아카이브 스크립트는 최선 노력 방식입니다. 실패하거나 2분 타임아웃을 넘겨도 기록될 뿐 삭제를 결코 막지 않습니다. 아카이브는 프롬프트에 응답할 사람이 없는 GC 경로(스페이스 삭제, PR 병합, 예약 정리)에서 실행됩니다.
셋업은 새 워크트리에서만 실행됩니다. 이미 준비된 스페이스에 에이전트를 다시 디스패치하면 기존 체크아웃을 재사용하며 설치 비용을 다시 치르지 않습니다.
실행 기록
섹션 제목: “실행 기록”모든 실행은 상태, 소요 시간, 종료 코드와 길이가 제한된 출력 마지막 부분과
함께 기록되며, 같은 설정 대화 상자의 최근 실행 아래에서 볼 수 있습니다
(repos.watchScriptRuns 구독이 이를 실시간으로 스트리밍합니다).
스크립트는 서버가 실행하는 셸이므로, 작성은 워크스페이스 관리자로
제한되며 processSpawn 액션 클래스로 보호됩니다. 다른 모든 프로세스 생성
작업에 관문을 세우는 것과 같은 가드레일 체계입니다.