#ci #radicle #integration #events #broker #node #distributed-systems

构建 radicle-ci-broker

将集成添加到 CI 引擎或系统到 Radicle 节点

4 个版本 (破坏性更新)

新版本 0.4.0 2024 年 8 月 19 日
0.3.0 2024 年 7 月 18 日
0.2.0 2024 年 6 月 6 日
0.1.0 2024 年 4 月 3 日

174构建工具 中排名

Download history 5/week @ 2024-05-17 6/week @ 2024-05-24 95/week @ 2024-05-31 46/week @ 2024-06-07 3/week @ 2024-06-14 26/week @ 2024-07-05 66/week @ 2024-07-12 40/week @ 2024-07-19 2/week @ 2024-07-26 131/week @ 2024-08-16

134 每月下载量
用于 radicle-native-ci

MIT/ApacheGPL-3.0-or-later

200KB
5K SLoC

radicle-ci-broker

将集成添加到 Radicle,一个分布式 Git 主机和协作系统。

这还不是完全可用于生产的代码,但最终将成为一个监听 Radicle 节点变更并触发相关 CI 的事件。

架构

请参阅 doc 目录中的架构文档。简要概述:CI 代理从 Radicle 节点获取事件,根据其自己的配置过滤它们,并对任何通过过滤器的事件运行配置的适配器可执行文件。代理和适配器使用基于 JSON 的简单消息协议在 stdin/stdout 上进行通信。每个 CI 系统都有自己的适配器。

要在 doc 目录中构建文档,请运行 make。您需要安装一些工具:Pandoc、graphviz (dot)、PlantUML、pikchr-cli。其他工具广泛打包,pikchr-cli 是一个 Rust 包,因此您可以使用 cargo install pikchr-cli 进行安装。

如下构建和发布文档

RADICLE_CI_BROKER_WEBROOT=/tmp/ci make -C doc publish

二进制文件

该包包含多个二进制文件

  • cib --- 实际的 CI 代理
    • 这是您唯一需要关注的,其余的都是用于调试
  • cibtool --- 节点操作员的管理工具,用于管理 CI 代理
  • synthetic-events --- CI 代理开发者的测试工具

打包

debian 目录中,为 Debian 提供了简单、简单、原始、仅个人使用的包装,Lars 使用它来构建个人使用的软件包。

从源代码树运行

要从源代码树运行 cibcibtool

cargo run --bin cib -- --config config.yaml process-events
cargo run --bin cibtool -- --db ci-broker.db event list

注意 -- 参数。它告诉 cargo run 后续所有参数都应传递给正在运行的程序,而不是由 cargo 本身使用。

运行测试

要运行 CI 代理的测试套件

cargo test

(对于 Rust 程序的常规方法。)

配置

配置文件在命令行中指定。它是一个 YAML 文件,例如

default_adapter: native
db: ci-broker.sqlite
adapters:
  native:
    command: radicle-native-ci
    env:
      RADICLE_NATIVE_CI: /home/liw/radicle/radicle-native-ci/x/config.yaml
    sensitive_env:
      some_secret: some_secret_value_that_is_not_logged
filters:
  - !And
    - !Repository "rad:z2e6URdt1we1iG1BCVqtx8QVgsX4a"
    - !Or
      - !Branch "main"
      - !AnyPatchRef

或者如果您只想筛选补丁 COB 更新(例如评论),到指定的仓库

default_adapter: native
db: ci-broker.sqlite
adapters:
  native:
    command: radicle-native-ci
    env:
      RADICLE_NATIVE_CI: /home/liw/radicle/radicle-native-ci/x/config.yaml
    sensitive_env:
      some_secret: some_secret_value_that_is_not_logged
filters:
  - !And
    - !Repository "rad:z2e6URdt1we1iG1BCVqtx8QVgsX4a"
    - !And
      - !AnyPatch
      - !Not 
        - !AnyPatchRef 

这将以适配器的形式运行本地 CI 引擎,在任何通过筛选的仓库事件上。筛选器允许对指定仓库中 main 分支或任何 Radicle 补丁的任何更改。

许可

Radicle CI 代理根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款分发。

有关详细信息,请参阅 LICENSE-APACHELICENSE-MIT

依赖项

~41–76MB
~1.5M SLoC