Changelog

Elastic CI Stack for AWS

Elastic CI Banner.png

To make it easier for you to setup a build stack on AWS we've released the Elastic CI Stack for AWS ⚡ a pre-built CloudFormation stack that gives you autoscaling based on build metrics, centralized CloudWatch agent logging, and S3 bucket support for configuring pipeline secrets.

You can read all about it on our new blog Building Buildkite, the GitHub Readme or our step-by-step guide.

Keith

Export build pipelines as YAML

Transitioning your build pipeline definitions from the web into your source control used to mean rewriting them by hand, which in same cases could have taken a while and made you a sad panda... :sadpanda:

We wanted to make this transition easier, so we've given you the ability to export your pipelines as pre-formatted - ready to rock and roll - pipeline.yml files 🌟

So now you can turn this...

Example Buildkite Pipeline

...into this...

1
2
3
4
5
6
7
8
steps:
  - command: ".buildkite/eslint.sh"
  - command: ".buildkite/webpack.sh"

  - wait

  - command: ".buildkite/deploy.sh"
    branches: "master"

You can find the new export feature over on the Pipeline Settings page...

Export Pipeline as YAML

Check out our Uploading Build Pipelines guide and pipeline.yml documentation if you'd like to learn more about you can do with pipeline definition files 📖

Keith

Buildkite now available as a StatusPage.io Third-Party Component

If you use StatusPage.io you'll be pleased to know you can now find Buildkite in the Third-Party Component list, so when Buildkite experiences an outage (which is hopefully never) then your StatusPage will automatically update. Such automation! ✨

Buildkite-StatusPage-Enable.png

PolyglotCo-Buildkite-StatusPage.png

Keith

Buildkite Agent Homebrew Updates

If you’ve installed the Buildkite Agent using Homebrew recently you might have noticed warnings about the use of SHA1:

1
2
3
4
5
$ brew install buildkite-agent
==> Installing buildkite-agent from buildkite/buildkite
==> Downloading .../buildkite-agent-darwin-386-2.1.13.tar.gz
Warning: SHA1 support is deprecated and will be removed in a future version.
Please switch this formula to SHA256.

Well, we’ve updated everything to use SHA256. Installing using Homebrew should now be slightly less eventful 🎉

We also noticed that installing the new Buildkite Agent 3.0 beta using homebrew’s --devel flag wasn't quite working, so we’ve fixed that too! 🍻

Samuel

Skipped jobs are now hidden by default

To make it easier to see which jobs were run in a build and which ones were skipped, we’ve updated build pipelines to hide skipped jobs by default ✨

No more seeing a disabled 🚀 step in a pull requests’s build pipeline 👏

If you want to see what jobs were skipped you can use the “Show skipped jobs” button on the right hand side of the pipeline 👀

show-skipped-jobs-button.png

Once you’ve shown the skipped jobs you can hover over them to see why they were skipped:

skipped-reason.png

We’ve also added the ability to add branch filter patterns to block steps so you can hide these too (and a new skip property to manually skip a step):

1
2
3
4
5
6
7
8
9
10
11
steps:
  - command: ".buildkite/tests.sh"

  - command: ".buildkite/lint.sh"
    skip: "Linting is currently broken, skipping for now"

  - block: "Deploy to production"
    branches: "master"

  - command: ".buildkite/deploy.sh"
    branches: "master"

For more examples check out the updated Build Pipelines agent documentation and the Uploading Build Pipelines guide.

Keith

Buildkite Agent 2.1.9

We’ve just released Buildkite Agent v2.1.9 (Purple Rain) ⚛️

What’s new since v2.1.8? Two bug fixes and lots of Docker Compose improvements:

  • 🌈 Build headers now work even if they're wrapped in ANSI color escape codes
  • 🐛 Step commands are now run with bash’s -o pipefail option, preventing silent failures where failed_command | cat would end up with a passing step
  • :docker: Docker Compose 1.7.x support, including docker network removal during cleanup
  • :docker: Docker Compose builds now specify --pull, so a new base image will always be pulled if one exists
  • :docker: The "Running command" section of Docker Compose job output is now expanded by default
  • :docker: Docker Compose will now only build the specified service’s image, not all images. If you want to build all images, set the environment variable BUILDKITE_DOCKER_COMPOSE_BUILD_ALL=true
  • :docker: No more BUILDKITE_DOCKER_COMPOSE_LEAVE_VOLUMES undefined errors in bootstrap.sh

This release coincides with the beta of :aws: Buildkite AWS Stack, a one-click auto-scaling build cluster in it's own AWS VPC capable of running any project with a docker-compose.yml. Please test it out and send us your questions and feedback.

The release has been published to the Buildkite package repositories. For instructions on upgrading your agent please see the Upgrading section in the corresponding section of our installation documentation.

For a full list of what's changed see the GitHub releases page :octocat:

Tim

Webhook payloads now include an event property

If you’ve tried processing Buildkite webhooks :webhook: with AWS Lambda :aws-lambda: and Google Cloud Functions :googlecloud: you'll know dealing with HTTP headers can sometimes be more painful than dealing with plain old JSON body properties.

To simplify the job of Buildkite webhook integration we’ve added the event name to the JSON payload body itself—you no longer need extra code to handle HTTP headers 🎉

We’ve updated all the webhooks examples with the new event property. For example, the build.finished webhook now looks like this:

1
2
3
4
5
6
7
8
9
{
  "event": "build.finished",
  "build": {
    "..": "..."
  },
  "sender": {
    "...": "..."
  }
}

We’ve also updated the API overview to clarify when to pass query string parameters and when to send JSON request bodies. The docs for each endpoint explain exactly what is expected :json:

We hope these changes bring a little less 😣 a little more 😺 when you’re working on Buildkite API integrations 💚

Tim

API updates and community releases

After a long weekend full of 🍫🐰 we’re happy to share some of the recent API updates that we’ve made based on your feedback 🛰️✨

  • The Link header is now exposed via CORS headers so you can paginate API results in the browser.
  • The Pipelines API now supports PATCH requests, allowing you to programatically update your build pipeline configuration.
  • Pipeline response objects now include a badge_url property with the URL to its build badge.
  • The build list APIs have a new finished_from parameter, a finished build state alias, and you now can filter by multiple state values.
  • And finally, our GraphQL beta API has received lots of updates as we move more of our own frontend to be GraphQL powered 💪:graphql:

In addition to the changes we’ve rolled out, here’s a few of the API integrations recently shared by the community:

If you’re using our API in interesting ways, or you find something missing that would help you, send a quick email to support@buildkite.com—we’d love to hear from you ✉️

Happy building! 🎉

Tim

Delete uploaded job logs

Have you ever accidentally output something sensitive in a build log before? 😣 If you have, that's ok - we've got your back…

You can now delete logs via our UI. To do so, simply hit the Delete button on a job log and it'll be instantly deleted.

Delete job logs on Buildkite

Deleted jobs logs are permanently removed from our servers, and can't be recovered. ☠️

Keith

Buildkite Agent 2.1.8

We’ve just released Buildkite Agent v2.1.8 (Triantiwontigongolope 🐛) 🎉

What’s new since v2.1.6? A whole slew of bug reports have been closed, including an important fix for running multiple commands, improved build log streaming performance, and a few handy new features:

  • :amazon-s3: If you use a private S3 bucket for build artifact storage you can now set export a BUILDKITE_S3_ACCESS_URL environment variable to point to your own S3 proxy host (such as s3auth.com or aws-s3-proxy) to view your private artifacts in your web browser directly from the links in the Buildkite web interface 🎉
  • :git: You can set an export a BUILDKITE_GIT_CLEAN_FLAGS environment variable to configure the flags passed to git clean on every build. By default we don't specify -x, which can lead to unexpected files being left around from previous builds if they’re in your git ignore list. In the future we're making -x the default, but in the meantime you can add export BUILDKITE_GIT_CLEAN_FLAGS="-fxd" in your agent’s environment hook and enjoy pristine checkouts.
  • 📦 We now support the armhf architecture, allowing you to run the agent on platforms such as Scaleway.

A big thank you to everyone who contributed bug reports and GitHub pull requests ❤️

These releases have been published to the Buildkite package repositories. For instructions on upgrading your agent please see the Upgrading section in the corresponding section of our installation documentation.

For a full list of what's changed see the GitHub releases page :octocat:

Tim

Buildkite Agent 2.1.6

Hot on the heels of the previous release comes Buildkite Agent 2.1.6. 🔥

In the previous release we changed the way we fetch Git branches and tags. Unfortunately we've discovered that some older versions of Git before 1.9.0 have trouble with the way we were fetching tags. This new version adds backwards compatibility for folks stuck with an older version of Git. 🕙

This release has been published to the Buildkite package repositories. For instructions on upgrading your agent please see the Upgrading section in the corresponding section of our installation documentation.

For a full list of what's changed and downloadable binaries head on over to the GitHub release page. :octocat:

Samuel

Buildkite Agent 2.1.5

We've just released a new Buildkite Agent stable version: 2.1.5 🎉

This release fixes a few minor issues we've seen since the previous stable version, including:

  • Amazon Linux upstart was killing agents too aggressively, causing spurious build failures when auto-scaling (#244)
  • Timeouts were always sending a SIGTERM instead of any configured signal (#215)
  • Fetching specific git commits doesn't fetch refs and was causing checkout failures, and some other minor git fetch issues (#243)

This last issue has been cropping up for several users. It usually looks something like:

1
2
3
4
5
$ git fetch -q origin abc123 2> /dev/null || git fetch -q
$ git reset --hard origin/my-branch
fatal: ambiguous argument 'origin/my-branch': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

This release has been published to the Buildkite package repositories. For instructions on upgrading your agent please see the Upgrading section in the corresponding section of our installation documentation.

For a full list of what's changed and downloadable binaries head on over to the GitHub release page. :github:

Happy building! 😁

Samuel

Shell-friendly job environment variables

If you’ve ever needed to re-run a job locally using the same environment variables that were used in a build, we’ve some good news: the Environment tab on each job now shows the values in a shell-friendly format for easy copy and pasting. 📄🐢

1
2
BUILDKITE_BUILD_NUMBER="956"
BUILDKITE_COMMAND="echo \"Oh hai\""

We've also added a “Show export Prefix” button which prefixes each line with bash’s export builtin command, for easily re-running scripts or processes with those values:

1
2
3
$ export BUILDKITE_BUILD_NUMBER="956"
$ export BUILDKITE_COMMAND="echo \"Oh hai\""
$ ./my-script.sh

Happy script debugging! 🕷️

Tim

All New Emojis! 👏🏿🤗

We've just shipped upgrades to one of the most important systems within Buildkite's infrastructure 😏

All of the emojis from the latest unicode specification can be used in Buildkite, such as 🦄, 🐿️, and skin tone modifiers:

👍🏿 \:+1\:\:skin-tone-6\:
👍🏾 \:+1\:\:skin-tone-5\:
👍🏽 \:+1\:\:skin-tone-4\:
👍🏼 \:+1\:\:skin-tone-3\:
👍🏻 \:+1\:\:skin-tone-2\:
👍 \:+1\:

See all the emojis we support (including custom ones like :ruby: :linux: :docker:) over on our GitHub Emojis repository :github:

Our JavaScript Emoji Technology™ is now open source on GitHub including a Webpack loader and a ES6 string parser. Feel free to have a look to see how it all works 🕵

And don't forget… with great power, comes great 🌯

Keith

Projects are now Pipelines

Welcome to the first Changelog update! ✨ This is where we’ll keep you up-to-date with the small improvements we’re constantly rolling out. The big stuff will still make it onto the blog, but if you’re a daily Buildkite user there’s lots of other changes you’ll want to know about.

Now, onto the first update… 😄

You may have noticed that we’ve recently renamed Projects to Pipelines, both in the web interface as well as the API. We’ve been wanting to make this change for a while because there's nothing project-y about Buildkite—we’re not a project management tool, our job is to help you build amazing software delivery pipelines 🔨📦🚀

To coincide with the rename we’ve made a Sample Pipelines GitHub repository to help discover and share the different ways of using pipelines, such as how to dynamically generate pipelines and trigger dependent pipelines. There’s also now a handful of examples for common languages and tools. Please send through a pull request to update the Readme if you have your own example you’d like to share ❤️

You can also use the new \:pipeline\: emoji, perfect for your pipeline upload steps. It looks like this: :pipeline:

The REST API has been bumped to v2, and the webhooks to v3, to incorporate the rename. For the API see our notes for what's changed from v1 to v2, and to upgrade your webhooks simply browse to the webhook and hit the Upgrade button 👍

Tim

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 delivery

Support

  1. System status
  2. Forum