mise Buildkite Plugin
Install mise, run mise install, and export the tool environment into the Buildkite step.
This plugin is intentionally small:
miseis installed if missing or at the wrong versionmise installalways runsmise env --shell bashis sourced in the hook and appended to$BUILDKITE_ENV_FILE- tool versions come from the repository, not plugin config
Example
steps:
- label: ":wrench: Test"
plugins:
- mise#v1.1.1:
version: 2026.2.11
command: go test ./...
Monorepo Example
steps:
- label: ":wrench: Test backend"
plugins:
- mise#v1.1.1:
dir: backend
command: go test ./...
Hosted Agent Cache Volumes
cache: ".buildkite/cache-volume"
steps:
- label: ":wrench: Test"
plugins:
- mise#v1.1.1: ~
command: go test ./...
When running on Buildkite hosted agents, the plugin automatically uses /cache/bkcache/mise as MISE_DATA_DIR if a cache volume is attached. Buildkite only mounts that volume when the pipeline or step defines cache, so you still need to request one in pipeline.yml.
Configuration
version(default:latest): mise version to install.dir(default: checkout directory): directory wheremise installandmise envrun.cache-dir(default: unset): directory to use forMISE_DATA_DIR. This is mainly useful on self-hosted agents with a persistent disk.
Repo Requirements
The target directory must contain one of:
mise.toml.mise.toml.tool-versions
MISE_DATA_DIR still takes precedence over plugin configuration. Advanced mise behavior should otherwise be configured with normal step environment variables such as MISE_LOG_LEVEL or MISE_EXPERIMENTAL.
Development
Run plugin checks locally:
mise install
docker run --rm -v "$PWD:/plugin" -w /plugin buildkite/plugin-linter --id buildkite/mise --path /plugin
docker run --rm -v "$PWD:/plugin" -w /plugin buildkite/plugin-tester
"$(mise where shellcheck@0.11.0)/shellcheck-v0.11.0/shellcheck" hooks/pre-command tests/pre-command.bats