The 'outside of Bazel' pattern
Blog post from Aspect Build
Bazel is a powerful build tool known for efficiently managing well-defined dependency graphs, but it struggles when the structure deviates from a tree-like form, leading to issues with ergonomics and incrementality. While Bazel excels at inspecting dependency and action graphs and populating output directories, it proves less effective when tasked with modeling complex workflows often encountered in real-life scenarios. The author suggests that Bazel should serve as the core of a broader task-running system, with tools like Makefile or Bash scripts complementing its capabilities in managing tasks outside its native scope. Challenges such as creating a repository archive, managing "collector" targets, or performing coverage analysis highlight instances where external tools like Git or custom scripts might be more suitable. The author advocates for a task runner layer around Bazel to enhance efficiency, and plans to present a more effective task runner at BazelCon, emphasizing the potential of Starlark for task automation.