5 likes
·
7.2K reads
2 comments
How does the Build Graph relate to the Target and Action Graph that's discussed in the official documentation?
Thanks for reading!
The Build Graph I described in this article is a higher level concept for build tools in general. This concept ranges between different tools (Bazel, Bucks, Pants, or even Make) that describe dependencies relationship between build artifacts.
Target Graph and Action Graph are technical implementation details that are specific to Bazel that I intentionally left out from this artifcle. The intended audience for this artifcle is beginner users, technical (engineers) or non-technical (PM, C-level execs) so I tried to stir away from implementation details. The final goal is to get more people to understand the general concept of Bazel and thus, increase adoption of the tool.
The core differences between Target Graph and Action Graph are the "config hydration": where Bazel took Target Graph and fully resolve all the build time configs and solve all the constraints inside Target Graph to generate Action Graph for execution. To dive into these concepts, we need to dive into how Bazel could augment the Graph with different configs, which I find to be a more advance concept that beginners could make do without knowing about.
Perhaps sometime in the future, we could increase the resolution and dive into these concepts a bit deeper.