Changelog

Timed out jobs that exit with 0 will now pass

Previously, the build would consider a timed out job as "failed", regardless of its exit status 🙃

This could sometimes happen if a command finished just as the job was being timed out, or if it had specifically implemented signal handling to gracefully exit.

job-timeout-pass.png

Now, jobs that timeout with an exit status of 0 will be marked as "passed", so you can depend on the exit status as the one source of truth for job status ✅

Harriet

Introducing pipeline step dependencies

We've added support for defining step dependencies in your pipeline configuration, allowing you to minimize the wait times in your builds ⏭

To define a dependency between two steps, you can use the new properties key and depends_on:

1
2
3
4
5
6
7
8
9
10
11
steps:
  - command: "build.sh"
    key: "build"
  - command: "tests.sh"
    key: "tests"
  - command: "upload-coverage.sh"
    depends_on: "tests"
  - command: "deploy.sh"
    depends_on:
      - "build"
      - "tests"

We've also made sure that you can easily transition an existing pipeline to use step dependencies: starting with a sequential pipeline that uses wait steps, you can gradually add depends_on as you need.

For more information about how dependencies work, and how to add them to your pipeline, see the new Managing Step Dependencies guide ✨

Matthew

Embed colored terminal output in Annotations

You can now more easily embed colored terminal output in annotations. 🌈

Wrap any ANSI formatted console output in a Markdown block with either the term or terminal syntax:

1
2
3
```term
Fancy \x1b[91mc\x1b[33mo\x1b[93ml\x1b[92mo\x1b[94mr\x1b[95ms\x1b[0m here
```

The ANSI formatting is then rendered for you in the annotation:

Screen Shot 2019-11-06 at 2.48.59 pm edited.png

You can read more about the formatting supported in annotations in the CLI docs.

Jessica

Archiving build logs to private S3 buckets

There is a new feature available on our Enterprise plan: you can now choose to archive build logs to your own private S3 bucket, instead of storing them at rest with Buildkite 📦🔐

Screenshot of a build log and the S3 log in Buildkite

To enable private build log archiving for your organization, or to inquire about upgrading your team to Enterprise, email support@buildkite.com ✉️

Harriet

Date fields in outgoing webhooks now use the correct ISO8601 format

We've rolled out a fix for an issue where dates we presented in Webhooks were using an unusual ISO8601 format. This didn't match the one we document, or the one the REST API returned.

Previously, Webhooks returned dates like this: 2019-08-26 23:03:00 UTC 🙃

They're now consistent with our REST API, and will be returned in the format 2019-08-26T23:03:00.000Z 🎉

Jessica

Access build annotations via the REST API

We’ve added the annotations endpoint to our REST API for retrieving a build’s annotations 🗃

The data is presented as rendered HTML (the same HTML we use within the app) within a JSON body, alongside everything else you might want to know about the annotation.

annotations-api-output.png

You can read more about this addition in the Annotations API documentation 📖

Jessica

Schedules no longer need a user

Builds created from schedules will no longer be associated with users 🏃🏼‍♂️💨

If a user loses access to a pipeline, either by leaving the organization or changing teams, you won't need to update your schedules to a new owner.

If your schedule is still attached to a user, you'll see the ⚠️ Requires Migration badge. You'll be able to remove the user from the schedule on the build schedule page.

scheduled-build-migration.png

Unmigrated schedules will have their users automatically removed on the 30th of January, 2020. To check your build schedules, see the Schedules section of your Pipeline Settings 👀

Harriet

Deploying with Buildkite

There’s a whole new section in the docs: ✨Deployments

Here you'll find common patterns for deployments with code samples and walkthroughs, as well as how to add manual approval steps, and working with external deployment systems.

deployment-overview.png

Also new in the deployments section is our guide to Deploying with Kubernetes: a complete walk-through of setting up your Buildkite pipeline to deploy to your Kubernetes cluster :kubernetes:

Check it all out in the new Deployments section 📚

Harriet

New Artifactory support and documentation

We've added new documentation on Buildkite Agent's new Artifactory support for uploading build artifacts to JFrog's Artifactory 🎉

There is now first-class support for uploading your artifacts directly to your Artifactory instance.

artifactory settings.png

artifactory upload.png

To learn more about Artifactory and our technology partnership, head to the JFrog Partner website. To learn more about Buildkite's built-in Artifactory support, see our new Artifactory guide 👀

Harriet

Conditional expressions for pipeline steps

We've added a new if property that uses a boolean expression to decide whether a step will be run or skipped 💫

You could previously use the branches property to limit the running of a step based on which branch you were building, but this new option allows more complex conditions 😎

1
2
3
4
steps:
  - label: '💨 Smoke Test'
    command: smoke-test.sh
    if: "build.branch == 'master' || build.message =~ /\\[smoke\\]/i"

The if property is available on all step types; check out the Using Conditionals documentation for details!

Matthew

Audit old and unused API tokens with API Access Audit

We've added a new API Access Audit section in your Organization Settings, so you can identify old and unused tokens, and revoke their access to your organization’s data 🕵️

Searching for tokens using the new API Access Audit page

As well as sorting by usage or age, and searching by scope, you can search for the a full token value — allowing you to inspect and revoke a token you've access to.

You can read all about it in the new Managing API Access documentation, and if you’re an organization admin you can find the new API Access Audit section in your Organization Settings.

Eleanor

Buildkite socks now available in the Shop 🧦

The swag you've all been waiting for is finally available in the shop: Buildkite socks 🧦

Our socks are pure cotton and are available in Small, Medium, and Large. Get your hands (or paws🐾) on a pair here: https://shop.buildkite.com/products/socks

Harriet

Identify if you’re running an agent version with known issues

To make it easier to see if you’re running an agent version with a known issue, we've updated the agent list, job timeline, and agent page to show a warning and a link to upgrade instructions 🐛

Screenshot showing an agent with known issues

Upgrade instructions all link to their relevant buildkite-agent GitHub release, so you can dig into the details and find the minimum required version bump.

Tim

Configure and manage your single sign-on providers

We've added a new Single Sign-On section to your Buildkite organization settings, allowing you to setup, test, activate and manage your SSO configuration:

Add SSO Provider Buildkite organization settings screenshot

See the SSO documentation for all the details, and how to get started.

Eleanor

Artifacts glob_path and original_path fields are deprecated

The Artifacts API will no longer return the glob_path and original_path fields from 1st September 2019.

When uploading artifacts the Buildkite Agent currently submits information about the glob pattern used to match the artifacts, and where on the filesystem each artifact was stored. We will remove the glob_path and original_path fields from artifacts to reduce the amount of your data we store.

Diff showing the fields removed from a "Get Artifact" JSON response

The only place exposing these fields is in the REST API when listing artifacts or retrieving an individual artifact with the Artifacts API. They are not used again by the Buildkite Agent once the artifact is uploaded.

If you rely on this data, please reach out via support@buildkite.com.

Samuel

Scheduled Builds now allow specifying a time zone

We’ve added support for setting the timezone of your Scheduled Builds, so you’re no longer limited to just UTC ⏰

Screenshot of a Cron Interval field filled in with “0 11 * * * America/Vancouver” filled in

As an added bonus, if you specify a timezone it will automatically handle changes such as daylight savings 🎉

You can read more about the new timezone support in the updated Scheduled Builds documentation.

Jessica

Job navigation now stays on-screen as you scroll

To make it easier to navigate long build pages, we’ve updated the job navigation so that it sticks to the top of your browser window as you scroll 🔝

Gif of a set of build jobs being scrolled through. The second is expanded and its header sticks to the top of the screen as the user scrolls revealing more of the log.

Now you can keep your bearings while spelunking through long build output or tracking down that particular artifact 🔍

Jessica

Link directly to build annotations

We've added the ability to link to build annotations, so you can more easily share them with your team, and link to them in your build output 🔗

Screenshot of the link on a build annotation

You can find an annotation's link using the coloured bar on the left, or you can add #annotation-<context> to the build page's URL. For example, if the annotation has the context coverage, you'd add #annotation-coverage to the build page's URL.

See the buildkite-agent annotate documentation for information on adding and updating build annotations.

Jessica

Support for rotating pipeline webhook URLs

We've added a pipelineRotateWebhookURL GraphQL mutation for rotating the webhook URL that connects a pipeline with your source control. And a github-webhook-rotate CLI tool for automating the process with GitHub 🌪

Screenshot of the CLI tool

You can find the CLI tool on GitHub at buildkite/github-webhook-rotate, and the GraphQL mutation documentation by searching for pipelineRotateWebhookURL in the GraphQL Explorer.

Lachlan

Inspect and revoke API Access Tokens via the REST API

We've added a new set of REST APIs for managing an API Access Token, including the ability to immediately revoke the current token 🗑

Screenshot of API Access Token revoke documentation

See the API Access Token REST API documentation for more details.

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