Skip to content

Invocation Details Page

This page shows all the details of a single invocation. You can reach it:

  • through the invocation link bazel provides at the start of the build, or
  • via the Invocations page by clicking on an invocation.

Purpose

  • Allow engineers and build maintainers to identify and replicate various kinds of issues, regressions and performance problems in an invocation.
  • Allow engineers to easily access logs and other stored artifacts.

screenshot of the invocation details page

Page sections

Summary

This section summarizes the invocation. It displays similar information to the data shown in the search results cards on the Invocations page.

You can find out how to add supplemental data to your invocations here.

screenshot of the invocation summary on the invocation details page

The menu on the right provides further options, such as copying a textual summary of the invocation or a link to the page.

Tabs

The main content of this page is split into multiple tabs, each of which has a different focus.

Highlights

The highlights show you the most useful widgets from the other tabs aggregated into a single view.

This tab often shows you everything you need to know about a build, such as failure details on a failed build, or performance data on a successful build.

Target tree

This tab is split into two columns.

screenshot of the target tree on the invocation details page

List of targets

On the left, all the targets are listed as a tree that matches the package structure. The inner nodes represent packages, whereas the leaves represent targets.

The section can be resized or fully expanded to facilitate browsing deep package paths.

You can filter the tree structure by target status (failed, in progress, not built, succeeded) and target labels (prefix search).

Depending on the status of the invocation, some filters may be applied by default. For example, if a completed invocation has unsuccessful targets, then all successful targets are filtered out. Similarly, successful targets are filtered out while an invocation is still running.

These default filters are applied to help you discover the most relevant information. You can adjust the filters at any time to change which targets are listed.

The status icon of an inner node indicates the “worst” status reported within the package the node represents. For example, if a package includes both a successful and a failing target, the directory will be marked as failing.

Target details

Each target listed can be selected. When a target is selected, the target’s details are displayed on the right.

The kind of data shown differs depending on what kind of target is selected. For example, a build target may list the output files generated and an option to download them from the three-dot menu. A test target may include the outcome of various tests, including undeclared test outputs (outputs.zip) and related logs.

Console

This tab shows the same kind of output a local build shows from the CLI. While an invocation is running, the console output is updated on the fly.

It can be especially useful for invocations that were executed in a CI where the output includes formatting markers, which may make it hard to read in its raw form. This view displays a more readable representation than the raw CI output.

screenshot of the console tab on the invocation details page

The menu on the right offers options to view or download the raw console output.

You can highlight specific lines of the log by clicking on the line number, and copy a link to a specific line by hovering over the line and clicking on the link icon that is visible to the left of the line number.

Configuration

This section shows different configuration details about the invocation.

screenshot of the configuration tab on the invocation details page

Warning

Note that the Bazel command shown is only an approximation of what was run using known information. The actual Bazel command used is not sent to the server and therefore not known.

When debugging invocations, it can be useful to investigate whether all Bazel flags have the expected values. This view lists the computed flags. These may be changed in various ways, such as through a .bazelrc configuration profile or command-line parameters.

Performance

Access various tools that can help you investigate and potentially improve build performance.

screenshot of the performance tab on the invocation details page

Analyze invocation

If enabled for the cluster, this section allows you to analyze the available profiles to receive personalized suggestions on how to speed up the invocation further.

This feature leverages the open-source Bazel Invocation Analyzer and includes additional modules to analyze invocation remotely executed with EngFlow further.

Info

If this feature is not enabled on your cluster, you can download the Bazel profile and analyze it using the Bazel Invocation Analyzer.

Profiles

This section exposes both Bazel’s JSON trace profile and Engflow’s profile, which tracks the actual remote execution of actions on the cluster.

Both profiles can either be visualized contextually via the Open button or downloaded for later consumption, e.g. via chrome://tracing or Bazel Invocation Analyzer.

Info

The Bazel profile is only available once the invocation completes, whereas the EngFlow profile is updated on the fly as actions are being executed remotely.

If the Bazel profile is not available after the invocation has completed, check whether you have set the Bazel flag --experimental_build_event_upload_strategy (for example, to local). It may prevent the Bazel profile from being sent to EngFlow's endpoint, which means won’t be available in this section, either.

Critical Path

This section expands all the actions that make up the invocation’s critical path.

Known Issues

  • The "Bazel Command" section of the "Configuration" tab may be incorrect and only applies to the same environment the original invocation was run from. Bazel does not explicitly include the command used to run the invocation so this reconstruction is a best-guess.