blob: 7b43556f34c79d119dab01330b5e33efcc5eb62f [file] [log] [blame]
syntax = "proto3";
package chromiumos;
option go_package = "go.chromium.org/chromiumos/infra/proto/go/chromiumos";
// TODO(b/177487002): cannot include prototype.milestone at this time.
//import "prototype/milestone.proto";
// Common message definitions.
// BuildTarget encapsulates a number of related arguments. At the moment, the
// usage of specific arguments is on a per endpoint basis, but will converge
// to support a standard set as time goes on.
// BuildTarget is a more appropriate name going forward for what we currently
// call "board".
message BuildTarget {
// The name of the build target (a.k.a. board name).
string name = 1;
}
// 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;
}
// FEATURES environment variable component message.
message Feature {
string feature = 1;
}
message GomaConfig {
// The goma install location.
// Required.
string goma_dir = 1;
// The goma client credentials file.
string goma_client_json = 2;
// 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.
// The result directory information.
Path path = 1;
}
// 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;
}
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 {
option allow_alias = true;
IMAGE_TYPE_UNDEFINED = 0;
// Use these.
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;
// Do not continue to use (or add to) these, use aliased enums above.
// TODO: Deprecate non-prefixed enums (carefully considering branches).
BASE = 1;
DEV = 2;
TEST = 3;
BASE_VM = 4;
TEST_VM = 5;
RECOVERY = 6;
FACTORY = 7;
FIRMWARE = 8;
CR50_FIRMWARE = 9;
BASE_GUEST_VM = 10;
TEST_GUEST_VM = 11;
DLC = 12;
GSC_FIRMWARE = 13;
}
// The various channels that we release through.
enum Channel {
CHANNEL_UNSPECIFIED = 0;
CHANNEL_STABLE = 1;
CHANNEL_BETA = 2;
CHANNEL_DEV = 3;
CHANNEL_CANARY = 4;
}
// 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
}
// TODO(crbug.com/1020615): Drop this from chromite/api/toolchain.proto (and
// here) once usage has migrated to BuilderConfig.Artifacts.ArtifactType.
// Meanwhile, keep this in sync with chromite/api/toolchain.proto. The various
// toolchain optimization artifact types.
enum AFDOArtifactType {
// No AFDO artifact type specified.
NONE_TYPE = 0;
// The type is orderfile.
ORDERFILE = 1;
// The type is Chrome AFDO files generated by benchmarks.
BENCHMARK_AFDO = 2;
// The type is kernel AFDO files.
KERNEL_AFDO = 3;
// The type is Chrome AFDO used in release builders.
CHROME_AFDO = 4;
}
// 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;
}
}
// Artifact information. Used bythe ArtifactsService.PrepareForBuild and
// BundleArtifacts endpoints to dispatch the appropriate service routines to
// prepare or bundle as a batch.
message ArtifactsByService {
// When to publish the artifact.
enum PublishCondition {
PUBLISH_UNSPECIFIED = 0;
// Publish only for successful builds. This is the default.
PUBLISH_ON_SUCCESS = 1;
// Publish always. (Useful for error diagnostics.)
PUBLISH_ALWAYS = 2;
}
// TODO(crbug/1034529): 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(crbug/1034529): moves to ArtifactsByService.Image
IMAGE_ZIP = 1;
// Indicates wanting update payloads.
// TODO(crbug/1034529): moves to ArtifactsByService.Test
TEST_UPDATE_PAYLOAD = 2;
// Indicates wanting the autotest tarballs.
// TODO(crbug/1034529): moves to ArtifactsByService.Test
AUTOTEST_FILES = 3;
// Indicates wanting a tarball containing private TAST test bundles.
// TODO(crbug/1034529): moves to ArtifactsByService.Test
TAST_FILES = 4;
// Indicates wanting a tarball containing guest images and test bundles.
// TODO(crbug/1034529): moves to ArtifactsByService.Test
PINNED_GUEST_IMAGES = 5;
// Indicates wanting an archive of firmware images built from source.
// TODO(crbug/1034529): moves to ArtifactsByService.Package
FIRMWARE = 6;
// Indicates wanting a tarball of the Ebuilds logs.
// TODO(crbug/1034529): moves to ArtifactsByService.Sysroot
EBUILD_LOGS = 7;
// Indicates wanting an archive of the ChromeOS Config.
// TODO(crbug/1034529): moves to ArtifactsByService.Sysroot
CHROMEOS_CONFIG = 8;
// Indicates wanting the CPE report.
// TODO(crbug/1034529): moves to ArtifactsByService.Package
CPE_REPORT = 9;
// Indicates wanting a tar.xz archive for each image created.
// TODO(crbug/1034529): moves to ArtifactsByService.Image
IMAGE_ARCHIVES = 10;
// TODO(crbug/1034529): 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(crbug/1034529): moves to ArtifactsByService.Test
FPMCU_UNITTESTS = 27;
// Indicates wanting a test image tarball suitable for importing into GCE.
// TODO(crbug/1034529): moves to ArtifactsByService.Image
GCE_TARBALL = 28;
reserved 29 to 31;
// Indicates wanting the Bundled debug symbol files.
// TODO(crbug/1034529): Moves from legacy to ArtifactsByService/Get.
DEBUG_SYMBOLS = 32;
reserved 33;
}
// 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;
// When to publish the artifact.
PublishCondition publish_condition = 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(crbug/1034529): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 1 to 10;
// Indicates an unvetted orderfile for Chrome.
UNVERIFIED_CHROME_LLVM_ORDERFILE = 11;
// Indicates a vetted orderfile for Chrome.
VERIFIED_CHROME_LLVM_ORDERFILE = 12;
// Indicates a clang-tidy artifact.
CHROME_CLANG_WARNINGS_FILE = 13;
// Indicates a PGO artifact for the compiler.
UNVERIFIED_LLVM_PGO_FILE = 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(crbug/1034529): 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(crbug/1034529): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 30 to 33;
}
// 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;
// When to publish the artifact.
PublishCondition publish_condition = 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(crbug/1034529): 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(crbug/1034529): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 1 to 33;
}
// 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;
// When to publish the artifact.
PublishCondition publish_condition = 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(crbug/1034529): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 1 to 33;
}
// 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;
// When to publish the artifact.
PublishCondition publish_condition = 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(crbug/1034529): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 1 to 33;
}
// 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;
// When to publish the artifact.
PublishCondition publish_condition = 5;
}
// Input artifact information
repeated ArtifactInfo input_artifacts = 1;
// Output artifact information
repeated ArtifactInfo output_artifacts = 2;
}
Sysroot sysroot = 5;
message Test {
// Artifacts which the ArtifactsService endpoints pass to TestService.
enum ArtifactType {
UNSPECIFIED = 0;
// TODO(crbug/1034529): BuilderConfig.Artifacts.ArtifactTypes is a common
// namespace for all services. We must reserve numbers until that is
// gone.
reserved 1 to 33;
}
// 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;
// When to publish the artifact.
PublishCondition publish_condition = 5;
}
// 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(crbug/1034529): 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;
}
// 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;
// When to publish the artifact.
PublishCondition publish_condition = 5;
// The firmware location.
FwLocation location = 6;
}
// Input artifact information
repeated ArtifactInfo input_artifacts = 1;
// Output artifact information
repeated ArtifactInfo output_artifacts = 2;
}
Firmware firmware = 8;
}
// Artifact information. Used bythe ArtifactsService.PrepareForBuild and
// BundleArtifacts endpoints Response messages.
message UploadedArtifactsByService {
// Legacy artifacts, handled directly ArtifactsService.
// Artifacts handled within the ArtifactsService endpoints directly.
// TODO(crbug/1034529): 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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
repeated ArtifactPaths artifacts = 1;
}
Firmware firmware = 7;
}