Elastic CI Stack for AWS
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...
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...
...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...
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! ✨
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 👀
Once you’ve shown the skipped jobs you can hover over them to see why they were skipped:
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 wherefailed_command | cat
would end up with a passing step - Docker Compose 1.7.x support, including docker network removal during cleanup
- Docker Compose builds now specify
--pull
, so a new base image will always be pulled if one exists - The "Running command" section of Docker Compose job output is now expanded by default
- 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
- No more
BUILDKITE_DOCKER_COMPOSE_LEAVE_VOLUMES
undefined errors inbootstrap.sh
This release coincides with the beta of 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
Tim
Webhook payloads now include an event property
If you’ve tried processing Buildkite webhooks with AWS Lambda and Google Cloud Functions 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
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, afinished
build state alias, and you now can filter by multiplestate
values. - And finally, our GraphQL beta API has received lots of updates as we move more of our own frontend to be GraphQL powered 💪
In addition to the changes we’ve rolled out, here’s a few of the API integrations recently shared by the community:
- Boxkite was released by Matt Delves. Boxkite is an iOS app for managing your builds when you’re away from your computer, and makes use of almost every API we have available
- Buildkite AWS Cloudwatch Metrics Publisher received a big update thanks to Lachlan Donald from 99designs. The Cloudwatch Metrics Publisher monitors your build queues and publishes metrics to AWS Cloudwatch, so you can autoscale your build servers on demand
- terraform-buildkite was released by Martin Atkins at SayMedia, allowing you to setup and maintain your Buildkite account via Terraform, for all your meta-automation needs
- A Cog bundle for Buildkite was released by Operable, allowing you to query Buildkite pipelines via your ChatOps bot
- bk-board was released by Fraser Xu, a reporting dashboard for your Buildkite activity, and the accompanying buildkite-node npm library that powers it (via a lovely promises-based API)
- buildkite-git-trigger was released by timmipetit at Recras, allowing you to monitor arbitrary git repositories and trigger builds
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.
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:
- 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 🎉 - You can set an export a
BUILDKITE_GIT_CLEAN_FLAGS
environment variable to configure the flags passed togit 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 addexport 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
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.
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.
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 ) over on our GitHub Emojis repository
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:
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.