Overview
Introduction
Buildkite's pipeline.yml is deliberately minimal compared to some other CI systems, but that minimalism means small omissions, like forgetting `agents:` tags or the block-step syntax for manual approval, are easy to miss when writing it by hand.
This tool generates a complete pipeline.yml from a form: command steps, agent targeting, a wait step, artifact paths, and an optional manual-approval block step.
What Is Buildkite Pipeline Generator?
A form-driven generator for Buildkite pipeline configuration. You add one or more steps, each with a label, one or more commands, and optional agent-targeting tags, then optionally add a wait step, shared artifact paths, and a manual-approval block step.
The output is the plain YAML list Buildkite expects under its top-level `steps:` key, with each step type (command, wait, block) rendered in Buildkite's documented shape.
How Buildkite Pipeline Generator Works
Each step's agent-targeting field is parsed from a simple `key=value, key=value` string into the `agents:` mapping Buildkite expects, and multi-line commands become a YAML list under `command:` rather than a single string.
The wait and block steps, if enabled, are appended after all command steps, in Buildkite's documented shorthand form (`- wait` and `- block: "label"`).
When To Use Buildkite Pipeline Generator
Use it when setting up Buildkite for a new pipeline and you want a working pipeline.yml with correct agent targeting and step syntax from the start.
It's also useful for adding a manual approval gate before a deploy step to an existing pipeline without needing to look up Buildkite's block-step syntax.
Often used alongside GitLab CI Generator, Drone CI Generator and CircleCI Config Generator.
Features
Advantages
- Correctly parses agent-targeting tags into Buildkite's `agents:` mapping instead of requiring you to remember the YAML shape.
- Automatically switches between a single-string and list form for `command:` depending on whether you entered one or multiple command lines, matching Buildkite's own conventions.
- Generates the wait and block step shorthand syntax exactly as Buildkite's documentation shows it.
Limitations
- Doesn't cover trigger steps, step-level `if:`/`branches:` conditionals, or dynamic pipeline uploads via `buildkite-agent pipeline upload`.
- Artifact paths are applied to every command step rather than per-step, split them manually afterward if only specific steps should upload artifacts.
Examples
Best Practices & Notes
Best Practices
- Use `agents:` tags to route steps to appropriately sized or specialized agents (e.g. a GPU queue) rather than letting Buildkite pick an arbitrary agent for demanding steps.
- Add a block step immediately before any production deploy step so a human has to explicitly approve the release.
- Set artifact_paths on build steps that produce output later steps or humans need, like test reports or compiled binaries.
Developer Notes
Agent-targeting is parsed from a flat `key=value` comma-separated string into Buildkite's `agents:` mapping since that's a friendlier input than raw YAML for a form field; pairs missing either a key or a value are silently dropped rather than producing invalid YAML. Single-command steps render `command:` as a scalar string (not a one-item list) to match the more common style seen in Buildkite's own examples.
Buildkite Pipeline Generator Use Cases
- Scaffolding a new Buildkite pipeline.yml for a repository
- Adding a manual approval gate before a production deploy step
- Producing a working multi-step pipeline with artifact uploads for a build
Common Mistakes
- Forgetting agent tags entirely and letting Buildkite dispatch a demanding step to an underpowered or mismatched agent.
- Using a wait step where a block step was intended (or vice versa), a wait step continues automatically and provides no actual manual gate before a deploy.
Tips
- Combine a wait step right before a block step if you want all prior build/test steps to finish first, then require explicit human approval before deploying.