Rename pages/pipelines/defining_steps.md to pipeline.yml #2993
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
/`[email protected]
{: codeblock-file="pipeline.yml"}
Dynamic pipeline templates
If you need the ability to use pipelines from a central catalog, or enforce certain configuration rules, you can either use dynamic pipelines and the
pipeline upload
command to make this happen or write custom plugins and share them across your organization.To use dynamic pipelines and the pipeline upload command, you'd make a pipeline that looks something like this:
Each team defines their steps in
team-steps.yml
. Your templating logic is inenforce-rules.sh
, which can be written in any language that can pass YAML to the pipeline upload.In
enforce-rules.sh
you can add steps to the YAML, require certain versions of dependencies or plugins, or implement any other logic you can program. Depending on your use case, you might want to getenforce-rules.sh
from an external catalog instead of committing it to the team repository.See how Hasura.io used dynamic templates and pipelines to replace their YAML configuration with Go and some shell scripts.
Targeting specific agents
To run command steps only on specific agents:
For example to run commands only on agents running on macOS:
{: codeblock-file="pipeline.yml"}
Further documentation
You can also upload pipelines from the command line using the
buildkite-agent
command line tool. See the buildkite-agent pipeline documentation for a full list of the available parameters.