crosvm/infra
recipe-roller 270aa6fcbd Roll recipe dependencies (trivial).
This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (depot_tools) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8803629303281130545

depot_tools:
07d6e6985b
  07d6e69 (jojwang@chromium.org)
      Use shutil when moving gsutil.

Please check the following references for more information:
- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller
- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback
- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md

Use https://goo.gl/noib3a to file a bug.

R=denniskempin@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Ignore-Freeze: Autoroller
Bugdroid-Send-Email: False
Change-Id: I8c7e3138cccf493da6821efbf46e1afc51904aa2
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3881724
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
2022-09-08 02:16:55 +00:00
..
cipd infra: Add recipe for generating coverage 2022-08-04 04:16:00 +00:00
config Roll recipe dependencies (trivial). 2022-09-08 02:16:55 +00:00
recipe_modules/crosvm infra: Fix coverage uploads 2022-08-19 22:11:55 +00:00
recipes infra: Fix coverage uploads 2022-08-19 22:11:55 +00:00
.gitignore
README.md infra: Add README about /config 2022-08-16 14:23:53 +00:00
README.recipes.md Roll recipe dependencies (trivial). 2022-09-08 02:16:55 +00:00
recipes.py Roll recipe dependencies (trivial). 2022-07-25 15:44:05 +00:00

Luci Infrastructure

This directory contains the configuration and build recipes run by our luci infrastructure for CI and presubmit testing.

Note: Luci applies config and recipes changes asynchronously. Do not submit changes to this directory in the same commit as changes to other crosvm source.

Recipes

Recipe Documentation

A few links to relevant documentation needed to write recipes:

Luci also provides a User Guide and Walkthrough for getting started with recipes.

For writing tests, documentation can be found in the Recipe test API and Post Process API

Running recipe tests

Recipes must have 100% code coverage to have tests pass. Tests can be run with:

cd infra && ./recipes.py test run

Most tests execute a few example invocations, record the commands that would be executed and compare them to the json files in *.expected. This allows developers to catch unwanted side-effects of their changes.

To regenerate the expectation files, run:

cd infra && ./recipes.py test train

Then verify the git diff to make sure all changes to outcomes are intentional.

Testing recipes locally

We try to build our recipes to work well locally, so for example build_linux.py can be invoked in the recipe engine via:

cd infra && ./recipes.py run build_linux

When run locally, recipes that check out crosvm, will run against the current HEAD of the main branch.

The recipe will run in the local infra/.recipe_deps/recipe_engine/workdir directory and is preserved between runs in the same way data is preserved on bots, so incremental builds or the use of cached files can be tested.

Testing recipes on a bot (Googlers only)

Note: See internal crosvm/infra documentation on access control.

Some things cannot be tested locally and need to be run on one of our build bots. This can be done with the led tool.

To test changes to an existing recipe, you need to find a previous build that you want to use as a template and get it's buildbucket id:

buildbucket id

Then git commit your recipe changes locally and run:

led get-build $BBID | led edit-recipe-bundle | led launch

get-build will download and output the job definition, led edit-recipe-bundle will upload a version of your local recipes and update the job definition to use them. The resulting job definition can then be launched on a bot via led launch.