Tricium User Guide

This doc is intended for people who either want to set up a project to use Tricium, or for those who want to configure where and how Tricium is triggered.

Note about future migration to luci-change-verifier

The Tricium service will be merged in the future with CQ in a new service called Change Verifier. Tricium analysis jobs will be regular tryjobs that happen to output comments; Tricium project configs will no longer be used, but most of the configuration and behavior of Tricium analyzers will be determined by the recipe that runs the analyzer.

Setting up a project to use Tricium

Tricium supports projects that use LUCI and Gerrit code review.

Adding a recipe and builder

When enabling Tricium for a new project, you will need to:

Adding or editing a project config

Project-specific configs are kept in individual project repositories, alongside other LUCI configs for the project.

For example, they may be in the “infra/config” branch of your project's repository. To make changes on this branch, you can make a new branch with origin/infra/config as the upstream, for example by running:

git checkout -B branch-name --track origin/infra/config

A project config file for the production instance of Tricium must be named tricium-prod.cfg, and generally looks something like this:

# Analyzer definition.
functions {
  type: ANALYZER
  name: "Wrapper"
  provides: RESULTS
  owner: ""
  monorail_component: "Infra>LUCI>BuildService>PreSubmit>Tricium"
  impls {
    runtime_platform: LINUX
    provides_for_platform: LINUX
    # The recipe determines the actual behavior, including what is run.
    recipe {
      project: "my-project"
      bucket: "try"
      builder: "tricium-analysis"
    deadline: 900
selections {
  function: "Wrapper"
  platform: LINUX  # Must match platform in definition.
repos {
  gerrit_project {
    host: ""
    project: "my/project"
    git_url: ""
service_account: ""

Analyzer development

See for more details about adding your own analyzers.

If you are adding a new Analyzer to be used across multiple projects, you should add it to the tricium recipe module.

Disabling Tricium for a particular CL

To make Tricium skip a particular change, you can add “Tricium: disable” to the CL description.