14个版本
0.5.2 | 2024年5月8日 |
---|---|
0.5.1 | 2022年10月14日 |
0.5.0 | 2022年3月23日 |
0.4.2 | 2022年3月2日 |
0.1.2 | 2021年4月13日 |
#77 in 配置
每月 23次下载
在mongo-task-generator中使用
52KB
824 行
shrub-rs
一个Rust包,用于定义和解析Evergreen项目配置。
目录
描述
提供用于建模evergreen项目配置文件的struct。
获取帮助
我应该问哪个渠道的问题?
如果你对shrub-rs有任何问题,请在slack频道#evergreen-users中提及@dag-on-call,或通过[email protected]给我们发邮件。
我如何请求更改/报告shrub-rs的错误?
在Jira中创建一个DAG工单。
我应该在我的工单或问题中包含什么信息?
请尽可能提供更多信息。这有助于避免长时间的信息收集线程。
请包含以下内容
- 请求动机:为什么要求这个更改?(这有助于我们了解请求的优先级和紧急性)
- 背景:我们是否应该了解有关此请求的任何背景信息?
- 描述:您希望调查或更改什么?
安装
要安装,请将"shrub-rs"包含在您的项目的Cargo.toml依赖关系中。
使用方法
Shrub提供了Evergreen项目配置的双向转换。这意味着您可以将Evergreen项目配置转换为Rust struct,或将Rust struct转换为Evergreen项目配置。
解析evergreen项目配置
将Evergreen项目配置转换为Rust struct可以使分析Evergreen项目的配置变得更容易。
注意:您可能希望在解释之前通过evergreen evaluate
运行项目配置,以执行Evergreen所做的某些预处理。
一个简单的示例
use std::path::Path;
use std::process::Command;
use shrub_rs::models::project::EvgProject;
fn get_project_config(location: &Path) -> EvgProject {
let evg_config_yaml = Command::new("evergreen")
.args(&["evaluate", location.to_str().unwrap()])
.output()
.unwrap();
EvgProject::from_yaml_str(std::str::from_utf8(&evg_config_yaml.stdout).unwrap()).unwrap()
}
let evg_project = get_project_config(Path::from("path/to/config.yml));
println!("My project has {} build variants", evg_project.build_variants.len());
导出evergreen项目配置
建立常青配置,然后导出它,当通过evergreen的generate.tasks
执行动态任务生成时非常有用。
一个简单的示例
use std::path::Path;
use shrub_rs::models::{project::EvgProject, task::{EvgTask}};
let evg_task = EvgTask {
name: "My new task".to_string(),
..Default::default()
};
let evg_project = EvgProject {
tasks: vec![evg_task],
..Default::default()
};
std::fs::write(Path::from("path/to/target"), serde_json::to_string_pretty(&evg_project).unwrap()).unwrap();
更多示例
有关如何使用shrub的更复杂示例,请参阅mongo-task-generator。
贡献指南
高级架构
Shrub-rs提供了Rust结构体来建模evergreen项目配置。为了了解提供的结构,请查看evergreen项目配置文档
设置本地开发环境
克隆仓库后,只需运行cargo build
即可下载和构建项目。
linting格式化
cargo fmt
cargo clippy
运行测试
cargo test
版本控制
此项目使用semver进行版本控制。
请在CHANGELOG.md
中包含每个新版本添加的描述。
代码审查
所有更改都需要代码审查,并通过GitHub Pull Requests进行。
部署
在master分支合并时自动触发生产部署。
资源
依赖关系
~2–2.6MB
~55K SLoC