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 网络编程

Download history 11/week @ 2024-04-21 2/week @ 2024-04-28 9/week @ 2024-05-19 1/week @ 2024-05-26 11/week @ 2024-06-02 13/week @ 2024-06-09 7/week @ 2024-06-16 2/week @ 2024-06-30 132/week @ 2024-07-14 50/week @ 2024-07-21 73/week @ 2024-07-28

每月下载量 255
5 crates 中使用

MIT 许可证

125KB
4K SLoC

Astro run

Astro Run 是一个高度可扩展的运行器,可以执行任何工作流程。

astro-run CI codecov MIT

功能

示例

依赖项

将以下内容添加到您的 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