PDFium Infrastructure

This document describes PDFium's continuous integration (CI), Commit Queue (CQ), and build configuration infrastructure.

Waterfall

The current health of the source tree can be found here.

infra/config Branch

LUCI project configurations for PDFium's CI and CQ builders live on the infra/config branch, which is separate from the main branch. Code reviews for this branch are on Gerrit under project:pdfium branch:infra/config.

To check out the infra/config branch locally in an existing PDFium repository:

git fetch origin refs/heads/infra/config
git checkout -b my_branch origin/infra/config

Note that the infra/config branch does not have a DEPS file, so there is no need to run gclient sync.

When uploading CLs from the infra/config branch, be sure to run git branch --set-upstream-to origin/infra/config.

Builder Configurations

main.star defines the builders, dimensions, properties, console views, and CQ verifiers using Starlark. Running main.star regenerates the LUCI configuration files under generated/:

./main.star

Do not edit the files in generated/ directly. Always modify main.star and regenerate the configuration files.

Build Recipes

The build recipes that control how bots check out, configure, compile, and test PDFium live in the chromium/tools/build repository.

The PDFium recipe is located at recipes/recipes/pdfium.py. After modifying the recipe, run recipes/recipes.py test train to run the tests and update the expectation files under recipes/recipes/pdfium.expected/:

./recipes/recipes.py test train

Order of changes

When a task involves updates to recipes and builder configurations, usually one should update the recipes first with a default that is effectively a no-op, then update the builder config to active the non-default behavior. e.g. recipe change and builder change.