This document describes PDFium's continuous integration (CI), Commit Queue (CQ), and build configuration infrastructure.
The current health of the source tree can be found here.
infra/config BranchLUCI 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.
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.
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
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.