Changelog

Unblocker environment variables

Block steps record the person who unblocks them, and this information is available to subsequent steps via $BUILDKITE_UNBLOCKER environment variables. ๐Ÿ‘ฎโ€โ™‚๏ธ

List of unblocker environment variables from the documentation linked earlier

Due to a quirk in our job environment calculations, these variables were only available in steps that were pipeline uploaded after the block step. This has been fixed, so now all steps after a block step will have the correct unblocker environment variables, no matter how theyโ€™re defined or uploaded. ๐Ÿ’ฏ

So if you upload a deployment pipeline like this: ๐Ÿ’โ€โ™€๏ธ

Deployment pipeline with block step still blocked and a subsequent waiting command job

The $BUILDKITE_UNBLOCKER environment variables will be set to the person who presses the Deploy button: ๐Ÿ™‹โ€โ™€๏ธ

Block step which has been unblocked and a completely command job with the unblocker's name

You can read more about block steps in our documentation. ๐Ÿ“š

Samuel

Build messages are now optional

To make testing new pipelines easier, you no longer need to specify the "Message" of a build. Buildkite now automatically resolves the message, based on the git commit, when the build starts ๐ŸŽ‰

Screenshot of the New Build dialog

We've also updated the Builds REST API and GraphQL API so your integrations can take advantage of this too.

Keith

SSO setup guides now available

We've added a new SSO section to the documentation, with instructions for setting up Single-Sign On with Google OAuth, Okta, OneLogin, and ADFS, and custom SAML providers โœจ

sso.png

You can now also find step-by-step instructions for managing SSO with GraphQL, allowing you to enable, disable and update your SSO settings via the Buildkite GraphQL API :graphql:

Harriet

Public build pages for open source

Buildkite pipelines can now made publicly visible, allowing them to be opened up to the world for the first time! ๐ŸŒ

Screen Shot 2019-02-06 at 6.11.20 pm.png

If youโ€™re an account admin, you can enable read-only public access for a pipeline from the pipeline settings page.

Many customers and projects are already using them, such as Angular.js and Bazel, and we'd love to read any feedback or ideas you might have on our new beta community forum.

Public pipelines are just the first in a series of improvements we have coming for open-source projectsโ€”weโ€™re just getting started!

p.s. Did you know we offer free plans for open source projects? ๐Ÿ˜˜

Justin

Updated syntax for using plugins in your pipeline YAML

Back in October, Buildkite Agent v3.5.0 included a bug fix to ensure that plugins are always executed in the correct order. In the process of fixing that bug, we've updated our recommended syntax for using plugins to use an array instead of a map, to make it clearer that the plugins are executed in order.

For example, if your pipeline uses the following syntax, we recommend updating it:

1steps:
2  - label: '<img class="emoji not-prose size-[1em] inline align-[-0.1em]" title="shipit" alt=":shipit:" src="https://buildkiteassets.com/emojis/img-buildkite-64/shipit.png" draggable="false" />'
3    plugins:
4      docker-login#v2.0.1:
5        username: ci
6      docker-compose#v2.6.0:
7        push: app

The new recommended syntax, which works on all versions of the Buildkite Agent, changes the plugin property to be an array:

1steps:
2  - label: '<img class="emoji not-prose size-[1em] inline align-[-0.1em]" title="shipit" alt=":shipit:" src="https://buildkiteassets.com/emojis/img-buildkite-64/shipit.png" draggable="false" />'
3    plugins:
4      - docker-login#v2.0.1:
5          username: ci
6      - docker-compose#v2.6.0:
7          push: app

Harriet

Run pipelines locally with bk cli ๐Ÿค–

We've been working on a command-line tool for Buildkite for a while. Recently it's been upgraded with a local pipeline runner for testing out pipelines locally on your development machine.

We use this for testing plugins, and quickly iterating on pipelines in development. Secretly, it was just an experiment to use the image support in iTerm 2 for rendering inline custom emojis ๐Ÿ˜‰๐Ÿ’ฅ

render1549343670295.gif

Download the latest release and let us know what you think.

Lachlan

A new artifact delete button and two new delete APIs

You can now delete artifacts that you no longer want stored on Buildkite with the new delete button in the Artifacts tab:

preview-chat-artifact-loop.gif

When you delete an artifact, it's permanently deleted from our AWS S3 storage and removed from the jobโ€™s artifact list. If youโ€™re using your own S3 bucket or Google Cloud Storage bucket for artifact storage, you'll need to manually remove them from your artifact store (donโ€™t worry, we'll remind you to do this in the confirmation message).

If youโ€™re performing deletions over a large number of builds, or wanting to automate deletion in general, we've updated the REST APIs to add support both artifact deletion and job log deletion.

Eleanor

Parallel jobs now show as a single group

Weโ€™ve updated the pipeline view of parallel jobs, so instead of showing every individual job theyโ€™re now shown as a single, expandable group ๐ŸŽฒ

Animation of parallel job groups

Each parallel job on the build page now also shows their number, and the parallel group size, alongside their label ๐Ÿท

The same parallel jobs, represented with more detail down the page

Parallel jobs are a powerful way to reduce your build time by distributing your tests across agents ๐ŸŒช You can read about them in the parallel job documentation, or see them in action in the parallel testing screencast.

Jessica

Agent Improvements in v3.6 - v3.8

Happy 2019! To kick off the year, we've got some new agent changes fresh off the press!

Better error messages for cancelled jobs ๐Ÿšจ

When a job is cancelled, the agent receives the instruction and starts to shutdown the running job. The job is given 10 seconds to finish, after which it's terminated. Previously what had happened wasn't clear. We now clearly show that a command was interrupted by a signal:

Configurable grace period for cancellation โฑ

By default we give cancelled jobs 10 seconds to finish before they terminate. For some things like a Terraform tear-down, this can take a lot longer. We added a config of cancel-grace-period to customize that value.

1# Wait 600 seconds (10 minutes) for cancellation
2buildkite-agent start --cancel-grace-period 600

Future improvements will allow this to be set at a pipeline or step level.

Checkout directory is removed on error ๐Ÿงน

Checkouts can fail for a variety of reasons which can sometimes leave the git repository in a corrupted state that prevents future checkouts.

The default behaviour for the agent is now to remove the checkout directory if there is a terminal checkout failure.

Windows agents run hooks after cancel ๐ŸŽฃ

Windows unfortunately doesn't handle signals like posix systems do, so on Windows the cancellation behaviour was to simple terminate the job. This meant that artifacts weren't uploaded and hooks like pre-exit didn't run, which left things like docker-compose without a way to cleanup.

We now use Windows Terminal Process Groups and the CTRL_BREAK message to emulate signal handling in windows, which now means it should behave much like it's fairer cousins!

Windows gets terminal colors! ๐Ÿ–

Ok this is a small improvement, but it represents our ongoing efforts to take advantage of the neat things that the Windows Terminal team is doing building for Terminal apps.

Spawn Multiple Agents ๐Ÿ™

Currently we recommend that multiple agents on a host are run via your init system (launchd, systemd, etc). The new --spawn feature allows for multiple parallel agents to be spawned from the one installation.

We're still figuring out how this might fit into the bigger picture, but keen to see how folks use this feature!

Datadog metrics (Beta) ๐Ÿถ

We are working with the Datadog team on becoming an official integration. First steps are getting some simple job metrics into Datadog.

You can use the new config metrics-datadog and metrics-datadog-host.

Let us know what you think at https://forum.buildkite.community/t/about-our-datadog-integration/216

Vendored Plugins ๐Ÿ“ฆ

We now support loading plugins from within your repository. This lets you vendor plugins to ensure that a third-party can't change them.

1steps:
2  - label: 'Test with vendored docker plugin'
3    plugins:
4      - './.buildkite/plugins/docker':
5          image: 'hello-world'

Check out https://github.com/buildkite/agent/pull/878 for a bit more context.

Resolve $BUILDKITE_COMMIT correctly at pipeline upload โš™๏ธ

We now resolve manually triggered builds with a commit of HEAD to the actual commit value in $BUILDKITE_COMMIT for your pipeline uploads.

See https://github.com/buildkite/agent/issues/456 for more context. I'm sorry it took us so long!

Better handling of submodules ๐Ÿงค

We discovered a few gnarly bugs where we weren't ssh keyscanning submodules correctly and also a few cases where we weren't cleaning up lingering submodules in the checkout phase. These are now squashed!

Lachlan

New ๐Ÿš€ Sticker in the Buildkite Shop

Everyone's favourite illustration from the Buildkite website has been repackaged and deployed as a set of transparent stickers, ready for you to launch onto any surface you choose โœจ

Rocket-Sticker-animation_MoarCotton.gif

RocketSticker_scene.jpg

You can order your own set of ๐Ÿš€ stickers from the Buildkite Shop.

Ben

Link to jobs from annotations

You can now link directly to a job from a build annotation! ๐Ÿ”—

Animated 2018-12-13 at 13.44.40.gif

This should make the annotations generated by neat annotation generators like test-summary-buildkite-plugin and rspec-buildkite all the more handy.

Jessica

Upload user avatars and organization icons

You can now upload a user avatar directly on Buildkite. ๐Ÿคณ๐Ÿป Youโ€™ll find the option to either drag-and-drop, or browse for an avatar in your Personal Settings!

Setting your Avatar

If you donโ€™t upload an avatar directly, weโ€™ll continue to use your Gravatar, or if you use Buildkite via Single Sign-On, the avatar from your SSO provider.

Finally, organization admins can find a new option to upload an icon under Organization Settings. ๐Ÿ–ผ That icon will be used in the organization switcher, as well as shown alongside Single Sign-On prompts.

Jessica

Elastic Stack for AWS v4.0.0

We've released a new major version of Elastic Stack for AWS.

The Buildkite Elastic CI Stack gives you a private, autoscaling Buildkite Agent cluster. Use it to parallelize legacy tests across hundreds of nodes, run tests and deployments for all your Linux-based services and apps, or run AWS ops tasks.

The new version is focused on moving the underlying instances to Amazon Linux 2, which brings with it modern versions of systemd amongst others.

Check out the full release notes at https://github.com/buildkite/elastic-ci-stack-for-aws/releases/tag/v4.0.0 and let us know what you think at https://forum.buildkite.community/t/upcoming-elastic-stack-v4/78.

Lachlan

Autocomplete for your pipeline.yml files

The Buildkite pipeline schema is now available in the JSON Schema Store and on GitHub, allowing you to autocomplete and validate your pipeline YAML files as you write them ๐Ÿ“โœจ

Video showing autocompletion of a Buildkite pipeline file

Any editor extension that supports RedHat YAML Language Server will automatically pick up support, including:

If youโ€™ve built your own dynamic pipeline tools or plugins you can use the full JSON schema in your tests, or to validate your pipelines before uploading them to Buildkite.

Tim

New Screencast: Docker

There's a new screencast available at buildkite.com/screencasts/docker ๐ŸŽ‰

The Docker screencast walks through a Docker workflow in Buildkite: building, testing, and deploying an image to production. The pipeline and code you'll see in the screencast are also available on GitHub: https://github.com/buildkite/screencast-examples/

docker-changelog.png

You can check out the Docker screencast, and all the others, at buildkite.com/screencasts

Harriet

Agents prior to 2.0 are no longer supported

Some of you may not know this, but Buildkite actually used to be called Buildbox! We changed our name back in December 2014.

From today, BUILDBOX_* environment variables won't be generated for new jobs.

We've confirmed there are no agents running this version connected to Buildkite, however we can't tell if you're referencing any BUILDBOX_* environment variables in your build scripts. If you are, please update them to use their BUILDKITE_* equivalent.

You can see our environment variable documentation for a full list of current job environment variables.

Eleanor

Canceled builds now show who canceled

We've just shipped a small update to the build page to include the user who canceled the build ๐Ÿ™…โ€โ™€๏ธ๐Ÿ™…โ€โ™‚๏ธ

sam-canceled-build.png

And if your build was canceled due to Build Skipping (e.g. if youโ€™ve enabled "Cancel Intermediate Builds") we'll show that too:

automatically-canceled-build.png

Keith

Beta: Defining Pipeline Build Steps with YAML

We've just shipped a new beta feature giving you the ability to define your initial build steps using the same pipeline YAML format that you use in source code.

This means that you can now configure trigger steps, block steps with input fields, and plugins independently of your pipelineโ€™s source repository. YAML steps will become the default for all new pipelines once the beta is complete.

yaml-screenshot.png

Head on over to your "Pipeline Settings" page to convert your pipeline to YAML Steps.

You can read more about the feature and give us feedback in the Buildkite Community Forum

Keith

Two-Factor Authentication

Two-factor authentication for user accounts has just been released ๐Ÿš€๐Ÿ“Ÿโœจ

You can find two-factor authentication in the sidebar of your Personal Settings. Set up your One Time Password with your favorite authenticator application, and don't forget to save your recovery codes somewhere secure ๐Ÿ—ƒ๐Ÿ’พ๐Ÿ’ฟ

large-mfa-changelog.png

Harriet

Docker Plugin v2

Buildkite Docker Plugin v2.0.0 has been released, and includes:

  • Support for multi-line commands
  • A new command option for using single-binary/command line Docker images
  • Windows container support
1steps:
2  - command: 'dotnet publish -c Release -o published'
3    plugins:
4      - docker#v2.0.0:
5          image: 'microsoft/dotnet:latest'
6          always-pull: true

See all the details, and upgrade instructions, on the release notes: https://github.com/buildkite-plugins/docker-buildkite-plugin/releases/tag/v2.0.0

Lachlan

Start turning complexity into an advantage

Create an account to get started with a 30-day free trial. No credit card required.

Buildkite Pipelines

Platform

  1. Pipelines
  2. Pipeline templates
  3. Public pipelines
  4. Test Engine
  5. Package Registries
  6. Mobile Delivery Cloud
  7. Pricing

Hosting options

  1. Self-hosted agents
  2. Mac hosted agents
  3. Linux hosted agents

Resources

  1. Docs
  2. Blog
  3. Changelog
  4. Webinars
  5. Plugins
  6. Case studies
  7. Events

Company

  1. About
  2. Careers
  3. Press
  4. Brand assets
  5. Contact

Solutions

  1. Replace Jenkins
  2. Workflows for AI/ML
  3. Testing at scale
  4. Monorepo mojo

Support

  1. System status
  2. Forum
ยฉ Buildkite Pty Ltd 2025