Skip to content

Latest commit

 

History

History
 
 

kokoro

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Kokoro Infrastructure

This directory contains configs and scripts that are executed by Kokoro. The configs are written in a quirky language called GCL, which stands for "General Configuration Language". Each file foo.gcl corresponds to a single Kokoro build that gets launched on each PR to run integration tests. They share common config fields by inheriting from a heirarchy of common.gcl files. After being run through the GCL interpreter, each foo.gcl is resolved into a protocol buffer that determines what that particular build will do. The most important field is build_file, which determines which script to run. The build configs also specify extra environment variables to pass to the script as it runs. There are other fields as well, such as define_artifacts, but they are less important.

This is only half of the story, however. Half of our Kokoro configs live inside Google's code silo, called Piper. They configure what kind of builds we want to have, what their names are, and what source code they can see. Here is a diagram that shows how these configs (called "job configs") are structured and how they point to the configs here (called "build configs"). Only bullseye and Windows are pictured, for brevity.

mapping

The original drawing for this diagram is here.

Builds with "release" in their name are executed when building release builds of the Ops Agent. All other builds are attached to GitHub and run as presubmits on every PR.

Adding a new distro to our test matrix requires adding both a new build config here and adding a new job config to Piper that points to the build config. We would also need to modify the job configs for the fanout jobs all_distros that point to the so-called sub jobs for each distro.

Restructuring this directory is a bit tricky because it involves changes spanning GitHub and Piper. To perform such a restructuring, copy the build configs to their new locations, then change the job configs to point to the new build configs, then delete the old build configs.