Shipyard
공식Shipyard CLI는 에이전트가 Shipyard 환경을 직접 관리할 수 있도록 MCP 서버를 제공합니다: 로그 가져오기, 브랜치 비교, 테스트 실행, 환경 중지/시작 등을 수행합니다.
Shipyard MCP(으)로 무엇을 할 수 있나요?
- List environments with filters — Ask to show environments filtered by repo, branch, or pull request via
shipyard get environments. - Inspect environment details — Retrieve full info for a specific environment UUID, including its bypass token for scripting.
- Manage environment lifecycle — Stop, restart, cancel builds, rebuild, or revive deleted environments by UUID.
- Access services and logs — Get exposed ports, stream logs, exec commands, or port-forward into a running environment's service.
- Handle volumes and snapshots — List, reset, snapshot, load, or upload files to volumes within an environment.
- Deploy detached environments — Clone an application build with custom branch overrides and rebuild policies.
문서
Shipyard CLI
Shipyard 플랫폼에서 임시 환경(Ephemeral Environments)을 관리하기 위한 도구입니다.
AI 어시스턴트를 사용 중이신가요? CLI에는 MCP 서버가 포함되어 있습니다: AI 어시스턴트에서 Shipyard 사용하기를 참조하세요.
설치
-
Linux 및 macOS
curl https://www.shipyard.sh/install.sh | bash -
Windows 릴리스 페이지로 이동하여 Windows용 실행 파일을 다운로드하세요.
-
Homebrew
brew tap shipyard/tap brew install shipyard
로그인
shipyard login을 실행하여 CLI를 초기화하세요. 브라우저에서 Shipyard에 로그인하라는 메시지가 표시됩니다. 그러면 CLI가
로컬 구성 파일에 API 토큰을 저장합니다. 이제 명령을 실행할 준비가 되었습니다.
또는 토큰을 수동으로 설정
Shipyard API 토큰을 SHIPYARD_API_TOKEN 환경 변수의 값으로 설정하세요.
토큰은 프로필 페이지에서 확인할 수 있습니다.
조직에 API 액세스를 활성화하려면 support@shipyard.build로 문의하세요. 기타 질문이 있으시면 커뮤니티 Slack에 참여해 주세요.
shipyard set token
또는 기본적으로 $HOME/.shipyard/config.yaml에 저장된 구성 파일을 사용할 수 있습니다.
CLI를 처음 실행하면 편집할 수 있는 기본 빈 구성이 생성됩니다.
또한 모든 명령에 --config {path} 플래그를 추가하여 기본이 아닌 구성 경로를 지정할 수 있습니다.
구성 파일에 구성 값을 추가하고 파일이 YAML 구문을 따르는지 확인하세요. 예:
api_token: <your-token>
org: <your-non-default-org>
환경 변수의 값은 구성 파일의 해당 값을 덮어씁니다.
기본 사용법
소속된 모든 조직 가져오기
shipyard get orgs
전역 기본 조직 설정
shipyard set org {org-name}
현재 구성된 조직 가져오기
shipyard get org
모든 환경 나열
shipyard get environments
사용 가능한 플래그:
| 이름 | 설명 | 유형 | 기본값 |
|---|---|---|---|
| branch | 브랜치 이름으로 필터링 | string | |
| deleted | 삭제된 환경 반환 | boolean | false |
| json | 전체 JSON 출력 인쇄 | boolean | false |
| name | 애플리케이션 이름으로 필터링 | string | |
| org-name | 여러 조직에 속한 경우 조직 이름으로 필터링 | string | 기본 조직 |
| page | 요청된 페이지 번호 | int | 1 |
| page-size | 요청된 페이지 크기 | int | 20 |
| pull-request-number | 풀 리퀘스트 번호로 필터링 | string | |
| repo-name | 저장소 이름으로 필터링 | string |
예시:
flask-backend저장소에서main브랜치로 실행 중인 모든 환경 나열:
shipyard get environments --repo-name flask-backend --branch main
- 삭제된 모든 환경 나열:
shipyard get environments --deleted
UUID로 특정 환경의 세부 정보 가져오기
shipyard get environment {environment_uuid}
사용 가능한 플래그:
| 이름 | 설명 | 유형 | 기본값 |
|---|---|---|---|
| json | 전체 JSON 출력 인쇄 | boolean | false |
| org | 여러 조직에 속한 경우 환경의 조직 | string | 기본 조직 |
| bypass-token | 스크립트용 환경의 바이패스 토큰만 인쇄 | boolean | false |
--bypass-token을 사용하면 스크립트가 토큰을 입력하거나 인쇄하지 않고 사용할 수 있습니다:
SHIPYARD_TOKEN=$(shipyard get environment {environment_uuid} --bypass-token) && \
export SHIPYARD_TOKEN && curl -b "shipyard_token=$SHIPYARD_TOKEN" https://your-environment-url/
실행 중인 환경 중지
shipyard stop environment {environment_uuid}
중지된 환경 다시 시작
shipyard restart environment {environment_uuid}
환경의 진행 중인 빌드 취소
shipyard cancel environment {environment_uuid}
환경 다시 빌드
shipyard rebuild environment {environment_uuid}
삭제된 환경 복원
shipyard revive environment {environment_uuid}
분리된 환경 배포
기존 애플리케이션 빌드를 복제하여 새롭고 독립적인("분리된") 환경을 생성합니다. 조직에 분리된 환경이 활성화되어 있어야 합니다.
shipyard detached deploy {application_build_uuid} --name my-detached-env
저장소별로 브랜치를 재정의하고 분리된 환경이 새 커밋에서 다시 빌드되는지 제어합니다:
# Override the branch for a repo, and never rebuild on new commits
shipyard detached deploy {application_build_uuid} --name my-detached-env --branch web=feature-x --build-on-commit never
# Per-repo build-on-commit settings (always | inherit | never)
shipyard detached deploy {application_build_uuid} --build-on-commit-for web=always --build-on-commit-for api=never
환경의 모든 서비스 및 노출된 포트 가져오기
shipyard get services --env {environment_uuid}
실행 중인 환경의 서비스에서 Exec 실행
실행 중인 환경의 특정 서비스에서 인수와 플래그를 포함한 모든 명령을 실행합니다. 이중 슬래시 뒤에 명령 인수를 전달하세요.
shipyard exec --env {environment_uuid} --service {service_name} -- bash
실행 중인 환경의 서비스 포트 포워딩
shipyard port-forward --env {environment_uuid} --service {service_name} --ports {local_port}:{service_container_port}
실행 중인 환경의 서비스 로그 가져오기
shipyard logs --env {environment_uuid} --service {service_name}
환경 방문
shipyard visit {environment_uuid}
사용 가능한 플래그:
| 이름 | 설명 | 유형 | 기본값 |
|---|---|---|---|
| follow | 로그 출력 팔로우 | boolean | false |
| tail | 표시할 최근 로그 줄 수 | int | 3000 |
볼륨 작업
환경의 모든 볼륨 나열
shipyard get volumes --env {environment_uuid}
환경의 모든 볼륨 스냅샷 나열
shipyard get snapshots --env {environment_uuid}
환경의 볼륨 재설정
shipyard reset volume --env {environment_uuid}
환경에서 스냅샷 생성
shipyard create snapshot --env {environment_uuid}
환경에서 볼륨 스냅샷 로드
shipyard load snapshot --env {environment_uuid} --sequence-number {n}
환경의 볼륨에 파일 업로드
shipyard upload volume --env {environment_uuid} --volume {volume} --file {filepath.bz2}
REST API 직접 호출
shipyard api /api/v1/environment
shipyard api -X PUT /api/v1/environment/{environment_uuid}/env-vars --input body.json
경로는 /api/v1 또는 /api/v2로 시작해야 합니다. 토큰과 조직이 자동으로 추가됩니다.
bypass_token 및 kubeconfig 자격 증명은 --include-secrets을 전달하지 않는 한 편집되어 표시됩니다.
텔레프레즌스에 연결
shipyard telepresence connect --env {environment_uuid}
거기에서 네임스페이스의 모든 포드와 직접 통신할 수 있습니다. 서비스와 통신하려면 네임스페이스 호스트 이름을 사용해야 할 수도 있습니다. 이는 telepresence status의 Namespace 필드에서 확인할 수 있습니다. 예를 들어 redis와 통신하려면 redis.shipyard-app-build-{uuid}를 사용합니다.
코드에서 실행 파일 빌드:
다음 명령을 실행하여 실행 파일을 만들 수 있습니다:
make
이 새 실행 파일을 실행하려면:
./shipyard
자동 완성 활성화
Bash
이 스크립트는 bash-completion 패키지에 의존합니다. 아직 설치되지 않은 경우 OS의
패키지 관리자를 통해 설치할 수 있습니다.
현재 셸 세션에서 완성을 로드하려면:
source <(shipyard completion bash)
모든 새 세션에 대해 완성을 로드하려면 다음을 한 번 실행하세요.
Linux에서:
shipyard completion bash > /etc/bash_completion.d/shipyard
macOS에서:
shipyard completion bash > $(brew --prefix)/etc/bash_completion.d/shipyard
Zsh
환경에서 셸 완성이 아직 활성화되지 않은 경우 활성화해야 합니다. 다음을 한 번 실행할 수 있습니다:
echo "autoload -U compinit; compinit" >> ~/.zshrc
현재 셸 세션에서 완성을 로드하려면:
source <(shipyard completion zsh); compdef _shipyard shipyard
모든 새 세션에 대해 완성을 로드하려면 다음을 한 번 실행하세요.
Linux에서:
shipyard completion zsh > "${fpath[1]}/_shipyard"
macOS에서:
shipyard completion zsh > $(brew --prefix)/share/zsh/site-functions/_shipyard
이 설정을 적용하려면 새 셸을 시작해야 합니다.
Fish
현재 셸 세션에서 완성을 로드하려면:
$ shipyard completion fish | source
각 세션에 대해 완성을 로드하려면 한 번 실행하세요:
shipyard completion fish > ~/.config/fish/completions/shipyard.fish
PowerShell
현재 셸 세션에서 완성을 로드하려면:
shipyard completion powershell | Out-String | Invoke-Expression
모든 새 세션에 대해 완성을 로드하려면 다음을 실행하세요:
shipyard completion powershell > shipyard.ps1
그리고 PowerShell 프로필에서 이 파일을 소스하세요.
AI 어시스턴트에서 Shipyard 사용하기 (MCP)
shipyard mcp serve은 Model Context Protocol 서버를 실행하므로
Claude Code, Claude Desktop, Cursor 또는 Codex와 같은 어시스턴트가 환경을 나열, 검사, 재빌드 및 구성하고,
서비스 로그를 읽고, 볼륨을 관리하며, 푸시된 변경 사항을 해당 환경에 대해 확인할 수 있습니다.
CLI에 로그인한 상태에서 Claude Code에 추가하세요:
claude mcp add shipyard -- shipyard mcp serve
그런 다음 다음과 같은 질문을 해 보세요:
- "
web저장소에서 실행 중인 환경은 무엇인가요?" - "내 브랜치 환경에서
api서비스의 로그를 보여줘." - "이 환경에
FEATURE_FLAGS=beta을 설정하고worker서비스를 다시 시작해." - "방금 푸시했어. 변경 사항을 해당 환경에 대해 확인해 줘." (또는
/mcp__shipyard__verify)
다른 클라이언트에서 설정, 구성, 전체 도구 목록,
verify 프롬프트 및 문제 해결에 대한 자세한 내용은 **MCP 가이드**를 참조하세요.