#workflow #runner #docker #automation #ci #grpc-server

astro-run-protocol

AstroRun是一个高度可定制的流程编排器,允许用户定义自己的核心运行器。无论是Docker还是其他平台,AstroRun都让用户能够轻松灵活地运行工作流程。

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

Download history 3/week @ 2024-04-19 3/week @ 2024-05-17 2/week @ 2024-05-24 4/week @ 2024-05-31 3/week @ 2024-06-07 1/week @ 2024-06-14 161/week @ 2024-07-19 24/week @ 2024-07-26 1/week @ 2024-08-02

每月下载量 186
2 crates 中使用

MIT 许可证

165KB
4.5K 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许可证。

依赖项

~15–31MB
~523K SLoC