README
🚀 Shipyard命令行工具(CLI)
Shipyard命令行工具(CLI)是一款用于管理Shipyard平台上临时环境的实用工具,能帮助用户高效地在平台上进行环境管理操作。
🚀 快速开始
在使用Shipyard CLI之前,你需要完成安装和登录操作。
📦 安装指南
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 | 按分支名称过滤 | 字符串 | | | deleted | 返回已删除的环境 | 布尔值 | false | | json | 打印完整的JSON输出 | 布尔值 | false | | name | 按应用程序名称过滤 | 字符串 | | | org-name | 如果你属于多个组织,可以按组织名称过滤 | 字符串 | 你的默认组织 | | page | 请求的页码 | 整数 | 1 | | page-size | 请求的每页数量 | 整数 | 20 | | pull-request-number | 按拉取请求编号过滤 | 字符串 | | | repo-name | 按仓库名称过滤 | 字符串 | |
示例:
- 列出在
main分支上运行flask-backend仓库的所有环境:
shipyard get environments --repo-name flask-backend --branch main
- 列出所有已删除的环境:
shipyard get environments --deleted
根据环境的UUID获取特定环境的详细信息
shipyard get environment {environment_uuid}
可用的标志参数如下: | 名称 | 描述 | 类型 | 默认值 | |----------|------------------------------------------------------|---------|------------------| | json | 打印完整的JSON输出 | 布尔值 | false | | org-name | 如果你属于多个组织,可以按组织名称过滤 | 字符串 | 你的默认组织 |
停止正在运行的环境
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 get services --env {environment_uuid}
进入正在运行的环境的服务
在一个正在运行的环境的指定服务中执行任何带有参数和标志的命令。在双斜杠后传递任何命令参数。
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 | 跟随日志输出 | 布尔值 | false | | tail | 显示最近的日志行数 | 整数 | 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}
连接到Telepresence
shipyard telepresence connect --env {environment_uuid}
连接成功后,你将能够直接与命名空间中的所有Pod进行通信。你可能需要使用命名空间主机名来与服务进行通信,你可以通过telepresence status命令在Namespace字段下获取该主机名。例如,要与Redis进行通信,你可以使用redis.shipyard-app-build-{uuid}。
从代码构建可执行文件
你可以通过运行以下命令来创建一个可执行文件:
make
要运行这个新的可执行文件,请执行:
./shipyard
启用自动补全功能
Bash
此脚本依赖于bash-completion包。如果尚未安装该包,你可以通过操作系统的包管理器进行安装。
要在当前shell会话中加载补全功能,请执行:
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
如果你的环境中尚未启用shell补全功能,你需要先启用它。你可以执行以下命令一次:
echo "autoload -U compinit; compinit" >> ~/.zshrc
要在当前shell会话中加载补全功能,请执行:
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
你需要启动一个新的shell会话,此设置才能生效。
Fish
要在当前shell会话中加载补全功能,请执行:
$ shipyard completion fish | source
要在每个会话中加载补全功能,请执行一次以下命令:
shipyard completion fish > ~/.config/fish/completions/shipyard.fish
PowerShell
要在当前shell会话中加载补全功能,请执行:
shipyard completion powershell | Out-String | Invoke-Expression
要在每个新会话中加载补全功能,请运行:
shipyard completion powershell > shipyard.ps1
并在你的PowerShell配置文件中引入该文件。
模型上下文协议(MCP)集成
Shipyard CLI提供了一个MCP服务器,用于集成AI助手。这使得像Claude这样的AI助手可以直接管理Shipyard环境。
支持的MCP工具
环境管理(7个工具)
get_environments- 带过滤条件列出环境get_environment- 获取特定环境的详细信息stop_environment- 停止正在运行的环境restart_environment- 重启已停止的环境rebuild_environment- 使用最新提交重新构建环境cancel_environment- 取消环境的最新构建revive_environment- 恢复已删除的环境
服务管理(2个工具)
get_services- 列出环境中的服务get_logs- 获取服务的日志
卷管理(5个工具)
get_volumes- 列出环境中的卷reset_volume- 将卷重置为初始状态get_snapshots- 列出卷快照create_snapshot- 创建卷快照load_snapshot- 加载卷快照
组织管理(3个工具)
get_orgs- 列出所有组织get_org- 获取当前默认组织set_org- 设置默认组织
有限工具
这些工具会返回帮助文本,指导用户使用CLI命令:
exec_service- 在服务容器中执行命令port_forward- 将服务端口转发到本地机器telepresence_connect- 连接到Telepresence
添加到Claude
使用API令牌和组织名称:
claude mcp add shipyard --env SHIPYARD_API_TOKEN=your-token-here --env SHIPYARD_ORG=your-org-name -- shipyard mcp serve
如果已经通过CLI进行了配置:
claude mcp add shipyard -- shipyard mcp serve
添加到Codex CLI
编辑~/.codex/config.toml文件并添加以下内容:
[mcp_servers.shipyard]
command = "shipyard"
args = ["mcp", "serve"]
env = { "SHIPYARD_API_TOKEN" = "your-token-here", "SHIPYARD_ORG" = "your-org-name" }
微信扫一扫