An open API service indexing awesome lists of open source software.

https://github.com/buildkite-plugins/mise-buildkite-plugin


https://github.com/buildkite-plugins/mise-buildkite-plugin

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

          

# mise Buildkite Plugin

Install [mise](https://mise.jdx.dev/), run `mise install`, and export the tool environment into the Buildkite step.

This plugin is intentionally small:

- `mise` is installed if missing or at the wrong version
- `mise install` always runs
- `mise env --shell bash` is sourced in the hook and appended to `$BUILDKITE_ENV_FILE`
- tool versions come from the repository, not plugin config

## Example

```yml
steps:
- label: ":wrench: Test"
plugins:
- mise#v1.1.1:
version: 2026.2.11
command: go test ./...
```

## Monorepo Example

```yml
steps:
- label: ":wrench: Test backend"
plugins:
- mise#v1.1.1:
dir: backend
command: go test ./...
```

## Hosted Agent Cache Volumes

```yml
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 where `mise install` and `mise env` run.
- `cache-dir` (default: unset): directory to use for `MISE_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:

```bash
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
```