Skip to content

Pool Family Routing

Actions are normally routed to a specific pool by setting the Pool execution property on your platform target — see Pools for details.

Pool family routing lets you target executor pools by operating system and CPU architecture rather than by the physical pool name. This is useful when building cross-platform binaries — for example, producing native Linux, macOS releases from the same CI pipeline. Each target platform runs on a real machine of the matching OS and architecture, all resolved from the same logical pool family.

Enable pool family routing

This feature requires setup on both sides:

  • Server side: Contact your DSE to configure pool families and enable the feature on your cluster.
  • Client side: Set the PoolFamily, OSFamily, and ISA execution properties in your platform target (see below).

Configure your Bazel platform

Set all three of PoolFamily, OSFamily, and ISA on your platform target. All three must be set together — specifying a subset results in an error.

Your DSE will provide the correct values for PoolFamily, OSFamily, and ISA that match your cluster's configuration.

BUILD
1
2
3
4
5
6
7
8
platform(
    name = "engflow_linux_x86",
    exec_properties = {
        "PoolFamily": "release",
        "OSFamily": "linux",
        "ISA": "x86_64",
    },
)
BUILD
1
2
3
4
5
6
7
8
platform(
    name = "engflow_macos_arm64",
    exec_properties = {
        "PoolFamily": "release",
        "OSFamily": "macos",
        "ISA": "arm64",
    },
)

Verify routing

You can confirm that actions are routing correctly using Build Analytics. Each action record includes these fields:

Field Description
pool_id_requested The pool or family the client requested
pool_id_alias The pool alias used to resolve the request
pool_id_resolution How the pool was resolved: explicit, mnemonic_override, or pool_family_alias

Actions routed via pool family routing show pool_family_alias in pool_id_resolution.