如何构建 Ubicloud ubi 命令行工具并用令牌完成首次登录?
发布时间:2026/9/15 14:17:23 锦皓数字建站

如何构建 Ubicloud ubi 命令行工具并用令牌完成首次登录【免费下载链接】ubicloudOpen source alternative to AWS. Elastic compute, block storage (non replicated), firewall and load balancer, managed Postgres, K8s, AI inference, and IAM services.项目地址: https://gitcode.com/GitHub_Trending/ub/ubicloudUbicloud 仓库中的 cli/README.md 说明ubi是用于与 Ubicloud 交互的命令行程序完整 Go 源码就在仓库的cli/目录下cli/ubi.go。你要完成的任务分两步用 Go 工具链从源码构建出ubi可执行文件然后把 Ubicloud 个人访问令牌写入UBI_TOKEN环境变量完成认证。需要说明的是ubi没有交互式登录命令它的“登录”就是以令牌作为凭据发起第一次请求并得到有效响应。前提条件Go 工具链cli/go.mod 声明go 1.24.0构建时需要不低于该版本的 Go。如果你愿意用项目推荐的方式可以按 DEVELOPERS.md 安装mise并执行mise install它会按 mise.toml 安装 Go 1.24.0文档中的which go示例指向 mise 安装的 go/1.24.0。一个 Ubicloud 账号及该账号的个人访问令牌personal access token令牌在 Web 控制台的某项目 token 页面创建代码见 routes/project/token.rb——创建成功后页面提示Created personal access token with id ...。该令牌与项目绑定服务端用它反查项目见 routes/cli.rb。仅自托管场景一个可用的 Ubicloud 控制面实例如果你不用官方托管服务按 README.md 的 Quick start 自建git clone gitgithub.com:ubicloud/ubicloud.git ./demo/generate_env docker-compose -f demo/docker-compose.yml up控制面随后在localhost:3000提供服务。构建 ubi 可执行文件最短路径就是 cli/README.md 给出的go build命令在仓库的cli/目录内执行cd cli go build -ldflags -s -w -X main.versioncat version.txt -tags osusergo,netgo命令中的cat version.txt把 cli/version.txt 里的版本号当前为1.1.0编译进二进制-tags osusergo,netgo是项目固定的构建标签。成功后会在cli/下生成名为ubi的可执行文件。仓库根目录的 Rakefile 还提供了一个rake ubi任务描述为“Compile cli/ubi binary for current platform”实际执行的是cd cli go build -ldflags -X main.version版本 -tags osusergo,netgo。但这条路径要求你已按 DEVELOPERS.md 搭好本仓库的 Ruby 环境如果你只是想要一个 CLI直接用上面的go build即可。另外cli/README.md里提到的make构建方式适用于独立的 ubicloud/cli 仓库那个仓库的Makefile由本仓库rake cli-sync任务生成内容为go build -ldflags -X main.version版本 -tags osusergo,netgo。本仓库的cli/目录中没有 Makefilemake在这里不可用。用令牌完成首次登录ubi每次请求都会读取UBI_TOKEN环境变量并以 Bearer 令牌形式发给服务端cli/ubi.go 的getToken与sendRequest。请求默认发往https://api.ubicloud.com/cli如果你跑的是自托管控制面把UBI_URL指向你的实例的/cli路径即可——测试 spec/cli_spec.rb 中的用法是UBI_URLhttp://localhost:8484/cli对应上面 docker-compose 起的本地实例则为http://localhost:3000/cli。export UBI_TOKEN你的个人访问令牌 # 仅自托管实例需要官方托管服务不要设置此项 # export UBI_URLhttp://localhost:3000/cli cd cli ./ubi versionubi version是 cli-commands/version.rb 中定义的“Display CLI program version”命令。令牌有效时命令返回客户端上报的版本号即构建时从version.txt编译进去的值当前仓库为 1.1.0stdout 正常输出、退出码为 0——这就算完成了第一次带令牌的请求。验证与失败现象以下三种结果是 spec/cli_spec.rb 中断言过的行为可以直接当作排查依据场景输出退出码未设置UBI_TOKENstderr! Personal access token must be provided in UBI_TOKEN env variable for use1令牌无效stderrinvalid token1请求成功HTTP 2xx响应体输出到 stdoutubi version即版本号0如果怀疑请求没发到你预期的地址设置UBI_DEBUG1后运行ubi会打印sending: [...]发给服务端的 argv以及本地实际执行的命令见 spec/cli_spec.rb 中UBI_DEBUG的用例。使用边界令牌是项目级个人访问令牌服务端以它解析出project_id后才处理命令routes/cli.rb令牌被删除或权限不足时命令不会成功。部分ubi子命令如ssh、scp、sftp、psql、pg_dump、pg_dumpall需要在本地执行对应程序这些二进制必须已安装在你的机器上也可以用UBI_SSH等大写形式的环境变量指定替代可执行文件路径测试中就是用UBI_SSH/bin/echo这一方式打桩的。cli/README.md标注ubi采用 APGL 许可证与主仓库许可证不同构建产物对外分发时留意这一点。到这里你手上有一个可用的ubi二进制并且已经证明它能带着有效令牌与 Ubicloud 通信后续把version换成其他子命令如help、各资源命令即可开始实际管理资源。【免费下载链接】ubicloudOpen source alternative to AWS. Elastic compute, block storage (non replicated), firewall and load balancer, managed Postgres, K8s, AI inference, and IAM services.项目地址: https://gitcode.com/GitHub_Trending/ub/ubicloud创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。