727 字约 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>,请参考创建访问令牌。
推送制品
云原生构建中推送
- 粘贴以下内容到
.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>"- 更新代码仓库中
Cargo.toml文件的 version 字段:
[package]
name = "<PACKAGE_NAME>"
version = "<VERSION>"- 提交一个 Tag,将会触发云原生构建。
云原生开发中推送
- 粘贴以下内容到
.cnb.yaml,提交到代码仓库后,点击代码仓库页面右上角「云原生开发」按钮进入开发环境:
.cnb.yml
$:
vscode:
- docker:
image: docker.cnb.cool/examples/language/rust-1.87
services:
- vscode
- docker按上文配置凭据完成设置
更新代码仓库中
Cargo.toml文件的 version 字段:
[package]
name = "<PACKAGE_NAME>"
version = "<VERSION>"- 发布到 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
更多用法,请查阅 Cargo 官方文档。
Q2:Cargo 版本要求
推荐使用 Cargo 1.73.0 及以上版本。
1.73.0 以下版本对私有仓库的支持不够完善,部分场景下无法携带凭证,导致认证失败。
Q3:将开源包上传到 CNB 时,提示制品版本已存在
CNB 默认代理了官方源。当服务端不存在某个包时,会自动从代理提供该包给 Cargo 客户端,导致客户端误以为 CNB 已存在该包。
解决方法是先上传一个不存在的版本作为占位,然后再上传正确的版本。