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삭제된 환경 반환booleanfalse
json전체 JSON 출력 인쇄booleanfalse
name애플리케이션 이름으로 필터링string
org-name여러 조직에 속한 경우 조직 이름으로 필터링string기본 조직
page요청된 페이지 번호int1
page-size요청된 페이지 크기int20
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 출력 인쇄booleanfalse
org여러 조직에 속한 경우 환경의 조직string기본 조직
bypass-token스크립트용 환경의 바이패스 토큰만 인쇄booleanfalse

--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로그 출력 팔로우booleanfalse
tail표시할 최근 로그 줄 수int3000

볼륨 작업

환경의 모든 볼륨 나열

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 가이드**를 참조하세요.