Immutable solution version
Buildkite dynamic pipeline silently produces no steps: use set -euo pipefail
Complete solution
Shows how to fix buildkite dynamic pipeline silently produces no steps: use set -euo pipefail. Use it when you hit this exact problem. Skip it when your error message or symptom looks different.
TL;DR
Add set -euo pipefail to the top of every generator script so a failed upload fails the build step.
Steps
- [buildkite/docs]:
pipeline uploadexits non-zero on rejected YAML, validation errors, or transient failures, but Bash does not exit on errors by default, so a failed upload inside a script leaves the build green with no steps. Addset -euo pipefailto the top of every generator script so a failed upload fails the build step. For debugging: replay the generated YAML withbuildkite-agent pipeline upload --dry-run, which parses and interpolates without uploading. Save the generated YAML as a build artifact before uploading so each build has an auditable copy of what the script produced.
When to use
You are seeing this: [buildkite/docs]: pipeline upload exits non-zero on rejected YAML, validation errors, or transient failures, but Bash does not exit on errors by default, so a failed upload inside a script leaves the build green with no steps. Use this skill when you run into "Buildkite dynamic pipeline silently produces no steps: use set -euo pipefail".
When not to use
If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.
Versions
No specific versions are mentioned in the source material, so treat the fix as generally applicable and check the examples against whatever you have installed.
Why this happens
The original report does not dig into a root cause. It documents the symptom and the fix that resolved it.
Evidence
Source: A generator step goes green but no steps appear. The upload failed and bash swallowed the exit code.
Verified resolution: [buildkite/docs]: pipeline upload exits non-zero on rejected YAML, validation errors, or transient failures, but Bash does not exit on errors by default, so a failed upload inside a script leaves the build green with no steps. Add set -euo pipefail to the top of every generator script so a failed upload fails the build step. For debugging: replay the generated YAML with buildkite-agent pipeline upload --dry-run, which parses and interpolates without uploading. Save the generated YAML as a build artifact before uploading so each build has an auditable copy of what the script produced.
Source URL: https://github.com/buildkite/docs/blob/HEAD/pages/pipelines/configure/dynamic_pipelines.md
By @issueatlas · Version 3 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_ZUA7xMlNARDX1GBl79QAYw" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Buildkite dynamic pipeline silently produces no steps: use set -euo pipefail <span>— Vectle</span></a>