Skip to main content
Version: 5.11.x

WorkspaceConfiguration

Configuration for a Workspace.

Remarks

A Workspace is a package in a repository that maps to a single Bazel workspace, where Workflows will run builds for.

There is generally only one workspace, which is considered the default workspace; however, it is not required that this workspace live at the root of a repository.

Each workspace inherits the tasks from the default workspace, but can override as required.

Table of contents

Properties

Properties

bazel

bazel: BazelConfiguration

Workspace-level bazel configuration. These properties will apply to each bazel based task. Can be overriden at the task level as required.


hooks

Optional hooks: TaskHook

List of hooks that apply to all primary tasks by default. This list is combined with a list provided at the workspace and task level. Hooks are run sequentially, starting with hooks at the root level.

Hooks are commands conditionally run at various stages within a task. For example, they can be used for setting up test databases before a test task runs, and then performing cleanup after.

If an id is supplied for a hook, you can override it at the workspace and task level.

A hook definition can take a when condition to allow for applying hooks to a particular task type, or the use of other conditional expressions. If you supply a custom when condition on a hook at the root level, the default behavior of running only on primary task types is dropped, and must be supplied on the custom condition.

For example, to run a hook on all primary tasks on the main branch:

hooks:
- type: before_task
command: docker login
when:
and:
- task:
primary: true
- branches
- main
tip

To avoid repeating hooks, use YAML anchors (&) and aliases (*), for example:

tasks:
- test:
targets:
- ...
hooks: &hooks
- type: before_task
...
- warming:
hooks: *hooks

If you don't supply a custom condition, the hook runs on all primary task types. A primary task is one of the following types:

  • build
  • buildifier
  • configure
  • delivery
  • format
  • gazelle
  • lint
  • test
  • warming

See

ConditionExpression for more information on conditions.

Inherited from

BazelTaskConfiguration.hooks


icon

icon: string = 'peacock'

The icon to assign the workspace (on CI hosts that support icon customization).


label

label: string = '.'

Label to give the group. Defaults to the workspace name or '.' for the default workspace.


tasks

tasks: ReadonlyMap<string, TaskConfiguration>

Map of tasks that should be enabled for this workspace. By default, the tasks inherited from the root workspace, so it is not required to list them twice. Tasks listed here have their configuration merged with the root.