Use location_filter to skip non-polygerrit changes

Before, backend-only changes were skipped in the recipe itself by
requesting the file list via Gerrit API and returning success status if
no files were under polygerrit-ui/

However, with our planned usage of https://chromium.googlesource.com/infra/luci/luci-go/+/refs/heads/main/lucicfg/doc/#cq.post-action-gerrit-label-votes,
LUCI would vote +1 in these "skip" cases due to success status.

Switching "skip"-decision behavior to cq_tryjob_verifier will let it
skip BE-only changes without voting.

Change-Id: I5364a03d75b3923f76f3c15e39875e9b72b4e96e
8 files changed
tree: 651e197ef2e85b1760642e586f10b9cf81f8a106
  1. generated/
  2. infra/
  3. recipes/
  4. repos/
  5. .gitignore
  6. main.star
  7. README.md
README.md

LUCI Configuration

This repo holds all the configuration for LUCI, the CI system Gerrit uses. You can find recent verification runs and logs at https://ci.chromium.org/ui/p/gerrit/builders.

Concepts

  • Recipe: a python script to verify a change, and a test for that verification
  • Builder: a recipe configured to run on a specific machine type
  • CQ Group: a watcher that triggers on new votes/patchsets on the specified repo+refs
  • CQ Tryjob Verifier: combines a CQ group with a builder to run a recipe when a new vote or patchset comes in

Layout

  • /main.star: overall starlark configuration for the entire host. It is also executable to generate the config data
  • /repos/*.star: repo-specific starlark configuration for builders, CQ groups, CQ tryjob verifiers, etc
  • /recipes/recipes/*.py: recipes for testing a change based on the repo
  • /recipes/recipes.py: executes recipe tests and compares/generates expected JSON goldens. 100% coverage is expected.
  • /recipes/recipe_modules/: dependencies shared by modules
  • /recipes/*.expected/*.json: expected commands executed by the recipe
  • /infra/config/recipes.cfg: versions and URLs of external recipe dependencies

Prerequisites

  • lucicfg - CLI tool to generate the configuration from the starlark scripts. To install, clone depot_tools.
  • python - Python 3, used to execute recipes.

Imporant commands

Regenerate config data after making changes (lucicfg):

$ ./main.star

Run recipe tests (python):

$ recipes/recipes.py test run

Update recipe test goldens (python):

$ recipes/recipes.py test train

Documentation