[spec] Respect gitiles_commit.ref

If the input gitiles_commit has an associated ref, we should fetch the
spec from integration.git at that same ref, rather than always fetching
the spec from integration.git at "main".

Once cherry-picked, this should fix CQ failures on CLs targeting f3 such
as this one: https://ci.chromium.org/b/8847605616441565216. That failure
happened because the build loaded its spec from `main`, and the spec at
`main` referenced a fint params file that doesn't exist on f3, so the
build later failed when trying to access the referenced file in the
primary checkout (which was correctly synced to f3).

Change-Id: I8716a74a68bd504e600a31333111b779f30c0b7a
Reviewed-on: https://fuchsia-review.googlesource.com/c/infra/recipes/+/527860
Reviewed-by: Anthony Fandrianto <atyfto@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
Fuchsia-Auto-Submit: Oliver Newman <olivernewman@google.com>
(cherry picked from commit 0b7d36ffb7d05ee7ea63d94b326b2e1ed355930f)
5 files changed
tree: b530bcb3c9769fd6801bda85158a431f369969ad
  1. git-hooks/
  2. infra/
  3. manifest/
  4. recipe_modules/
  5. recipe_proto/
  6. recipes/
  7. scripts/
  8. .editorconfig
  9. .gitignore
  10. AUTHORS
  11. CRITICAL_OWNERS
  12. LICENSE
  13. OWNERS
  14. PATENTS
  15. pyproject.toml
  16. README.md
  17. recipes.py
README.md

Fuchsia Recipes

This repository contains recipes for Fuchsia.

A recipe is a Python script that runs a series of commands, using the recipe engine framework from the LUCI project. We use recipes to automatically check out, build, and test Fuchsia in continuous integration jobs. The commands the recipes use are very similar to the ones you would use as a developer to check out, build, and test Fuchsia in your local environment.

See go/fuchsia-recipe-docs for complete documentation and a guide for getting started with writing recipes.

Getting the code and setting up your environment

For everyday development

The recommended way to get the source code is with jiri. A recipe will not run without vpython and cipd, and using these recommended jiri manifests will ensure that you have these tools.

You can use the fuchsia infra Jiri manifest or the internal version (Googlers-only). Once that manifest is imported in your local jiri manifest, jiri update should download vpython and cipd into <JIRI ROOT>/fuchsia-infra/prebuilt/tools/. If you add that directory to your PATH, you should be good to go.

Quick changes

If you're just trying to make a single small change to in this repository and already have your local environment set up for recipe development (e.g. because you work with another recipes repository) you can simply clone this repository with git:

git clone https://fuchsia.googlesource.com/infra/recipes

Thnn it will be up to you to ensure that vpython and cipd are available in your PATH.

Code formatting

We format python code using Black, an open-source Python autoformatter. It should be in your PATH if you followed the instructions for setting up your environment.

After committing recipe changes, you can format the files in your commit by running black . in your project root.

Many editors also have a setting to run Black automatically whenever you save a Python file (or on a keyboard shortcut). For VS Code, add the following to your workspace settings.json to make your editor compatible with Black and turn on auto-formatting on save:

{
    "python.formatting.provider": "black",
    "python.formatting.blackPath": "<absolute path to the black executable>",
    "[python]": {
        "editor.formatOnSave": true,
        "editor.rulers": [88], // Black enforces a line length of 88 characters.
    },
    ...
}