NewBuildkite hosted agents. Check out the Q1 Release for the latest features, including managed CI/CD offerings for Mac and Linux.

Buildbox Agent 0.2 Release


A few months ago we released a new version of the Buildbox Agent that was rewritten entirely in Golang. Today we’re releasing version 0.2 of the agent, composed of almost 100 commits with some exciting new features.

Artifact Downloading

You can already upload build artifacts and have them available in the UI, but now you can download the artifacts via the command line in a build step.

$ buildbox-artifact download "pkg/build.tar.gz" pkg/

This will download the pkg/build.tar.gz file from a previous step, and put it in the local pkg folder. This is handy when you want to build assets or binaries in one build step and ship them off to production servers in a later build step (even from an agent running on a different server). buildbox-artifact also supports wildcards like so:

$ buildbox-artifact download "*.tar.gz" pkg/

This will download all the .tar.gz files that have been uploaded across all previous build steps. You can download an artifact from a particular build step using the --job flag:

$ buildbox-artifact download "build.zip" tmp/ --job "build"

This will download the build.zip file from the "build" pipeline step.

Build Metadata

The new buildbox-agent ships with a new tool, buildbox-data, allowing you to set and get arbitrary metadata on builds. Think of it like a per-build key/value store. It’s useful when you’ve got multiple steps in your build and you need to pass data from one step to another. The API is simple:

$ buildbox-data set "foo" "bar" $ buildbox-data get "foo"

Build metadata can also be managed and queried via the API.

Improved Process Killing

We’ve improved how processed get killed (triggered when cancelling a build). Previously processes were sent a SIGTERM signal, and if the process ignored the signal you'd be left with a rogue process running on your build machine. We now send the same SIGTERM signal, but if the process fails to respond we send it a SIGKILL. We also now make sure child processes are killed when the main process does.

Better Logging

We now use logrus for logging. Taking advantage of the logging levels meant we could remove a lot of boilerplate code around logging. You can see debugging information from the agent (as well as buildbox-data and buildbox-artifact) using the --debug flag.

How to Upgrade

Upgrading is easy, just follow our upgrade guide in the documentation. If you need a hand, feel free to get in contact at hello@buildkite.com.


A couple of shout-outs to some people that really helped with this release: Don Pinkster from MoneyBird, Mark Wolfe and Theo Julienne from Ninja Blocks, and Samuel Cochran from Envato. Thank you so much ❤️❤️