Skip to main content
The 200-series courses are currently available only for Aspect customers. Visit https://www.aspect.build/services#training to sign up.
Goal: Make Bazel a seamless part of the developer experience.

Migrating to Bazel

Now that we’ve learned the hard technical concepts, we’ll switch gears and begin discussing the human side of effectively migrating from a legacy build setup to Bazel. We find this is the hardest part of using Bazel. As Google leader Bill Coughran used to say, “Engineering is easy, People are hard” This can apply both when creating a new Bazel monorepo, but also over time as teams bring their code from their other repository. By the end of this section, you’ll have a high-level sense for sequencing a migration that’s less disruptive and risky, and gives early benefits.
Want help with your Bazel migration effort? We offer consulting and support services at https://aspect.build/services
Incubate Net Promoters Don’t disrupt workflows Change one thing at a time Ratchet Mechanism Gradient Ascent Closing the Loop Patching external libraries and Bazel modules Leaving code alone

Continuous Integration

We expect Bazel to give us a fast red/green signal for Pull Requests, and deliver artifacts from the main branch. By the end of this section, you’ll have run a PR with your changes against a simple GitHub Actions CI. Bazel enables the “integration” in CI Operating an efficient Continuous Integration system Shared green vs. per-project pipelines

Continuous Delivery

The “D” in “CD” can stand for either Delivery or Deployment depending on who you ask. We believe Bazel’s job should be Delivery: built and tested artifacts should be pushed to a registry automatically. A system for deploying artifacts into a dev environment is coupled with promoting them to staging or production, so we believe that’s downstream of Bazel. Versioning artifacts in a monorepo Stamping VCS info into artifacts Selective Delivery of changed artifacts

Formatting and Linting

Presenting Lint results to developers is key to how well it’s adopted. We wrote https://github.com/aspect-build/rules_lint to unify formatting and linting across all languages. Watch Alex’s BazelCon talk for more details.

Preserving the economy of scale

Once you’ve deployed Bazel to a large monorepo with hundreds of developers, you’ll have to keep things fast and support product engineers who do not care about build systems and want to Just Work™️ By the end of this section, you might feel like an undervalued superhero municipal sewer engineer. 😁 Defend your leverage Metaphor: village to city Prevent “weeds”
I