使用 CLI

安装并使用 Stackhero CLI,从命令行、脚本、CI 和 AI agents 管理您的 stacks 和 services

Stackhero CLI 是一个轻量级、独立的命令行工具,可帮助您直接在终端中管理您的 stacks 和 services。您可以用它来创建和删除 services、访问凭据、更新配置,以及处理许多其他日常任务。

CLI 可在 Linux(glibcmusl)、macOS 和 Windows 上运行。它以单个二进制文件的形式提供,无需额外依赖,因此安装和更新都很简单。

无论您是在交互式使用,还是通过脚本、CI pipelines 或 AI agents 自动化 workflows,Stackhero CLI 都同时为人工操作和自动化而设计。每条命令都支持 --format=json 标志,以提供机器可读的输出;当您希望在 shell 变量中获取原始值时,还支持 --format=script

您可以运行以下命令来安装最新版本:

curl -fsSL https://www.stackhero.io/install.sh | sh

此命令会下载适用于您平台的正确二进制文件,并将其安装为 stackhero。CLI 还会自动保持最新。

您有两种主要的身份验证方式:

stackhero login

运行此命令时,CLI 会向您提供一个 URL,并且还会自动在您的浏览器中打开它。然后,您可以直接在已登录的 Stackhero dashboard 中批准访问。

完全支持双因素身份验证,并且您无需在 CLI 中输入密码。

对于自动化 workflows,您可以在 dashboard 的 Account > Access tokens 下创建一个 access token,并通过 STACKHERO_TOKEN 环境变量将其提供给 CLI。

export STACKHERO_TOKEN="usr-xxxxxx:your-token"
stackhero organizations-list

设置 STACKHERO_TOKEN 后,它会优先于交互式会话,因此浏览器就变成可选项了。这种方式非常适合非交互式使用场景。您可以随时在 dashboard 中查看和撤销 tokens。

每条 CLI 命令都接受一个全局 --format 选项:

  • human(默认):显示适合交互式使用的可读表格和文本。
  • json:返回机器可读的 JSON,这对脚本和 AI agents 很有帮助。
  • script:仅返回原始值,这使得将输出赋值给 shell 变量变得很容易。

例如:

stackhero organizations-list --format=json
stackId=$(stackhero --format=script stack-create --name="My stack")

如果您想查看所有可用命令的完整列表,可以运行 stackhero --help。如果您想查看某个特定命令的详细信息,可以尝试 stackhero COMMAND --help

一些常用命令包括:

  • Organizationsorganizations-list
  • Stacksstacks-liststack-createstack-renamestack-delete
  • Servicesservices-listservice-addservice-wait-forservice-renameservice-delete
  • Configurationservice-configuration-getservice-configuration-setservice-configuration-example
  • Storeservices-store-listinstances-store-listregions-list
  • Upgradesservice-upgrade-instances-store-listservice-upgrade-instance
  • Accountloginlogout
  • Maintenanceself-update

下面是一个示例脚本,展示了如何创建一个 stack、添加一个 service、等待其就绪并获取其凭据。此示例完全是非交互式的,并使用 STACKHERO_TOKEN 环境变量。

#!/bin/bash
set -e

export STACKHERO_TOKEN="usr-xxxxxx:your-token"

serviceStore="directus"   # 服务 store 名称。参见:`stackhero services-store-list`
instance="1GB"            # 实例(大小)名称。参见:`stackhero instances-store-list --service-store=directus`
region="europe"           # 区域名称。参见:`stackhero regions-list`

# 创建一个 stack(使用您唯一的 organization,如果您有多个,请添加 `--organization`)
stackId=$(stackhero --format=script stack-create \
  --name="My stack")
echo "Stack: ${stackId}"

# 添加一个 service(名称会自动解析,上面的 stack ID 也同样可用)
serviceId=$(stackhero --format=script service-add \
  --stack="My stack" \
  --service-store="${serviceStore}" \
  --instance="${instance}" \
  --region="${region}")
echo "Service: ${serviceId}"

# 等待 service 进入运行状态
stackhero service-wait-for --service="${serviceId}"

# 获取凭据和配置
stackhero service-configuration-get --service="${serviceId}" --format=json

每个 service 文档页面都包含一个可直接运行的 Automate with the CLI 指南,并且针对该 service 进行了定制,因此您可以获得开始所需的一切。

CLI 会自动保持最新。如果您想手动强制更新,可以运行:

stackhero self-update

如果您想卸载 CLI,只需从系统中删除 stackhero 二进制文件即可。