blob: af6fdea4a6fd24f5ca732ce7182274f8cc0fd337 [file] [log] [blame]
// Copyright 2016 The LUCI Authors. All rights reserved.
// Use of this source code is governed under the Apache License, Version 2.0
// that can be found in the LICENSE file.
syntax = "proto3";
package recipe_engine;
message DepSpec {
// (required) The URL of where to fetch the repo. Must be a valid git URL.
//
// If you wish to avoid network/git operations, please use the `-O` override
// functionality of recipes.py. See also `recipes.py bundle`.
string url = 1;
// (required) The ref to git-fetch when syncing this dependency.
//
// This must be an absolute ref which the server at `url` recognizes (e.g.
// 'refs/heads/...').
//
// DEPRECATED: Short refs (like 'master') will be implicitly converted to
// 'refs/heads/...' with a warning.
string branch = 2;
// (required) The git commit that we depend on.
string revision = 3;
}
// These options control the behavior of the autoroller recipe:
// https://chromium.googlesource.com/infra/infra/+/master/recipes/recipes/recipe_autoroller.py
message AutorollRecipeOptions {
// These control the behavior of the autoroller when it finds a trivial roll
// (i.e. a roll without expectation changes).
message TrivialOptions {
// These email addresses will be TBR'd.
repeated string tbr_emails = 1;
// If true, the autoroller recipe will automatically CQ the change.
bool automatic_commit = 2;
}
TrivialOptions trivial = 1;
// These control the behavior of the autoroller when it finds a non-trivial
// roll (i.e. a roll with expectation changes but which otherwise completes
// the simulation tests).
message NontrivialOptions {
// These add additional reviewer emails on the change.
repeated string extra_reviewer_emails = 1;
// If true, the autoroller recipe will automatically do a CQ dry run when
// uploading the change.
bool automatic_commit_dry_run = 2;
}
NontrivialOptions nontrivial = 2;
// Make the autoroller skip this repo entirely with a human-readable message.
string disable_reason = 3;
}
message RepoSpec {
// The "API Version" of this proto. Should always equal 2, currently.
int32 api_version = 1; // Version 2
// The "repo name" of this recipe repository. This becomes
// the prefix in DEPS when something depends on one of this repo's modules
// (e.g. DEPS=["recipe_engine/path"]).
//
// By convention, this should match the luci-config project_id for this repo,
// but the only requirements are that:
// * It is unique within its recipes microcosm (i.e. no dependency tree of
// recipe repos can ever have two repos with the same name).
// * It must not contain slashes.
//
// One of 'repo_name' and 'project_id' (the old field) must be specified;
// 'repo_name' takes precedence, and the autoroller will upgrade all
// recipes.cfg files to have both. Eventually we will remove 'project_id'.
string repo_name = 7;
// Deprecated: The old field for specifying repo_name.
string project_id = 2;
// This is the URL which points to the 'source of truth' for this repo. It's
// meant to be used for documentation generation.
string canonical_repo_url = 3;
// The path (using forward slashes) to where the base of the recipes are found
// in the repo (i.e. where the "recipes" and/or "recipe_modules" directories
// live).
string recipes_path = 4;
// A mapping of a dependency ("repo_name") to spec needed to fetch its code.
map<string, DepSpec> deps = 5;
// The autoroller options for this repo. These options will be respected by
// the autoroller recipe (which currently lives here:
// https://chromium.googlesource.com/infra/infra/+/master/recipes/recipes/recipe_autoroller.py
// ).
AutorollRecipeOptions autoroll_recipe_options = 6;
}