Setup steps
Work through the steps below in order. Once you’ve finished the last one, you’ll be ready to move on to configure uploads in CI.Generating Reports
Trunk can parse JSON serialized Build Event Protocol (BEP) files to detect flaky tests. You can run tests with Bazel in CI with the--nobuild_event_json_file_path_conversion option to produce a serialized BEP file.
Report File Path
You can specify the path of the generated report through thebuild_event_json_file option:
build_events.json file to locate your test reports. You will still need to configure your test runners to output compatible reports, and you can refer to the guides for individual test frameworks.
Trunk accepts BEP files in both JSON and binary formats. Each output format has its own path-conversion flag, so pick the pair that matches the file you generate:
- JSON:
--build_event_json_filewith--nobuild_event_json_file_path_conversion - Binary protobuf:
--build_event_binary_filewith--nobuild_event_binary_file_path_conversion
--bazel-bep-path. The CLI detects the format automatically, so you don’t need to tell it which one you used.Bazel flags
These Bazel flags affect whether Trunk receives complete test reports. Review them before configuring uploads.Build Without the Bytes
If your CI environment is set up to build without the bytes, you will need the following flag to pull the reports from the remote execution engine:Keep Going After Test Failures
Avoid setting--test_keep_going=false (or --notest_keep_going) if you intend to quarantine tests. Leave it at its default (true).
When --test_keep_going is false, Bazel stops at the first failing test, so later tests never run and never reach the BEP report. If that first failure is a quarantined test, Trunk sees only an already-quarantined failure and marks the run as passing. The tests that never ran might have failed, and the PR merges anyway.
Try It Locally
The Validate Command
Test Upload
Before modifying your CI jobs to automatically upload test results to Trunk, try uploading a single test run manually. You make an upload to Trunk using the following command:Codeowners and Bazel Targets
If your test cases don’t have file paths that can be matched against your CODEOWNERS file, you can pass--use-bazel-target-for-codeowners to fall back to the Bazel target name (e.g. //path/to:target) when associating test cases to owners:
use-bazel-target-for-codeowners: true input alongside bazel-bep-path.
Next Steps
Configure your CI to upload test runs to Trunk. Find the guides for your CI framework below:
Azure DevOps Pipelines

BitBucket Pipelines

BuildKite

CircleCI

Drone CI

GitHub Actions

GitLab

Jenkins

Semaphore

TeamCity

Travis CI
