| // 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; |
| } |
| } |