blob: 23ec068551d925e54262dad1b2d361a66c225a7f [file] [log] [blame]
syntax = "proto3";
package chromite.api;
option go_package = "go.chromium.org/chromiumos/infra/proto/go/chromite/api";
import "chromite/api/build_api.proto";
import "chromite/api/sysroot.proto";
import "chromiumos/common.proto";
// An artifact is a file generated during or after a build.
message Artifact {
// Absolute path to the artifact file.
string path = 1;
}
message PrepareForBuildRequest {
// The chroot where the sysroot lives.
chromiumos.Chroot chroot = 1;
// The sysroot where the files live.
Sysroot sysroot = 2;
// Information about the artifacts.
chromiumos.ArtifactsByService artifact_info = 3;
// Whether we will proceed even if the build is POINTLESS.
bool forced_build_relevance = 4;
}
message PrepareForBuildResponse {
// Whether this artifact requires a build.
enum BuildRelevance {
UNSPECIFIED = 0;
// Build is necessary to generate artifacts.
NEEDED = 1;
// Defer to other artifacts. Used primarily for aggregation of artifact
// results.
UNKNOWN = 2;
// Artifacts are already generated. The build is pointless.
POINTLESS = 3;
}
BuildRelevance build_relevance = 1;
}
message BundleArtifactsRequest {
// The chroot where the sysroot lives.
chromiumos.Chroot chroot = 1;
// The sysroot where the files live.
Sysroot sysroot = 2;
// Artifact information.
chromiumos.ArtifactsByService artifact_info = 3;
// Absolute path to the directory in which artifacts should be dropped.
string output_dir = 4;
}
message BundleArtifactsResponse {
// The artifacts that were bundled.
chromiumos.UploadedArtifactsByService artifacts = 1;
}
// Request describing where build artifact bundles for a given build target
// should be dumped.
// TODO(crbug/1034529): BundleRequest and BundleResponse are being deprecated
// (along with most of this file). See BundleArtifactsRequest/Response
message BundleRequest {
// The build target to bundle artifacts for.
// Deprecated. Use sysroot instead.
chromiumos.BuildTarget build_target = 1;
// Absolute path to the directory in which artifacts should be dropped.
string output_dir = 2;
// The chroot where the sysroot lives.
chromiumos.Chroot chroot = 3;
// The sysroot where the files live.
chromite.api.Sysroot sysroot = 4;
}
// Response describing which bundles were dumped to the given output directory.
message BundleResponse {
// The artifacts that added to the output directory.
repeated Artifact artifacts = 1;
}
// Request describing where to find build artifacts that are taken from a
// sysroot.
message BundleVmFilesRequest {
// The chroot where the sysroot lives.
chromiumos.Chroot chroot = 1;
// The sysroot where the files live.
chromite.api.Sysroot sysroot = 2;
// Test results directory relative to the sysroot.
string test_results_dir = 3;
// Absolute path to the directory in which artifacts should be dropped.
string output_dir = 4;
}
// DEPRECATED for recipes: crbug/1019868: This is being replaced with
// BundleRequest.
// Request describing where to find Chrome AFDO artifacts
message BundleChromeAFDORequest {
// The chroot where the orderfile lives.
chromiumos.Chroot chroot = 1;
// The build_target of the builder.
chromiumos.BuildTarget build_target = 2;
// Absolute path to the directory in which artifacts should be dropped.
string output_dir = 3;
// The type of AFDO artifact (benchmark-afdo or orderfile)
chromiumos.AFDOArtifactType artifact_type = 4;
}
// Fetch the pinned guest image uris.
message PinnedGuestImageUriRequest {
// The chroot where the sysroot lives.
chromiumos.Chroot chroot = 1;
// The sysroot where the files live.
chromite.api.Sysroot sysroot = 2;
}
// Response from fetching pinned guest image uris.
message PinnedGuestImageUriResponse {
message PinnedGuestImage {
string filename = 1;
string uri = 2;
}
// The pinned guest images.
repeated PinnedGuestImage pinned_images = 1;
}
// Service for bundling build artifacts and dumping them somewhere on disk.
service ArtifactsService {
option (service_options) = {
module: "artifacts",
service_chroot_assert: OUTSIDE,
};
// Prepare to build artifacts.
rpc PrepareForBuild(PrepareForBuildRequest) returns (PrepareForBuildResponse);
// Bundle artifacts for build.
rpc BundleArtifacts(BundleArtifactsRequest) returns (BundleArtifactsResponse);
// Fetch the pinned guest image locations.
rpc FetchPinnedGuestImageUris(PinnedGuestImageUriRequest)
returns (PinnedGuestImageUriResponse);
//
// EVERYTHING THAT FOLLOWS THIS LINE IS DEPRECATED.
//
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Create a tar archive with all files needed for Autotest HW testing.
rpc BundleAutotestFiles(BundleRequest) returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Create the ChromeOS Config JSON payload.
rpc BundleChromeOSConfig(BundleRequest) returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Create a tar archive with ebuild logs.
rpc BundleEbuildLogs(BundleRequest) returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Create a tar archive with unsigned firmware images.
rpc BundleFirmware(BundleRequest) returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Create a tar.xz archive for each image that has been created.
rpc BundleImageArchives(BundleRequest) returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Generate zip containing all built images for the target.
rpc BundleImageZip(BundleRequest) returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// DEPRECATED for recipes: crbug/1019868: This are being replaced by
// ToolchainService.Bundle{ArtifactType}()
// Create Chrome Benchmark AFDO builder artifacts.
rpc BundleAFDOGenerationArtifacts(BundleChromeAFDORequest)
returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Create a tar archive with all guest images test bundles.
rpc BundlePinnedGuestImages(BundleRequest) returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Create the simple chrome artifacts.
rpc BundleSimpleChromeArtifacts(BundleRequest) returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Create a tar archive with all files needed for Tast HW testing.
rpc BundleTastFiles(BundleRequest) returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Generate minimal update payloads to be used in HW testing.
rpc BundleTestUpdatePayloads(BundleRequest) returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Create a tar archive with VM memory and disk images.
rpc BundleVmFiles(BundleVmFilesRequest) returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Generate a CPE report to a file.
rpc ExportCpeReport(BundleRequest) returns (BundleResponse);
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
// Create a tar archive with fingerprint MCU on-device unittest binaries.
rpc BundleFpmcuUnittests(BundleRequest) returns (BundleResponse);
// Generate all Remote Test Driver metadata.
//
// Response consists of one or more metadata files. Each file must contain a
// single binary encoded chromiumos.config.api.test.metadata.v1.Specification
// protobuf payload.
// Schema defined at
// https://chromium.googlesource.com/chromiumos/config/+/refs/heads/master/proto/chromiumos/config/api/test/metadata/v1/metadata.proto
//
// These artifacts partially replace chromiumos.ArtifactsByService.Test
// artifacts. See also, GenerateRemoteTestDriverImages()
//
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
rpc GenerateRemoteTestDriverSpecification(BundleRequest)
returns (BundleResponse);
// Generate all Remote Test Driver container images.
//
// Response consists of one or more Docker container images.
// The images are identified by their Docker image digest. The filenames of
// the created artifacts are ignored.
//
// These artifacts partially replace chromiumos.ArtifactsByService.Test
// artifacts. See also, GenerateRemoteTestDriverSpecification()
//
// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
rpc GenerateRemoteTestDriverImages(BundleRequest) returns (BundleResponse);
}