Skip to main content
Version: 5.11.x

Aspect Workflows

Aspect Workflows is the developer platform designed for Bazel that is deployed into your AWS or GCP cloud environment and works with your existing CI and Code Review system.

Workflows connects pre-warmed, Bazel optimized, self-hosted runners to your existing Buildkite, CircleCI, GitHub Actions or GitLab CI/CD account. Workflows runners scale-out when there is work to do and scale-in when idle to minimize cloud compute costs.

Aspect has optimized everything about Bazel invocations on Workflows runners to ensure that your CI jobs are as fast as possible with fully cached builds generally taking one minute or less even on large repositories. Our customers generally see a 2-3x improvement in average CI times after switching to Workflows and a 40-80% reduction in cloud compute costs.

See Aspect Workflows in action with your CI provider on our live examples.

info

Workflows not only makes your CI run faster but also make it efficient by lowering your compute costs.

Faster Builds. Lower Costs. Workflows pays for itself.

In addition to auto-scaling, pre-warmed runners, your Workflows deployment also includes:

  • 24/7 on-call support with a shared Slack support channel
  • A robust, horizontally scaled remote cache
  • Monitoring and metrics for visibility into cache hit rates, build times, and more
  • Selective Delivery of only release artifacts affected by each change set
  • Built-in Buildifier and Gazelle checks
  • Aspect Build Bot that posts CI results in real-time to your GitHub PRs or GitLab MRs so you get instant feedback when there are build & test failures even before your CI job goes red
  • (Buildkite only) Real-time Buildkite annotations updated build & test failures as they happen
  • Deployed into your AWS or GCP cloud environment
  • Compatible with Buildkite, CircleCI, GitHub Actions, and GitLab CI/CD
  • Optional Bazel Open Source Support bundled at a reduced price

Your Workflows deployment is fully supported by Aspect's 24/7 on-call support. Our support team will be paged by built-in alerts in the event of any issues or outages. We'll respond and resolve issues often before your team even notices any disruption to your CI service.

Our support team also co-manages your Workflows deployment. We'll work will with your team on upgrades, either performing them for you or assisting your DevOps/Platform team. We'll also help with rolling out new features, tuning performance, and optimizing compute costs.

info

If you need extra help with Bazel, our Professional Services team provides Slack-based Bazel Open Source Support for the entire Bazel ecosystem. We also offer training courses and consulting services to help with Bazel migrations, develop custom rules, and more.

Getting started

Discover the full potential of Aspect Workflows—visit https://aspect.build/workflows to learn more, book a demo, and start your one-month free trial today.

High-level design

Workflows has the following components:

  • A terraform module called workflows that can be used from your existing infrastructure-as-code setup.
  • A Node.js application called rosetta which abstracts the details of spawning the bazel CLI.
info

Rather than vanilla Bazel, Workflows always runs the Aspect CLI since it has some additional commands that we rely on, such as aspect outputs.

Build generation

Aspect Workflows integrates with the following CI systems:

We use your CI system's dynamic pipelines feature to generate the Workflows pipeline, so the actual configuration for CI is generated when a request arrives.

note

You can check in the generated CI configuration in your repository if you want to edit it by hand.

Buildkite allows you to inspect the generated configuration in the User Interface by expanding the "Setup Aspect CI" step and looking in the Timeline tab. The "Uploaded Pipeline Steps" shows ~100 lines of YAML configuration was produced for our build:

Buildkite generated pipeline

Behind the scenes, Workflows has deployed an elastic pool of build agents using an EC2 Auto-Scaling Group. When a new machine boots, it is "warmed up" so that even the first build it performs is incremental. As a result, you can see that our builds are under two minutes, even though this repository has low traffic and so build agents generally expire and builds launch on fresh instances.

Metrics

Aspect Workflows comes pre-loaded with details metrics that track the health of your build so you can see at a glance how your build performance measures up and how it changes over time.

Marvin: the Aspect Bot

Marvin posts build & test results directly to your GitHub PR in real-time. Test failures are reported live while your build is still running, reducing the time-to-failure feedback on your changes so you can iterate faster rather than context-switch to another task while you wait.

See more details: Marvin in Code Review.

info

Support for GitLab MRs coming soon.

Annotations (Buildkite only)

Developers can crawl through the whole Bazel log, but it may be hundreds of lines of spam. Or, they could click away from the CI results page to some dedicated "Bazel results UI" which shows much more information than they wanted, and requires yet another interface.

Our approach leverages the Aspect CLI, which has a Workflows plugin. This lets us show build failures in an intuitive way on the page a developer is already looking at.

For example, here's a recent failure from a PR to that bazel-lib project:

Buildkite failure annotation

We see that the test failures are reported, with their JUnit XML files parsed. We link to the log file for each test failure, and provide a "how to reproduce" code snippet.