blob: 521571b752b05783ffa8877cea4b2bb0dd884286 [file] [log] [blame]
// Copyright 2019 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto3";
package chromiumos;
import "google/protobuf/descriptor.proto";
option go_package = "go.chromium.org/chromiumos/infra/proto/go/chromiumos";
option java_package = "com.google.chrome.crosinfra.proto";
// TODO(b/177487002): cannot include prototype.milestone at this time.
// import "prototype/milestone.proto";
// Common message definitions.
// A BuildTarget encapsulates a board and an associated profile, and mirrors a
// chromite.lib.build_target_lib.BuildTarget.
message BuildTarget {
// The name of the build target (a.k.a. board name).
string name = 1;
// The profile to use.
Profile profile = 2;
}
// Generic GCS path split into bucket name and path within
message GcsPath {
string bucket = 1;
string path = 2;
}
// Chroot is used to define how to enter a chroot.
message Chroot {
// Deprecated fields.
// R80 was the last release branch to use 'goma'.
reserved 5;
reserved "goma";
message ChrootEnv {
// USE flags to set.
repeated UseFlag use_flags = 1;
// FEATURES flags to set.
repeated Feature features = 2;
}
// The directory containing the chroot.
string path = 1;
// The cache directory override.
string cache_dir = 2;
// Environment configuration.
ChrootEnv env = 3;
// The directory where the chrome source should be mounted.
string chrome_dir = 4;
// The directory where build state and output artifacts should be placed.
string out_path = 6;
}
// FEATURES environment variable component message.
message Feature { string feature = 1; }
message RemoteexecConfig {
// The location of the re-client binaries needed for remote execution.
string reclient_dir = 1;
// The config file to pass in to reproxy.
string reproxy_cfg_file = 2;
// The directory where the logs will be extracted.
SyncedDir log_dir = 3;
}
message RemoteexecArtifacts {
// List of log files.
repeated string log_files = 1;
}
message GomaConfig {
reserved 2;
reserved "goma_client_json";
// The goma install location.
// Required.
string goma_dir = 1;
// Path to the Goma client used for build package.
// If None, goma_dir will be used instead.
string chromeos_goma_dir = 3;
// Facilitates testing new Goma approaches before rolling them out
// more widely.
enum GomaApproach {
GOMA_APPROACH_UNSPECIFIED = 0;
DEFAULT = 1;
RBE_PROD = 2;
RBE_STAGING = 3;
RBE_CHROMEOS = 4;
}
GomaApproach goma_approach = 4;
// The directory where the goma logs will be extracted.
SyncedDir log_dir = 5;
// The name of the goma stats file. It will be dumped inside log_dir.
string stats_file = 6;
// The name of the goma counterz file. It will be dumped inside log_dir.
string counterz_file = 7;
}
message GomaArtifacts {
// The Goma artifacts (stats file, counterz file, and log files) are placed
// in the directory specified by the GomaConfig.log_dir.
// Goma stats file.
string stats_file = 1;
// Goma counterz file.
string counterz_file = 2;
// Goma log files.
repeated string log_files = 3;
}
// Message describing a package, The corresponding variable names are from
// https://devmanual.gentoo.org/ebuild-writing/variables/index.html
message PackageInfo {
// The package name (PN variable).
string package_name = 1;
// The package category (CATEGORY variable).
string category = 2;
// The package version and revision (PVR variable).
string version = 3;
}
// Information about the sysroot's profile.
message Profile {
// The name of the profile.
string name = 1;
}
// Message describing a package index (binhost) file.
message PackageIndexInfo {
// The snapshot SHA
string snapshot_sha = 1;
// The snapshot number. Higher is newer.
int32 snapshot_number = 2;
// The build target.
BuildTarget build_target = 3;
// The full URI of the package index file.
string location = 4;
// The sysroot profile.
Profile profile = 5;
// TODO(crbug/1088059): Add status of the prebuilts:
// - Passed HW Tests?
// - Marked stable?
// Etc
}
// A message to clarify inside/outside chroot paths.
message Path {
// Location enum; whether the resource is inside or outside of the chroot.
enum Location {
NO_LOCATION = 0;
INSIDE = 1;
OUTSIDE = 2;
}
// The path to the resource.
string path = 1;
// The path location.
Location location = 2;
}
// A message used to indicate an output location for results. Specifically,
// this is used to automatically transfer files out of the chroot when needed.
// Note: No more than one ResultPath per message can be supported.
message ResultPath {
// Required unless type is TRANSFER_TRANSLATE.
// The result directory information.
Path path = 1;
// Transfer enum; how Paths in the response are transferred out of the chroot.
enum Transfer {
TRANSFER_UNSPECIFIED = 0;
// Paths are copied to ResultPath.path. Default when unspecifed.
TRANSFER_COPY = 1;
// Path messages are updated from Path.Location.INSIDE to
// Path.Location.OUTSIDE in place without copying, based on knowledge of the
// chroot structure. Note that such resulting artifacts may be modified or
// removed by future API calls, so callers should exercise care regarding
// their longevity. ResultPath.path must be empty.
TRANSFER_TRANSLATE = 2;
}
Transfer transfer = 2;
}
// A SyncedDir will have all of its contents transferred into a tmp directory
// in the chroot before the endpoint is called, and afterwords its contents
// will be exactly what was in the tmp directory when the endpoint completed.
message SyncedDir {
// Required.
// The directory being synced.
string dir = 1;
}
// See also crrev.com/c/1929452 and:
// https://cs.corp.google.com/piper///depot/google3/third_party/luci/buildbucket/proto/common.proto?l=147-176&rcl=257714215
// A Gerrit patchset.
message GerritChange {
// Gerrit hostname, e.g. "chromium-review.googlesource.com".
string host = 1;
// Gerrit project, e.g. "chromium/src".
string project = 2;
// Change number, e.g. 12345.
int64 change = 3;
// Patch set number, e.g. 1.
int64 patchset = 4;
}
message GitilesCommit {
// Gitiles hostname, e.g. "chromium.googlesource.com".
string host = 1;
// Repository name on the host, e.g. "chromium/src".
string project = 2;
// Commit HEX SHA1.
string id = 3;
// Commit ref, e.g. "refs/heads/master".
// NOT a branch name: if specified, must start with "refs/".
string ref = 4;
// Defines a total order of commits on the ref. Requires ref field.
uint32 position = 5;
}
// Message for USE flags.
message UseFlag {
// The use flag.
string flag = 1;
}
// Message for defining a release builder.
// Used to generate release_builders.star.
message ReleaseBuilder {
message Date {
// Format: YYYY-MM-DD (ISO 8601)
// E.g. 2020-02-10
string value = 1;
}
// The release milestone. Needs to have "branch_name" filled out.
// TODO(b/177487002): cannot include prototype.Milestone at this time.
// prototype.Milestone milestone = 1;
message Milestone {
// E.g. 86
int32 number = 1;
// Initially planned branch date for the milestone.
Date target_branch_date = 2;
// Actual branch name when the branch is created.
// E.g. release-R86-13421.B
string branch_name = 3;
}
oneof milestone_message { Milestone milestone = 1; }
// Schedule to use for release builder.
// e.g. "0 5 * * *"
string build_schedule = 2;
// Expiration date of builder.
// A builder with an expiration date set (that has not yet occurred)
// will not be pruned as a stale milestone by automatic release config
// management.
Date expiration_date = 3;
// Mapping from Android package names to their corresponding Android branches
// for this release, e.g. "android-vm-rvc" -> "git_rvc-arc-m110".
// Android uprev builders are automatically set up according to this mapping.
map<string, string> android_branches = 4;
}
message ReleaseBuilders {
// Release builders to generate _define_release blocks for
// in release_builders.star.
repeated ReleaseBuilder builders = 1;
}
// The types of images that can be built.
// These correspond to support types in lib/constants.py such
// as IMAGE_TYPE_BASE, IMAGE_TYPE_RECOVERY, and so on.
enum ImageType {
// Please only use prefixed IMAGE_TYPE values. See: b/187214166
// Removed in R92.
reserved "BASE", "TEST", "DEV", "BASE_VM", "TEST_VM", "RECOVERY", "FACTORY";
reserved "FIRMWARE", "CR50_FIRMWARE", "BASE_GUEST_VM", "TEST_GUEST_VM", "DLC";
reserved "GSC_FIRMWARE", "ACCESSORY_USBPD", "ACCESSORY_RWSIG", "HPS_FIRMWARE";
IMAGE_TYPE_UNDEFINED = 0;
IMAGE_TYPE_BASE = 1;
IMAGE_TYPE_DEV = 2;
IMAGE_TYPE_TEST = 3;
IMAGE_TYPE_BASE_VM = 4;
IMAGE_TYPE_TEST_VM = 5;
IMAGE_TYPE_RECOVERY = 6;
IMAGE_TYPE_FACTORY = 7;
IMAGE_TYPE_FIRMWARE = 8;
IMAGE_TYPE_CR50_FIRMWARE = 9;
IMAGE_TYPE_BASE_GUEST_VM = 10;
IMAGE_TYPE_TEST_GUEST_VM = 11;
IMAGE_TYPE_DLC = 12;
IMAGE_TYPE_GSC_FIRMWARE = 13;
IMAGE_TYPE_ACCESSORY_USBPD = 14;
IMAGE_TYPE_ACCESSORY_RWSIG = 15;
IMAGE_TYPE_HPS_FIRMWARE = 16;
IMAGE_TYPE_NETBOOT = 17;
// Used for payload signing.
IMAGE_TYPE_UPDATE_PAYLOAD = 18;
IMAGE_TYPE_FLEXOR_KERNEL = 19;
}
// The various channels that we release through.
enum Channel {
CHANNEL_UNSPECIFIED = 0;
CHANNEL_STABLE = 1;
CHANNEL_BETA = 2;
CHANNEL_DEV = 3;
CHANNEL_CANARY = 4;
CHANNEL_LTS = 5;
CHANNEL_LTC = 6;
}
// A map of release milestones to their appropriate channels.
message ReleaseChannels {
message ChannelList { repeated Channel channels = 1; }
map<int32, ChannelList> release_channels = 1;
}
// The available delta types.
enum DeltaType {
DELTA_UNKNOWN = 0;
NO_DELTA = 1;
FSI = 2;
MILESTONE = 3;
OMAHA = 4;
STEPPING_STONE = 5;
N2N = 6;
}
// A wrapper around a serialized protocol buffer.
message ProtoBytes { bytes serialized_proto = 1; }
// List of known location that firmware can be built from
enum FwLocation {
FW_LOCATION_UNKNOWN = 0;
PLATFORM_EC = 1; // platform/ec/firmware_builder.py
PLATFORM_ZEPHYR = 2; // platform/zephyr-chrome/firmware_builder.py
PLATFORM_TI50 = 3; // platform/ti50/common/firmware_builder.py
PLATFORM_CR50 = 4; // platform/cr50/firmware_builder.py
PLATFORM_CHAMELEON = 5; // platform/chameleon/v3/ec/firmware_builder.py
}
// Additional information about artifacts used by PrepareForBuild endpoints.
// TODO(crbug/1019868): This is migrating to ArtifactProfileInfo.
message PrepareForBuildAdditionalArgs {
oneof prepare_for_build_args {
// ToolchainService Chrome AFDO artifacts require profile name.
string chrome_cwp_profile = 1;
// ToolchainService Kernel AFDO artifacts require a kernel version.
string kernel_version = 2;
}
}
// ToolchainService Unverified Release AFDO artifacts require information
// about the builder that created the image used to generate the unverified
// chrome benchmark perf file.
message AfdoRelease {
// ToolchainService Chrome AFDO artifacts require profile name.
string chrome_cwp_profile = 1;
// The build id of the image_build. Used to generate the location for the
// image archive.
int64 image_build_id = 2;
}
// Artifact profile information used by artifact prepare/bundle endpoints in
// addition to input_artifacts.
message ArtifactProfileInfo {
oneof artifact_profile_info {
// ToolchainService Chrome AFDO artifacts require profile name.
string chrome_cwp_profile = 1;
// ToolchainService Kernel AFDO artifacts require a kernel version.
string kernel_version = 2;
// ToolchainService Unverified Release AFDO artifacts require more.
AfdoRelease afdo_release = 3;
}
// Profile architecture, required in all artifacts.
string arch = 4;
}
// Artifact information. Used by the ArtifactsService.PrepareForBuild and
// BundleArtifacts endpoints to dispatch the appropriate service routines to
// prepare or bundle as a batch.
message ArtifactsByService {
// How to publish code coverage information for an artifact.
message CodeCoverageUploadInfo {
// The type of code coverage information the artifact represents.
enum CodeCoverageType {
UNSPECIFIED = 0;
// LLVM Code Coverage is generated.
LLVM = 1;
// LCOV Code Coverage is generated.
LCOV = 2;
}
CodeCoverageType coverage_type = 1;
}
// TODO(b/187790484): Drop this message.
// Artifacts handled within the ArtifactsService endpoints directly.
message Legacy {
// Legacy artifacts, handled in cros_artifacts. DO NOT ADD TO THIS.
enum ArtifactType {
UNSPECIFIED = 0;
// Indicates wanting a zip file of everything in the image directory.
// TODO(b/187790484): moves to ArtifactsByService.Image
IMAGE_ZIP = 1;
// Indicates wanting update payloads.
// TODO(b/187790484): moves to ArtifactsByService.Test
TEST_UPDATE_PAYLOAD = 2;
// Indicates wanting the autotest tarballs.
// TODO(b/187790484): moves to ArtifactsByService.Test
AUTOTEST_FILES = 3;
// Indicates wanting a tarball containing private TAST test bundles.
// TODO(b/187790484): moves to ArtifactsByService.Test
TAST_FILES = 4;
// Indicates wanting a tarball containing guest images and test bundles.
// TODO(b/187790484): moves to ArtifactsByService.Test
PINNED_GUEST_IMAGES = 5;
// Indicates wanting an archive of firmware images built from source.
// TODO(b/187790484): moves to ArtifactsByService.Package
FIRMWARE = 6;
// Indicates wanting a tarball of the Ebuilds logs.
// TODO(b/187790484): moves to ArtifactsByService.Sysroot
EBUILD_LOGS = 7;
// Indicates wanting an archive of the ChromeOS Config.
// TODO(b/187790484): moves to ArtifactsByService.Sysroot
CHROMEOS_CONFIG = 8;
reserved 9;
// Indicates wanting a tar.xz archive for each image created.
// TODO(b/187790484): moves to ArtifactsByService.Image
IMAGE_ARCHIVES = 10;
// TODO(b/187790484): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 11 to 26;
// Indicates wanting a tarball containing fingerprint MCU test binaries.
// TODO(b/187790484): moves to ArtifactsByService.Test
FPMCU_UNITTESTS = 27;
// Indicates wanting a test image tarball suitable for importing into GCE.
// TODO(b/187790484): moves to ArtifactsByService.Image
GCE_TARBALL = 28;
reserved 29 to 31;
// Indicates wanting the Bundled debug symbol files.
// TODO(b/187790484): Moves from legacy to ArtifactsByService/Get.
DEBUG_SYMBOLS = 32;
reserved 33 to 56;
}
// Information about one or more artifacts.
message ArtifactInfo {
// The ArtifactType. One or more types to which the rest of the fields
// apply.
repeated ArtifactType artifact_types = 1;
// GS location in which to upload artifacts ("gs://" is prepended).
// Several fields can be logically specified:
// %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
// %(version)s: Chromeos version (e.g., R81-12813.0.0)
// %(build_id)s: Buildbucket job ID.
// %(target)s: build target name.
// %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
// underscores turned into hyphens.
// %(gs_path)s: "%(builder_name)s/%(version)s-%(build_id)s".
// %(artifact_name)s: The name of the artifact being published.
//
// BuilderConfig.Artifacts.artifacts_gs_location is used for all
// artifacts. Artifact can be published to additional locations by
// specifying those here. Examples: include AFDO artifacts and Release
// images.
repeated string gs_locations = 2;
// R83 was the last release branch to use profile_info.
reserved 3;
reserved "profile_info";
// Any acl to apply, such as "public-read".
string acl_name = 4;
// This used to be PublishCondition, which is deprecated as per
// b/202987478.
reserved 5;
}
// Input artifact information
repeated ArtifactInfo input_artifacts = 1;
// Output artifact information
repeated ArtifactInfo output_artifacts = 2;
}
Legacy legacy = 1;
message Toolchain {
// Artifacts which the ArtifactsService endpoints pass to ToolchainService.
enum ArtifactType {
UNSPECIFIED = 0;
// TODO(b/187790484): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 1 to 10;
// These values were previously used by now-turned-down orderfile,
// clang-tidy, and llvm-PGO builders.
reserved 11 to 14;
// Indicates an unvetted AFDO Chrome profile. (Generated by HW Tests in
// the benchmark-afdo-generate builder.)
UNVERIFIED_CHROME_BENCHMARK_AFDO_FILE = 15;
// Indicates a vetted AFDO Chrome profile.
VERIFIED_CHROME_BENCHMARK_AFDO_FILE = 16;
// Indicates a vetted AFDO Kernel profile.
VERIFIED_KERNEL_CWP_AFDO_FILE = 17;
// Indicates an unvetted AFDO Kernel CWP profile.
UNVERIFIED_KERNEL_CWP_AFDO_FILE = 18;
// Indicates an unvetted AFDO Chrome CWP profile.
UNVERIFIED_CHROME_CWP_AFDO_FILE = 19;
// Indicates a vetted AFDO Chrome CWP profile.
VERIFIED_CHROME_CWP_AFDO_FILE = 20;
// Indicates a vetted AFDO profile for release.
VERIFIED_RELEASE_AFDO_FILE = 21;
// Indicates an unvetted AFDO perf data file (from HW Test).
UNVERIFIED_CHROME_BENCHMARK_PERF_FILE = 22;
// Indicates an unstripped Chrome binary.
CHROME_DEBUG_BINARY = 23;
// Indicates toolchain logs for the compiler warnings for werror monitor
TOOLCHAIN_WARNING_LOGS = 24;
// Indicates a prod Chrome AFDO profile for Android/Linux.
CHROME_AFDO_PROFILE_FOR_ANDROID_LINUX = 25;
// Indicates diagnoses for Clang crashes
CLANG_CRASH_DIAGNOSES = 26;
// TODO(b/187790484): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 27 to 28;
// Indicates Rusage logs from Compiler Invocations
COMPILER_RUSAGE_LOG = 29;
// TODO(b/187790484): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 30 to 51;
// Tarballs of cross-compiling toolchain prebuilts.
SDK_TOOLCHAIN_PREBUILTS = 52;
// TODO(b/187790484): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 53 to 56;
}
// Information about one or more artifacts. This should match the rest of
// the ArtifactInfo definitions in ArtifactsByService, other than having
// it's own (service-specific) definition for ArtifactType.
message ArtifactInfo {
// The ArtifactType. One or more types to which the rest of the fields
// apply.
repeated ArtifactType artifact_types = 1;
// GS location in which to upload artifacts ("gs://" is prepended).
// Several fields can be logically specified:
// %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
// %(version)s: Chromeos version (e.g., R81-12813.0.0)
// %(build_id)s: Buildbucket job ID.
// %(target)s: build target name.
// %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
// underscores turned into hyphens.
// specifying those here. Examples include AFDO artifacts and release
// %(artifact_name)s: The name of the artifact being published.
//
// BuilderConfig.Artifacts.artifacts_gs_location is used for all
// artifacts. Artifact can be published to additional locations by
// specifying those here. Examples: include AFDO artifacts and Release
// images.
repeated string gs_locations = 2;
// Any acl to apply, such as "public-read".
string acl_name = 4;
// This used to be PublishCondition, which is deprecated as per
// b/202987478.
reserved 5;
}
// Input artifact information
repeated ArtifactInfo input_artifacts = 1;
// Output artifact information
repeated ArtifactInfo output_artifacts = 2;
}
Toolchain toolchain = 2;
message Image {
// Artifacts which the ArtifactsService endpoints pass to ImageService.
enum ArtifactType {
UNSPECIFIED = 0;
// TODO(b/187790484): once an IMAGE_ZIP value is added here, please
// update the build planner (in chromiumos/infra/go), where it says
// "use the new output artifacts IMAGE_ZIP"
// TODO(b/187790484): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 1 to 33;
// DLC image (squashfs). Added in R91.
DLC_IMAGE = 34;
reserved 35 to 37;
// license_credits.html.
LICENSE_CREDITS = 38;
reserved 39 to 42;
// factory_image.zip.
FACTORY_IMAGE = 43;
reserved 44;
// stripped-packages.tar archive.
STRIPPED_PACKAGES = 45;
reserved 46 to 48;
// image_scripts.tar.xz archive.
IMAGE_SCRIPTS = 49;
reserved 50 to 56;
}
// Information about one or more artifacts. This should match the rest of
// the ArtifactInfo definitions in ArtifactsByService, other than having
// it's own (service-specific) definition for ArtifactType.
message ArtifactInfo {
// The ArtifactType. One or more types to which the rest of the fields
// apply.
repeated ArtifactType artifact_types = 1;
// GS location in which to upload artifacts ("gs://" is prepended).
// Several fields can be logically specified:
// %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
// %(version)s: Chromeos version (e.g., R81-12813.0.0)
// %(build_id)s: Buildbucket job ID.
// %(target)s: build target name.
// %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
// underscores turned into hyphens.
// %(gs_path)s: "%(builder_name)s/%(version)s-%(build_id)s".
// %(artifact_name)s: The name of the artifact being published.
//
// BuilderConfig.Artifacts.artifacts_gs_location is used for all
// artifacts. Artifact can be published to additional locations by
// specifying those here. Examples: include AFDO artifacts and Release
// images.
repeated string gs_locations = 2;
// Any acl to apply, such as "public-read".
string acl_name = 4;
// This used to be PublishCondition, which is deprecated as per
// b/202987478.
reserved 5;
}
// Input artifact information
repeated ArtifactInfo input_artifacts = 1;
// Output artifact information
repeated ArtifactInfo output_artifacts = 2;
}
Image image = 3;
message Package {
// Artifacts which the ArtifactsService endpoints pass to PackageService.
enum ArtifactType {
UNSPECIFIED = 0;
// TODO(b/187790484): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 1 to 56;
}
// Information about one or more artifacts. This should match the rest of
// the ArtifactInfo definitions in ArtifactsByService, other than having
// it's own (service-specific) definition for ArtifactType.
message ArtifactInfo {
// The ArtifactType. One or more types to which the rest of the fields
// apply.
repeated ArtifactType artifact_types = 1;
// GS location in which to upload artifacts ("gs://" is prepended).
// Several fields can be logically specified:
// %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
// %(version)s: Chromeos version (e.g., R81-12813.0.0)
// %(build_id)s: Buildbucket job ID.
// %(target)s: build target name.
// %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
// underscores turned into hyphens.
// %(gs_path)s: "%(builder_name)s/%(version)s-%(build_id)s".
// %(artifact_name)s: The name of the artifact being published.
//
// BuilderConfig.Artifacts.artifacts_gs_location is used for all
// artifacts. Artifact can be published to additional locations by
// specifying those here. Examples: include AFDO artifacts and Release
// images.
repeated string gs_locations = 2;
// Any acl to apply, such as "public-read".
string acl_name = 4;
// This used to be PublishCondition, which is deprecated as per
// b/202987478.
reserved 5;
}
// Input artifact information
repeated ArtifactInfo input_artifacts = 1;
// Output artifact information
repeated ArtifactInfo output_artifacts = 2;
}
Package package = 4;
message Sysroot {
// Artifacts which the ArtifactsService endpoints pass to SysrootService.
enum ArtifactType {
UNSPECIFIED = 0;
// TODO(b/187790484): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 1 to 31;
// Debug artifacts in a tarball.
DEBUG_SYMBOLS = 32;
reserved 33 to 34;
// Breakpad sym files in a tarball.
BREAKPAD_DEBUG_SYMBOLS = 35;
reserved 36 to 39;
// Simple Chrome Sysroot archive.
SIMPLE_CHROME_SYSROOT = 40;
// Chrome Ebuild Environment archive.
CHROME_EBUILD_ENV = 41;
reserved 42 to 46;
// The fuzzer's sysroot as bundled via cros_generate_sysroot.py.
FUZZER_SYSROOT = 47;
reserved 48 to 49;
// Archive the entire sysroot.
SYSROOT_ARCHIVE = 50;
reserved 52;
// Bazel-specific performance artifacts.
BAZEL_PERFORMANCE_ARTIFACTS = 53;
reserved 54 to 55;
// Merged compile_commands.json.
COMPILE_COMMANDS_JSON = 56;
}
// Information about one or more artifacts. This should match the rest of
// the ArtifactInfo definitions in ArtifactsByService, other than having
// it's own (service-specific) definition for ArtifactType.
message ArtifactInfo {
// The ArtifactType. One or more types to which the rest of the fields
// apply.
repeated ArtifactType artifact_types = 1;
// GS location in which to upload artifacts ("gs://" is prepended).
// Several fields can be logically specified:
// %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
// %(version)s: Chromeos version (e.g., R81-12813.0.0)
// %(build_id)s: Buildbucket job ID.
// %(target)s: build target name.
// %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
// underscores turned into hyphens.
// %(gs_path)s: "%(builder_name)s/%(version)s-%(build_id)s".
// %(artifact_name)s: The name of the artifact being published.
//
// BuilderConfig.Artifacts.artifacts_gs_location is used for all
// artifacts. Artifact can be published to additional locations by
// specifying those here. Examples: include AFDO artifacts and Release
// images.
repeated string gs_locations = 2;
// Any acl to apply, such as "public-read".
string acl_name = 4;
// This used to be PublishCondition, which is deprecated as per
// b/202987478.
reserved 5;
}
// Input artifact information
repeated ArtifactInfo input_artifacts = 1;
// Output artifact information
repeated ArtifactInfo output_artifacts = 2;
// If true, ignore errors during breakpad symbol generation.
bool ignore_breakpad_symbol_generation_errors = 3;
// The ExpectedFiles enum from cros_generate_breakpad_symbols.py.
enum BreakpadSymbolGenerationExpectedFile {
// Not used but required by proto3 syntax.
EXPECTED_FILE_UNSET = 0;
EXPECTED_FILE_ASH_CHROME = 1;
EXPECTED_FILE_LIBC = 2;
EXPECTED_FILE_CRASH_REPORTER = 3;
EXPECTED_FILE_LIBMETRICS = 4;
}
// During BREAKPAD_DEBUG_SYMBOLS generation, do not complain about missing
// any of the expected files in this list.
repeated BreakpadSymbolGenerationExpectedFile
ignore_breakpad_symbol_generation_expected_files = 4;
}
Sysroot sysroot = 5;
message Test {
// Artifacts which the ArtifactsService endpoints pass to TestService.
enum ArtifactType {
UNSPECIFIED = 0;
// TODO(b/187790484): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 1 to 36;
UNIT_TESTS = 37;
reserved 38;
CODE_COVERAGE_LLVM_JSON = 39;
reserved 40 to 41;
// HWQual archive.
HWQUAL = 42;
reserved 43 to 45;
// Code coverage artifacts generated by Rust CC builder.
CODE_COVERAGE_RUST_LLVM_JSON = 46;
reserved 47;
// Code coverage artifacts generated by Go test.
CODE_COVERAGE_GOLANG = 48;
reserved 49 to 53;
// Code coverage artifacts for E2E coverage.
CODE_COVERAGE_E2E = 54;
reserved 55 to 56;
}
// Information about one or more artifacts. This should match the rest of
// the ArtifactInfo definitions in ArtifactsByService, other than having
// it's own (service-specific) definition for ArtifactType.
message ArtifactInfo {
// The ArtifactType. One or more types to which the rest of the fields
// apply.
repeated ArtifactType artifact_types = 1;
// GS location in which to upload artifacts ("gs://" is prepended).
// Several fields can be logically specified:
// %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
// %(version)s: Chromeos version (e.g., R81-12813.0.0)
// %(build_id)s: Buildbucket job ID.
// %(target)s: build target name.
// %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
// underscores turned into hyphens.
// %(gs_path)s: "%(builder_name)s/%(version)s-%(build_id)s".
// %(artifact_name)s: The name of the artifact being published.
//
// BuilderConfig.Artifacts.artifacts_gs_location is used for all
// artifacts. Artifact can be published to additional locations by
// specifying those here. Examples: include AFDO artifacts and Release
// images.
repeated string gs_locations = 2;
// Any acl to apply, such as "public-read".
string acl_name = 4;
// This used to be PublishCondition, which is deprecated as per
// b/202987478.
reserved 5;
// Optional information related to code coverage.
CodeCoverageUploadInfo code_coverage_upload_info = 6;
}
// Input artifact information
repeated ArtifactInfo input_artifacts = 1;
// Output artifact information
repeated ArtifactInfo output_artifacts = 2;
}
Test test = 6;
// Profile information needed by the artifact handler, if any.
ArtifactProfileInfo profile_info = 7;
message Firmware {
// Artifacts which the ArtifactsService endpoints pass to FirmwareService.
enum ArtifactType {
UNSPECIFIED = 0;
// TODO(b/187790484): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 1 to 29;
// Firmware artifacts in a tarball.
FIRMWARE_TARBALL = 30;
// Metadata about the firmware.
FIRMWARE_TARBALL_INFO = 31;
reserved 32;
// FirmwareService: LCOV code coverage files.
FIRMWARE_LCOV = 33;
reserved 34 to 43;
// Code coverage HTML report tar archive.
CODE_COVERAGE_HTML = 44;
reserved 45 to 54;
// FirmwareService: Token Database.
FIRMWARE_TOKEN_DATABASE = 55;
reserved 56;
}
// Information about one or more artifacts. This should match the rest of
// the ArtifactInfo definitions in ArtifactsByService, other than having
// it's own (service-specific) definition for ArtifactType.
message ArtifactInfo {
// The ArtifactType. One or more types to which the rest of the fields
// apply.
repeated ArtifactType artifact_types = 1;
// GS location in which to upload artifacts ("gs://" is prepended).
// Several fields can be logically specified:
// %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
// %(version)s: Chromeos version (e.g., R81-12813.0.0)
// %(build_id)s: Buildbucket job ID.
// %(target)s: build target name.
// %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
// underscores turned into hyphens.
// %(gs_path)s: "%(builder_name)s/%(version)s-%(build_id)s".
// %(artifact_name)s: The name of the artifact being published.
//
// BuilderConfig.Artifacts.artifacts_gs_location is used for all
// artifacts. Artifact can be published to additional locations by
// specifying those here. Examples: include AFDO artifacts and Release
// images.
repeated string gs_locations = 2;
// Any acl to apply, such as "public-read".
string acl_name = 4;
// This used to be PublishCondition, which is deprecated as per
// b/202987478.
reserved 5;
// The firmware location.
FwLocation location = 6;
// Optional information related to code coverage.
CodeCoverageUploadInfo code_coverage_upload_info = 7;
}
// Input artifact information
repeated ArtifactInfo input_artifacts = 1;
// Output artifact information
repeated ArtifactInfo output_artifacts = 2;
}
Firmware firmware = 8;
message Infra {
// Infra artifacts, e.g. a pinned manifest. Not actually passed to Build
// API -- all artifacts in this message are handled by recipes. Chromite
// should completely ignore this message.
enum ArtifactType {
UNSPECIFIED = 0;
reserved 1 to 35;
BUILD_MANIFEST = 36;
reserved 37 to 56;
}
// Information about one or more artifacts. This should match the rest of
// the ArtifactInfo definitions in ArtifactsByService, other than having
// it's own (service-specific) definition for ArtifactType.
message ArtifactInfo {
// The ArtifactType. One or more types to which the rest of the fields
// apply.
repeated ArtifactType artifact_types = 1;
// GS location in which to upload artifacts ("gs://" is prepended).
// Several fields can be logically specified:
// %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
// %(version)s: Chromeos version (e.g., R81-12813.0.0)
// %(build_id)s: Buildbucket job ID.
// %(target)s: build target name.
// %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
// underscores turned into hyphens.
// %(gs_path)s: "%(builder_name)s/%(version)s-%(build_id)s".
// %(artifact_name)s: The name of the artifact being published.
//
// BuilderConfig.Artifacts.artifacts_gs_location is used for all
// artifacts. Artifact can be published to additional locations by
// specifying those here. Examples: include AFDO artifacts and Release
// images.
repeated string gs_locations = 2;
// Any acl to apply, such as "public-read".
string acl_name = 4;
// This used to be PublishCondition, which is deprecated as per
// b/202987478.
reserved 5;
}
// Input artifact information
repeated ArtifactInfo input_artifacts = 1;
// Output artifact information
repeated ArtifactInfo output_artifacts = 2;
}
Infra infra = 9;
message Sdk {
// Artifacts which the ArtifactsService endpoints pass to FirmwareService.
enum ArtifactType {
UNSPECIFIED = 0;
reserved 1 to 50;
// A tarball containing the SDK itself.
SDK_TARBALL = 51;
reserved 52 to 56;
}
// Information about one or more artifacts. This should match the rest of
// the ArtifactInfo definitions in ArtifactsByService, other than having
// it's own (service-specific) definition for ArtifactType.
message ArtifactInfo {
// The ArtifactType. One or more types to which the rest of the fields
// apply.
repeated ArtifactType artifact_types = 1;
// GS location in which to upload artifacts ("gs://" is prepended).
// Several fields can be logically specified:
// %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
// %(version)s: Chromeos version (e.g., R81-12813.0.0)
// %(build_id)s: Buildbucket job ID.
// %(target)s: build target name.
// %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
// underscores turned into hyphens.
// %(gs_path)s: "%(builder_name)s/%(version)s-%(build_id)s".
// %(artifact_name)s: The name of the artifact being published.
//
// BuilderConfig.Artifacts.artifacts_gs_location is used for all
// artifacts. Artifact can be published to additional locations by
// specifying those here. Examples: include AFDO artifacts and Release
// images.
repeated string gs_locations = 2;
// Any acl to apply, such as "public-read".
string acl_name = 4;
// This used to be PublishCondition, which is deprecated as per
// b/202987478.
reserved 5;
}
// Input artifact information
repeated ArtifactInfo input_artifacts = 1;
// Output artifact information
repeated ArtifactInfo output_artifacts = 2;
}
Sdk sdk = 10;
}
// Artifact information. Used by the ArtifactsService.PrepareForBuild and
// BundleArtifacts endpoints Response messages.
message UploadedArtifactsByService {
// Legacy artifacts, handled directly ArtifactsService.
// Artifacts handled within the ArtifactsService endpoints directly.
// TODO(b/187790484): Drop this message.
message Legacy {
message ArtifactPaths {
// The ArtifactType.
ArtifactsByService.Legacy.ArtifactType artifact_type = 1;
// Absolute path to the artifact file.
repeated Path paths = 2;
// Whether or not the artifact generation failed.
bool failed = 3;
// Failure reason that the artifact was not generated.
string failure_reason = 4;
}
repeated ArtifactPaths artifacts = 1;
}
Legacy legacy = 1;
message Toolchain {
message ArtifactPaths {
// The ArtifactType.
ArtifactsByService.Toolchain.ArtifactType artifact_type = 1;
// Absolute path to the artifact file.
repeated Path paths = 2;
// Whether or not the artifact generation failed.
bool failed = 3;
// Failure reason that the artifact was not generated.
string failure_reason = 4;
}
repeated ArtifactPaths artifacts = 1;
}
Toolchain toolchain = 2;
message Image {
message ArtifactPaths {
// The ArtifactType.
ArtifactsByService.Image.ArtifactType artifact_type = 1;
// Absolute path to the artifact file.
repeated Path paths = 2;
// Whether or not the artifact generation failed.
bool failed = 3;
// Failure reason that the artifact was not generated.
string failure_reason = 4;
}
repeated ArtifactPaths artifacts = 1;
}
Image image = 3;
message Package {
message ArtifactPaths {
// The ArtifactType.
ArtifactsByService.Package.ArtifactType artifact_type = 1;
// Absolute path to the artifact file.
repeated Path paths = 2;
// Whether or not the artifact generation failed.
bool failed = 3;
// Failure reason that the artifact was not generated.
string failure_reason = 4;
}
repeated ArtifactPaths artifacts = 1;
}
Package package = 4;
message Sysroot {
message ArtifactPaths {
// The ArtifactType.
ArtifactsByService.Sysroot.ArtifactType artifact_type = 1;
// Absolute path to the artifact file.
repeated Path paths = 2;
// Whether or not the artifact generation failed.
bool failed = 3;
// Failure reason that the artifact was not generated.
string failure_reason = 4;
}
repeated ArtifactPaths artifacts = 1;
}
Sysroot sysroot = 5;
message Test {
message ArtifactPaths {
// The ArtifactType.
ArtifactsByService.Test.ArtifactType artifact_type = 1;
// Absolute path to the artifact file.
repeated Path paths = 2;
// Whether or not the artifact generation failed.
bool failed = 3;
// Failure reason that the artifact was not generated.
string failure_reason = 4;
}
repeated ArtifactPaths artifacts = 1;
}
Test test = 6;
message Firmware {
message ArtifactPaths {
// The ArtifactType.
ArtifactsByService.Firmware.ArtifactType artifact_type = 1;
// Absolute path to the artifact file.
repeated Path paths = 2;
// The firmware location.
FwLocation location = 3;
// Whether or not the artifact generation failed.
bool failed = 4;
// Failure reason that the artifact was not generated.
string failure_reason = 5;
}
repeated ArtifactPaths artifacts = 1;
}
Firmware firmware = 7;
message Infra {
message ArtifactPaths {
// The ArtifactType.
ArtifactsByService.Infra.ArtifactType artifact_type = 1;
// Absolute path to the artifact file.
repeated Path paths = 2;
// Whether or not the artifact generation failed.
bool failed = 3;
// Failure reason that the artifact was not generated.
string failure_reason = 4;
}
repeated ArtifactPaths artifacts = 1;
}
Infra infra = 8;
message Sdk {
message ArtifactPaths {
// The ArtifactType.
ArtifactsByService.Sdk.ArtifactType artifact_type = 1;
// Absolute path to the artifact file.
repeated Path paths = 2;
// Whether or not the artifact generation failed.
bool failed = 3;
// Failure reason that the artifact was not generated.
string failure_reason = 4;
}
repeated ArtifactPaths artifacts = 1;
}
Sdk sdk = 9;
}
// Field extension that indicates if the field
// can be removed from logging services
extend google.protobuf.FieldOptions { optional bool logging_optional = 54444; }