13 个版本 (7 个重大更新)
0.7.0 | 2024 年 5 月 16 日 |
---|---|
0.5.0 | 2024 年 5 月 8 日 |
0.4.1 | 2024 年 3 月 7 日 |
0.2.0 | 2023 年 10 月 20 日 |
0.0.0 | 2023 年 1 月 31 日 |
974 在 WebAssembly 中
每月 27 次下载
475KB
11K SLoC
概述
此存储库包含 Warg 协议的参考实现、客户端库、服务器和 CLI。
可以使用 Warg 客户端和服务器将 WebAssembly 组件分发到各种组件工具。
请参阅 介绍 了解设计决策和范围。
先决条件
- 安装最新版本的 稳定 Rust。
安装
安装或升级 warg
CLI
cargo install warg-cli
安装或升级参考实现服务器
cargo install warg-server
入门
运行服务器
在运行服务器之前,设置 WARG_OPERATOR_KEY
环境变量
export WARG_OPERATOR_KEY="ecdsa-p256:I+UlDo0HxyBBFeelhPPWmD+LnklOpqZDkrFP5VduASk="
WARG_OPERATOR_KEY
是服务器操作员的私钥。
目前,这是通过环境变量获取的,但很快将通过命令行参数或与系统密钥环的集成来获取。
使用 cargo
运行服务器
mkdir content
cargo run -p warg-server -- --content-dir content
在此创建的 content
目录是服务器将存储包内容的地方。
注意:目前服务器仅在内存中存储其状态,因此当服务器重新启动时将丢失。将在不久的将来添加持久层。
设置客户端
首先配置客户端以使用本地服务器的 URL
warg config --registry http://127.0.0.1:8090
这创建了一个配置文件 $CONFIG_DIR/warg/config.json
;该配置文件将指定要使用的家庭注册表URL,这样就不必为每个命令指定 --registry
选项。
客户端下载的数据默认存储在 $CACHE_DIR/warg
。
接下来,创建一个新的签名密钥以发布软件包
warg key new 127.0.0.1:8090
新签名密钥将存储在您的操作系统的密钥存储中,并在发布到注册表时用于签名软件包日志条目。
发布软件包
可以通过运行以下命令初始化一个新的软件包:
warg publish init example:hello
这将在 example
命名空间中创建一个名为 hello
的新软件包。
可以通过运行以下命令发布软件包的某个版本:
warg publish release --name example:hello --version 0.1.0 hello.wasm
这会发布一个名为 example:hello
且版本号为 0.1.0
的软件包,内容来自 hello.wasm
。
或者,可以将上述步骤合并为单个发布操作
warg publish start example:hello
warg publish init example:hello
warg publish release --name example:hello --version 0.1.0 hello.wasm
warg publish submit
在此,初始化软件包和发布版本 0.1.0 创建的记录作为同一事务的一部分。
使用 warg publish abort
命令来中止挂起的发布操作。
管理软件包权限
注意:软件包权限系统仍在开发中。
您可以使用 warg publish grant
子命令向另一个公钥授予权限
warg publish grant --name example:hello ecdsa-p256:ABC...
您可以使用
warg key info
子命令获取您自己的公钥。
默认情况下,都授予了 publish
和 yank
权限。这可以通过 --permission
标志进行修改。
类似地,可以通过 warg publish revoke
撤销权限。请注意,在撤销权限时,密钥通过 ID(指纹)进行识别
warg publish revoke --name example:hello sha256:abc...
重置和清除本地数据
要重置注册表的本地区域软件包日志数据
warg reset
要清除所有注册表下载的软件包内容
warg clear
贡献
这是一个 Bytecode Alliance 项目,并遵循 Bytecode Alliance 的 行为准则 和 组织行为准则。
获取代码
您将使用 git
克隆代码
git clone https://github.com/bytecodealliance/registry
测试更改
理想情况下,应该为所有更改编写测试。
运行 warg-server
内存实现的测试
cargo test --workspace
运行 warg-server
的 Postgres 实现的测试
docker run -d --name postgres-test -e POSTGRES_PASSWORD=password -p 5433:5432 postgres
diesel database setup --database-url postgres://postgres:password@localhost:5433/test-registry --migration-dir crates/server/src/datastore/postgres/migrations
WARG_DATABASE_URL=postgres://postgres:password@localhost:5433/test-registry cargo test --features postgres -- --nocapture
您可能需要首先安装 Docker 和具有 Postgres 功能的 Diesel CLI。
cargo install diesel_cli --no-default-features --features postgres
提交更改
此存储库的更改通过拉取请求(PR)管理。每个人都欢迎提交拉取请求!我们将在最多几天内审查或回复。
代码格式化
代码必须使用当前Rust稳定版本的 cargo fmt
命令进行格式化。这将在CI中进行检查。
持续集成
该存储库的持续集成相对重要。它测试了Windows、macOS和Linux上的更改。
依赖项
~25–40MB
~671K SLoC