13 个版本 (1 个稳定版)
1.0.0 | 2024 年 7 月 20 日 |
---|---|
0.1.8 | 2024 年 3 月 16 日 |
0.1.4 | 2024 年 2 月 20 日 |
0.1.3 | 2023 年 10 月 1 日 |
0.1.0 | 2023 年 8 月 23 日 |
#283 in 网络编程
每月下载量 255
在 5 crates 中使用
125KB
4K SLoC
Astro run
Astro Run 是一个高度可扩展的运行器,可以执行任何工作流程。
功能
- Docker 工作流程运行时
- 支持 gRPC 服务器 协调多个运行器客户端
- 支持 连接到远程运行器
示例
依赖项
将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
astro-run = "0.1"
代码示例
use astro_run::{stream, AstroRun, RunResult, Workflow};
struct Runner;
impl Runner {
fn new() -> Self {
Runner
}
}
#[astro_run::async_trait]
impl astro_run::Runner for Runner {
async fn run(&self, ctx: astro_run::Context) -> astro_run::RunResponse {
let (tx, rx) = stream();
tokio::task::spawn(async move {
// Send running log
tx.log(ctx.command.run);
// Send success log
tx.end(RunResult::Succeeded);
});
Ok(rx)
}
}
#[tokio::main]
async fn main() {
// Create astro run
let astro_run = AstroRun::builder().runner(Runner::new()).build();
// Workflow
let workflow = r#"
jobs:
job:
name: Job
steps:
- run: Hello World
"#;
// Create workflow
let workflow = Workflow::builder()
.config(workflow)
.build(&astro_run)
.await
.unwrap();
// Create a new execution context
let ctx = astro_run.execution_context().build();
// Run workflow
let _res = workflow.run(ctx).await;
}
Astro Run 仅定义了运行器的接口。用户可以实现自己的运行器,例如,Docker 运行器。
更多示例
贡献
欢迎贡献!请随意提出问题或提交拉取请求以改进项目。
许可证
本项目采用 MIT 许可证。
依赖项
~12–27MB
~470K SLoC