使用 Gitea 做 Rust Cargo 的 Registries
记录使用 Gitea 做 Rust Cargo 的 Registries,实际私有的 Registries 也有 Alexandrie 实现,即使不使用 Registries ,也可以指定依赖的 Git 路径,可以指定 tag ,ref 等等,不过 Registries 确实跟方便一些,而 Gitea 的 Registries 也算好用。
Gitea 部署
Gitea 部署和配置可见官方文档。我这里贴出 docker-compose.yml
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "22:22"
Gitea 软件包
下面介绍使用 Gitea 做 Rust Cargo 的 Registries。首先创建一个组织,实际上在自己账户的库里操作也可以。创建完成后进入组织,打开设置-软件包-Cargo 注册中心索引 ,点击初始化索引。然后可以看到组织仓库里出现一个 _cargo-index 库。
个人电脑上配置 Registries,可以在全局配置文件 ~/.cargo/config 中写入,也可以在每个使用这个 Registries 的 Rust 项目根目录下创建 .cargo/config 写入。
[registries.gitea]
index = "https://api.example.com/RustLib/_cargo-index.git"
token = "Bearer 令牌"
[net]
git-fetch-with-cli = true
token 为 gitea 的令牌,然后在要上传到库 minilib1 目录下执行
cargo login --registry gitea # 登录 需要输入令牌
cargo publish # 上传软件包
# 全部支持命令
cargo publish
cargo add
cargo install
cargo yank
cargo unyank
cargo search
等命令,可以如果成功,可以在 组织-软件包 中找到刚刚 publish 的包。
下面使用这个库,创建一个项目,依赖这么写就行,:
[dependencies]
minilib1 = { version = "0.1.0", registry = "gitea" }
在 main.rs 就可以正常使用这个库的函数了。
需要注意的是,组织和库都可以是私有。但是我有时报错 401 ,组织改为公开,然后改为私有就好使了,可能是 bug 也可能是我误操作。此外,经过实验,配置文件中的 启用登录访问限制 需要关闭才能生效(版本: 1.19.3 )。启用登录访问限制后,组织公开和项目公开即使有鉴权,也不能通过 cargo run 自动拉取,会出现 401。
欢迎赞赏~
赞赏