#workflow #runner #automation #docker #ci

astro-run-logger

AstroRun is a highly customizable workflow orchestrator that allows users to define their own core runners. Whether it's Docker or other platforms, AstroRun empowers users to run workflows with ease and flexibility.

4 releases

0.1.3 Feb 16, 2024
0.1.2 Aug 27, 2023
0.1.1 Aug 27, 2023
0.1.0 Aug 23, 2023

#1 in #astrorun

Download history 2/week @ 2023-11-11 9/week @ 2023-11-18 19/week @ 2023-11-25 9/week @ 2023-12-02 9/week @ 2023-12-09 7/week @ 2023-12-16 10/week @ 2023-12-23 2/week @ 2023-12-30 5/week @ 2024-01-13 6/week @ 2024-01-20 23/week @ 2024-01-27 3/week @ 2024-02-03 141/week @ 2024-02-10 147/week @ 2024-02-17

314 downloads per month

MIT license

5KB
97 lines

Astro run

Astro Run is a highly extensible runner that can execute any workflow.

astro-run CI codecov MIT

Features

Example

Dependencies

Add the following to your Cargo.toml file:

[dependencies]
astro-run = "0.1"

Code Example

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)
    .unwrap();

  // Create a new execution context
  let ctx = astro_run.execution_context().build();

  // Run workflow
  let _res = workflow.run(ctx).await;
}

Astro Run only defines the interface for Runners. Users can implement their own desired Runners, e.g., Docker runner.

More Examples

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests to improve the project.

License

This project is licensed under the MIT License.

Dependencies

~1–10MB
~73K SLoC