8个版本 (1个稳定版)
1.0.0 | 2024年7月20日 |
---|---|
0.1.6 | 2024年3月15日 |
0.1.4 | 2023年10月1日 |
0.1.3 | 2023年9月10日 |
0.1.1 | 2023年8月23日 |
#21 in #grpc-server
每月下载量 186
在 2 crates 中使用
165KB
4.5K 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许可证。
依赖项
~15–31MB
~523K SLoC