@jameslnewell/buildkite-pipelines
v3.14.0
Published
Generate Buildkite pipelines from code.
Downloads
10,687
Readme
@jameslnewell/buildkite-pipelines
Generate Buildkite pipelines from code.
Installation
NPM:
npm install @jameslnewell/buildkite-pipelines
Yarn:
yarn add --dev @jameslnewell/buildkite-pipelines
Usage
Define your pipeline in code.
./.buildkite/pipeline.js
const {Pipeline, CommandStep} = require('@jameslnewell/buildkite-pipelines');
module.exports = new Pipeline().addStep(
new CommandStep().setLabel('👋 Greeting').addCommand('echo "Hello World!"'),
);
Generate and upload your pipeline in a Buildkite step.
./.buildkite/pipeline.yml
steps:
- commands:
- buildkite-pipelines ./.buildkite/pipeline.js | buildkite-agent pipeline upload
plugins:
- docker#v3.11.0:
image: jameslnewell/buildkite-pipelines
Transpiling Typescript
Define your pipeline in code.
./.buildkite/pipeline.ts
import {Pipeline, CommandStep} from '@jameslnewell/buildkite-pipelines';
export default new Pipeline().addStep(
new CommandStep().setLabel('👋 Greeting').addCommand('echo "Hello World!"'),
);
Generate and upload your pipeline in a Buildkite step.
./.buildkite/pipeline.yml
steps:
- commands:
- yarn global add ts-node
- buildkite-pipelines -r ts-node/register ./.buildkite/pipeline.ts | buildkite-agent pipeline upload
plugins:
- docker#v3.11.0:
image: jameslnewell/buildkite-pipelines
Why?
This library is a very thin wrapper around Buildkite's yaml
syntax for defining a pipeline. As such the value of this library is unlikely to be realised for simple one-file pipelines.
Consider using this library when:
- you're dynamically generating the pipeline and you require a programming language
- your pipeline is split across multiple
yaml
files and you're unable to useyaml
anchors and aliases for composition across them - you can't possibly live without typings
Related projects
- https://hasura.io/blog/what-we-learnt-by-migrating-from-circleci-to-buildkite/
- https://docs.sourcegraph.com/dev/background-information/ci/development
Development
- Setup a pipeline - use the command for setting up a docker agent here