cuenv_buildkite/lib.rs
1//! Buildkite CI Pipeline Emitter for cuenv
2//!
3//! This crate provides a Buildkite pipeline emitter that transforms cuenv's
4//! intermediate representation (IR) into Buildkite pipeline YAML format.
5//!
6//! # Example
7//!
8//! ```ignore
9//! use cuenv_buildkite::BuildkiteEmitter;
10//! use cuenv_ci::emitter::Emitter;
11//! use cuenv_ci::ir::IntermediateRepresentation;
12//!
13//! let emitter = BuildkiteEmitter::new()
14//! .with_emojis()
15//! .with_default_queue("linux-x86");
16//!
17//! let ir: IntermediateRepresentation = /* ... */;
18//! let yaml = emitter.emit(&ir)?;
19//!
20//! println!("{}", yaml);
21//! ```
22//!
23//! # IR to Buildkite Mapping
24//!
25//! | IR Field | Buildkite YAML |
26//! |----------|----------------|
27//! | `task.id` | `key` |
28//! | `task.command` | `command` |
29//! | `task.env` | `env` |
30//! | `task.secrets` | `env` (variable references) |
31//! | `task.depends_on` | `depends_on` |
32//! | `task.resources.tags` | `agents: { queue: "tag" }` |
33//! | `task.concurrency_group` | `concurrency_group` + `concurrency: 1` |
34//! | `task.manual_approval` | `block` step before task |
35//! | `task.outputs` (orchestrator) | `artifact_paths` |
36
37pub mod emitter;
38pub mod provider;
39pub mod schema;
40
41pub use emitter::BuildkiteEmitter;
42pub use provider::BuildkiteCIProvider;