729 字约 2 分钟
配置凭据
在当前项目下更新 .cargo/config.toml 文件,添加以下行
[registry]
default = "cnb-cargo-repo"
global-credential-providers = ["cargo:token"]
[registries.cnb-cargo-repo]
index = "sparse+<CNB_CARGO_URL>"使用以下命令配置凭据
echo ${CNB_TOKEN} | cargo login --registry cnb-cargo-repo如何获取 <CNB_CARGO_URL> 请参考获取制品库地址
如何获取 <CNB_TOKEN> 请参考创建访问令牌
推送制品
云原生构建中推送
1.粘贴以下内容到 .cnb.yaml, 提交到代码仓库
.cnb.yml
$:
tag_push:
- docker:
image: docker.cnb.cool/examples/language/rust-1.87
stages:
- name: 配置认证凭据
script: echo ${CNB_TOKEN} | cargo login
- name: 发布到 CNB
script: cargo publish --allow-dirty- 更新代码仓库中
.cargo/config.toml文件,添加以下行。<CNB_CARGO_URL>请参考获取制品库地址
[registry]
default = "cnb-cargo-repo"
global-credential-providers = ["cargo:token"]
[registries.cnb-cargo-repo]
index = "sparse+<CNB_CARGO_URL>"3.更新代码仓库中 Cargo.toml 文件的 version 字段
[package]
name = "<PACKAGE_NAME>"
version = "<VERSION>"- 提交一个 Tag,将会触发云原生构建
云原生开发中推送
1.粘贴以下内容到 .cnb.yaml, 提交到代码仓库后, 点击代码仓库页面右上角 「云原生开发」 按钮进入开发环境
.cnb.yml
$:
vscode:
- docker:
image: docker.cnb.cool/examples/language/rust-1.87
services:
- vscode
- docker2.按照上文 配置凭据
3.更新代码仓库中 Cargo.toml 文件的 version 字段
[package]
name = "<PACKAGE_NAME>"
version = "<VERSION>"4.发布到 CNB
cargo publish使用制品
拉取制品
按照上文配置凭据后,使用以下命令拉取制品
# 以 rand 举例
cargo add rand撤回/取消撤回制品
# 撤回制品
cargo yank my-crate@0.1.0
# 取消撤回制品
cargo yank my-crate@0.1.0 --undo删除制品
cargo 没有提供删除命令, 请参考 删除制品
FAQ
Q1: 如何配置全局凭据
全局配置路径如下:
windows: %USERPROFILE%\.cargo\config.toml
Unix: $HOME/.cargo/config.toml
更多用法, 请查阅官方文档
Q2: cargo 版本要求
推荐使用 1.73.0 及以上 Cargo 版本。
因为 1.73.0 以下版本对私有仓库的支持不够完善,某些场景下无法携带凭证,导致认证失败。
Q3: 将开源包上传到 CNB 时,提示制品版本已存在
这是因为 CNB 默认代理了官方源。当服务端不存在某个包时,会自动从代理提供该包给 Cargo 客户端,导致 Cargo 客户端误以为 CNB 已存在该包。
要解决这个问题,可以先上传一个不存在的版本作为占位,然后再上传正确的版本即可。