toolmantim / bksr

Run and test your Buildkite pipeline steps locally, just as they'd run in CI (discontinued)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

⚠️ This project has been discontinued. Please use the Buildkite CLI

bksr - Buildkite Step Runner

NPM package

Run and test your Buildkite pipeline steps locally, just as they'd run in CI, using the buildkite-agent bootstrap itself.

$ bksr
? Choose a pipeline step to run (Use arrow keys)
❯ :shell: Shellcheck
  :sparkles: Lint
  :shell: Tests

Features:

  • Runs any Buildkite command pipeline step, including those that use plugins
  • Won’t accidentally run steps designed for branches (such as 'master' only release steps)
  • Can run dynamic pipelines via STDIN
  • Can run all steps in sequence, including specifying a branch for branch filtering
  • Can run a fresh checkout, emulating a clean CI agent environment

Installation

On macOS using Homebrew:

$ brew install toolmantim/bksr/bksr

Everywhere else:

$ npm i -g bksr

Or, with npx

$ npx bksr

Or, like srsly:

$ alias bksrsly=bksr
$ bksrsly
? Choose a pipeline step to run (Use arrow keys)
❯ :shell: Shellcheck
  :sparkles: Lint
  :shell: Tests

Usage

bksr

Run and test your Buildkite pipeline steps locally, just as they'd run in CI,
using the buildkite-agent itself.

Options:
  --step, -s      Label of the step to run                              [string]
  --all, -a       Run steps that don’t use branch filters              [boolean]
  --branch, -b    Run all steps matching the given branch               [string]
  --pipeline, -p  Path to the pipeline file, or "-" to read from STDIN
                                   [string] [default: ".buildkite/pipeline.yml"]
  --checkout, -c  Run steps in a fresh checkout       [boolean] [default: false]
  --version       Show version number                                  [boolean]
  --help          Show help                                            [boolean]

Requirements

Roadmap

Small stuff

  • Fix examples not showing in --help
  • Homebrew

Bigger stuff

  • Support env var substituion in pipeline.yml (buildkite/agent#765)
  • Support setting env vars based on pipeline.yml
  • Hide build output via header collapsing
  • Local-mode artifact/metadata/pipeline commands
  • Bundling the buildkite-agent binary maybe?

Developing

You can run it locally by invoking lib/bksr.js from the command line:

$ cd ~/some-project
$ ~/path-to-bksr-checkout/bin/bksrc.js

To run the unit and integration tests:

$ docker-compose run --rm tests

Or, you can use bksr itself 😱

$ bin/bksr.js --all

Releasing

Run the following command:

git checkout master && git pull && npm version [major | minor | patch]

The command does the following:

  • Ensures you’re on master and don't have local, un-commited changes
  • Bumps the version number in package.json based on major, minor or patch
  • Runs the postversion npm script in package.json, which:
    • Pushes the tag to GitHub
    • Publishes the npm release
    • Opens the GitHub releases page so you can publish the release notes

Previous artwork

License

See LICENSE (ISC)

About

Run and test your Buildkite pipeline steps locally, just as they'd run in CI (discontinued)

License:ISC License


Languages

Language:JavaScript 77.3%Language:Shell 17.0%Language:Dockerfile 5.7%