-
Notifications
You must be signed in to change notification settings - Fork 0
First Pipeline
Leonard Ramminger edited this page Aug 9, 2026
·
1 revision
This walkthrough builds a small pipeline from scratch. It uses generic phase and scope names; adapt them to your project.
A build.lua that:
- Generates code and docs (in parallel)
- Compiles the code
- Exposes a
beez buildworkflow and abeez hellotask
At your repository root:
-- build.lua
step({
name = "gen-docs",
phase = "generate",
scope = "docs",
output = { "docs.out" },
run = "echo 'generated docs' > docs.out",
})
step({
name = "gen-code",
phase = "generate",
scope = "code",
output = { "gen.out" },
run = "echo 'generated code' > gen.out",
})
step({
name = "compile",
phase = "compile",
scope = "code",
input = { "gen.out" },
output = { "build.out" },
run = "echo 'compiled' > build.out",
})
order("gen-code", "compile")
workflow("build", {
{ parallel = {
{ phase = "generate", scope = "docs" },
{ phase = "generate", scope = "code" },
}},
{ phase = "compile", scope = "code" },
})
task("hello", "echo hello from beez")From the same directory:
beez hello # runs the task
beez build # runs the workflow
beez --list steps # shows registered steps
beez --list workflowsExpected flow for beez build:
-
gen-docsandgen-coderun in parallel -
compileruns aftergen-code(because oforder()) -
gen-docsis not on the critical path tocompile
Run only one phase+scope:
beez -p generate:docsRun a single step:
beez -s compileCreate config.lua:
return {
cache = {
enabled = true,
path = ".cache",
},
env = {
load_dotenv = true,
},
}Load it at the top of build.lua:
beez.config(require("config"))Create .env:
BUILD_MODE=release
Read it in build.lua:
local mode = beez.env("BUILD_MODE") or "debug"Use mode in your shell commands or step config as needed.
| Change | What you learn |
|---|---|
Remove order("gen-code", "compile")
|
gen-code and compile may run in parallel in the same level (until compile fails without gen.out) |
Add input / output globs |
Step cache can skip unchanged work (see Caching when available) |
Replace shell run with a Lua function |
Per-file logic and success cache (Step Context, DSL Patterns) |
Add more scopes under compile
|
Independent variants selectable via workflow or -p
|
If you only need a quick shell command, you do not need steps or workflows yet:
task("hello", "echo hello > hello.out")
task("clean", "rm -f hello.out")Add steps and workflows when you need grouping, caching, or parallelism.
- Core Concepts - steps, tasks, workflows in detail
- Phases and Scopes - naming and CLI filtering
-
Parallel Execution and Dependencies -
order()and workflow parallelism -
Project Layout -
config.lua,.env,.cache/
Quick Reference · Glossary · FAQ
- Fundamentals
- Core Concepts
- Project Layout
- First Pipeline
- Phases and Scopes
- How Phases and Scopes Work
- Selecting with Phases and Scopes
- Designing Phases and Scopes
- Parallel Execution and Dependencies
- Configuration
- Configuration Overview
- Global User Config
- Project Config
- Environment Variables
- Performance Settings
- Cache Settings
- Config Reference
- CLI
- CLI Overview
- Running Targets
- Filtering by Phase
- Running a Single Step
- Listing Entities
- Output and Logging Flags
- Cache and Maintenance Flags
- Meta and Utility Commands
-
Project Scaffolding —
beez --init(embedded Tempify) - CLI Flag Reference
- Lua DSL
- DSL Overview
- Plugin System — Plugins, Config DSL, Standard-Workflows
- Step Declaration
- Task Declaration
- Workflow Declaration
- Order Declaration
- Configure Step
- ReqPack Declaration
- Beez API
- Step Context
- DSL Patterns
- Caching
- Caching Overview
- Step Cache
- Success Cache
- Glob Metadata Cache
- Artifact Patterns
- Cache Keys and Invalidation
- Cache Storage and Maintenance
- Caching Troubleshooting
- UI and Output
- Output Modes
- Progress and Animation
- Colors and Themes
- Run Summaries
- Logging and Log Files
- Development and Contribution
- Building and Setup
- Repository Layout
- Testing
- Code Quality
- Feature Development Workflow
- Submitting Changes