#gitlab #runner #configuration #config-file #file-format

glrcfg

GitLab Runner 高级配置文件格式的 Rust 实现

3 个不稳定版本

0.2.1 2024 年 7 月 29 日
0.2.0 2024 年 7 月 21 日
0.1.0 2024 年 7 月 13 日

#128 in 配置

Download history 73/week @ 2024-07-07 36/week @ 2024-07-14 129/week @ 2024-07-21 145/week @ 2024-07-28 3/week @ 2024-08-04

386 次每月下载

Apache-2.0

44KB
813

🏃🏽 glrcfg

Rust 实现 GitLab Runners 高级配置文件格式

如果您不幸需要生成用于高级 GitLab runner 设置的配置文件(您可以在此处获取其文档 这里),并且需要使用 Rust 来实现,那么这个库就是您需要的。

动机

对我们来说,答案很简单:runrs。我们的主要语言是 Rust,并且由于 Python 中也没有类似的东西,我们决定将其作为一个有趣的 Rust 生态系统贡献。尽管它可能有点小众。

(我们有时也会用到 Go,但我们希望将其限制到最小。)

用法

运行 cargo add glrcfg 即可。这里有文档和 官方 GitLab 格式文档 - 我们将所有术语和默认值都保持与那里完全一致。

查看 glrcfg crate 的文档以了解如何使用它,特别是其功能标志。有一个 tracing 功能可以通过 tracing 启用一些日志记录,还有一个 sqlx 功能实现了 SQLx 特性 sqlx::Typesqlx::Encodesqlx::Decode 特性,以便您可以将我们的类型用作数据库字段。

关于人体工学的说明

您会发现配置文件的所有组件都实现了作为具有所有字段为 pub 的结构体,并且实现了 Default::default。这样,您可以使用 Component { field: value, ..Default::default() } 模式从您拥有的任何数据模型中简单地创建组件。

组件具有某些语义。例如,全局部分中的 concurrent 字段必须是非零正整数,log_level 字段必须是日志级别列表中的一个,而 connection_max_age 必须是 Golang 耗时字符串(例如 1h30m)。这个库使用或实现了强制执行这些约束的类型,因此无法创建无效的配置。换句话说:不能简单地将一个 &str 作为 Golang 耗时字符串传递 - 您必须使用 GolangDuration::parse("1h30m")(或 "1h30m".parse())并传递结果。

支持

这是一个开源项目,所以没有具体支持。如果您在存储库中打开一个问题,我们会尽力帮助您,但没有任何承诺。

许可证

许可如下:

任选其一。

贡献

除非您明确声明,否则您提交的任何贡献,根据 Apache-2.0 许可证定义的,将按上述方式双许可,没有额外的条款或条件。


© 版权所有 2024 bmc::labs GmbH。保留所有权利。
稳健的工程。可持续的代码。

依赖关系

~4.5–8MB
~164K SLoC