blob: a6ac4ffe73d5657bad4e84f5067f41db4d4aaf72 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto3";
// "from PB.recipe_modules.infra.fuchsia import Fuchsia"
package recipe_modules.infra.fuchsia;
option go_package = "recipes";
// Fuchsia fully describes how to execute a Fuchsia CI/CQ task:
//
// * How to fetch the Fuchsia sources.
// * How to build Fuchsia.
// * How to test Fuchsia.
// * How to archive and log outputs to various places.
//
// See the fuchsia.py recipe for full documentation on task execution.
//
// TODO(IN-1102):
//
// * Improve the docs of the fields in this message, since this is the User
// facing API for the recipe.
// * Use Enums instead of strings where appropriate once we have starlark and
// support for human-readable constant values. Enums are just int literals in
// textprotos.
message Fuchsia {
// (required) How to obtain the Fuchsia build inputs. See Checkout docs.
Checkout checkout = 1;
// (required) How to build Fuchsia. See Build docs.
Build build = 2;
// How to test Fuchsia. See Test docs.
Test test = 3;
// The GCS bucket to upload results to.
string gcs_bucket = 4;
// Describes how to fetch the Fuchsia build inputs.
message Checkout {
// Jiri <package> atttribute values indicating additional packages to fetch
// from the input manifest. By default, packages with attribute tags are
// skipped unless one or more of the attribute values are specified here.
repeated string attributes = 1;
// Whether to checkout from a Jiri snapshot.
bool use_snapshot = 2;
// The name of the manifest to import from the integration repository.
string manifest = 4;
// Jiri remote manifest project,
//
// TODO(IN-1102): This should always be "integration" and is redundant
// because we can select the proper integration repo using the build input.
// Delete this in favor of a hard-coded constant since this value will only
// ever change if we completely restructure our CI/CD model or rename the
// integration repo, and thus this recipe.
string project = 6;
// The remote integration manifest repository.
string remote = 7;
}
// Describes how to build Fuchsia.
message Build {
// The build type
string build_type = 1;
// Board to build
string board = 2;
// GCS bucket for uploading debug symbols.
string debug_symbol_bucket = 3;
// Tags of environments on which the testsharder will key
repeated string environment_tags = 4;
// Whether to exclude images during the build.
bool exclude_images = 5;
// Extra args to pass to GN.
repeated string gn_args = 6;
// Whether to generate and upload breakpad symbols as part of this build.
bool include_breakpad_symbols = 7;
// Whether to build and upload an archive of debug binaries.
bool include_symbol_archive = 8;
// Extra targets to pass to Ninja.
repeated string ninja_targets = 9;
// A list of Fuchsia packages to build.
repeated string packages = 10;
// The product to build.
string product = 11;
// Whether to run any tests.
bool run_tests = 12;
// The target architecture. One of x64 or arm64.
string target = 13;
// Packages to build and add to the universe set
repeated string universe_packages = 14;
// --variant arguments to GN in `select_variant`
repeated string variants = 15;
// Additional args to pass to zircon build using standard FOO=bar syntax.
repeated string zircon_args = 16;
}
// Describes how to test Fuchsia.
message Test {
// The type of device to execute tests on, if the value is
// ot QEMU it will be passed to Swarming as the device_type
// dimension.
string device_type = 1;
// Whether to pave images the device for testing. (Ignored if
// device_type == QEMU)
bool pave = 2;
// Swarming pool from which a test task will be drawn
string pool = 3;
// Shell-quoted string to add to the runtests commandline
string runtests_args = 4;
// Whether any plaintext needs to be supplied to the tests
bool requires_secrets = 5;
// How long to wait for Swarming to find a bot on which to test
int32 swarming_expiration_timeout_secs = 6;
// How long to wait (in seconds) before killing the test
// swarming task if there\'s no output being produced
int32 swarming_io_timeout_secs = 7;
// Whether to run tests as shards.
bool test_in_shards = 8;
// How long to wait until timing out on tests.
int32 timeout_secs = 9;
}
}