702 字约 2 分钟
配置凭据
在当前项目下更新 .cargo/config.toml 文件, 添加以下行
[registry]
default = "cnb"
global-credential-providers = ["cargo:token"]
[registries.cnb]
index = "sparse+<CNB_CARGO_URL>"使用以下命令配置凭据
echo ${CNB_TOKEN} | cargo login --registry cnb如何获取 <CNB_CARGO_URL> 请参考获取制品库地址
如何获取 <CNB_TOKEN> 请参考创建访问令牌
推送制品
1.粘贴以下内容到 .cnb.yaml, 提交到代码仓库
$:
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-dirty2.更新代码仓库中 .cargo/config.toml 文件, 添加以下行. <CNB_CARGO_URL> 请参考获取制品库地址
[registry]
default = "cnb"
global-credential-providers = ["cargo:token"]
[registries.cnb]
index = "sparse+<CNB_CARGO_URL>"3.更新代码仓库中 Cargo.toml 文件的 version 字段
[package]
name = "<PACKAGE_NAME>"
version = "<VERSION>"4.提交一个 Tag, 将会触发云原生构建
1.粘贴以下内容到 .cnb.yaml, 提交到代码仓库后, 点击代码仓库页面右上角 「云原生开发」 按钮进入开发环境
$:
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 没有提供删除命令, 请参考 删除制品
FQA
Q1: 如何配置全局凭据
全局配置路径如下:
windows: %USERPROFILE%\.cargo\config.toml
Unix: $HOME/.cargo/config.toml
更多用法, 请查阅官方文档
Q2: cargo 版本要求
推荐使用 1.68 及以上 cargo 版本
因为当前 Cargo 制品库仅支持 sparse 索引协议
1.60 - 1.67 版本: 需要为每个命令添加 -Z sparse-registry 参数, 以使用 sparse 索引协议
1.60 版本以下: 不支持 sparse 索引协议
Q3: 将开源包上传到 CNB 时, 提示制品版本已存在
这是因为 CNB 默认代理了官方源, 服务端不存在这个包时, 会自动从代理提供这个包给 cargo 客户端.
导致 cargo 客户端误以为 CNB 已存在这个包.
要解决这个问题, 可以先上传一个不存在的版本占位. 然后再上传一次正确的版本即可.