239 lines
5.8 KiB
Protocol Buffer
239 lines
5.8 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package moby.buildkit.v1.frontend;
|
|
|
|
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
|
|
import "github.com/gogo/googleapis/google/rpc/status.proto";
|
|
import "github.com/moby/buildkit/solver/pb/ops.proto";
|
|
import "github.com/moby/buildkit/api/types/worker.proto";
|
|
import "github.com/moby/buildkit/util/apicaps/pb/caps.proto";
|
|
import "github.com/tonistiigi/fsutil/types/stat.proto";
|
|
|
|
option (gogoproto.sizer_all) = true;
|
|
option (gogoproto.marshaler_all) = true;
|
|
option (gogoproto.unmarshaler_all) = true;
|
|
|
|
service LLBBridge {
|
|
// apicaps:CapResolveImage
|
|
rpc ResolveImageConfig(ResolveImageConfigRequest) returns (ResolveImageConfigResponse);
|
|
// apicaps:CapSolveBase
|
|
rpc Solve(SolveRequest) returns (SolveResponse);
|
|
// apicaps:CapReadFile
|
|
rpc ReadFile(ReadFileRequest) returns (ReadFileResponse);
|
|
// apicaps:CapReadDir
|
|
rpc ReadDir(ReadDirRequest) returns (ReadDirResponse);
|
|
// apicaps:CapStatFile
|
|
rpc StatFile(StatFileRequest) returns (StatFileResponse);
|
|
rpc Ping(PingRequest) returns (PongResponse);
|
|
rpc Return(ReturnRequest) returns (ReturnResponse);
|
|
// apicaps:CapFrontendInputs
|
|
rpc Inputs(InputsRequest) returns (InputsResponse);
|
|
|
|
rpc NewContainer(NewContainerRequest) returns (NewContainerResponse);
|
|
rpc ReleaseContainer(ReleaseContainerRequest) returns (ReleaseContainerResponse);
|
|
rpc ExecProcess(stream ExecMessage) returns (stream ExecMessage);
|
|
}
|
|
|
|
message Result {
|
|
oneof result {
|
|
// Deprecated non-array refs.
|
|
string refDeprecated = 1;
|
|
RefMapDeprecated refsDeprecated = 2;
|
|
|
|
Ref ref = 3;
|
|
RefMap refs = 4;
|
|
}
|
|
map<string, bytes> metadata = 10;
|
|
}
|
|
|
|
message RefMapDeprecated {
|
|
map<string, string> refs = 1;
|
|
}
|
|
|
|
message Ref {
|
|
string id = 1;
|
|
pb.Definition def = 2;
|
|
}
|
|
|
|
message RefMap {
|
|
map<string, Ref> refs = 1;
|
|
}
|
|
|
|
message ReturnRequest {
|
|
Result result = 1;
|
|
google.rpc.Status error = 2;
|
|
}
|
|
|
|
message ReturnResponse {
|
|
}
|
|
|
|
message InputsRequest {
|
|
}
|
|
|
|
message InputsResponse {
|
|
map<string, pb.Definition> Definitions = 1;
|
|
}
|
|
|
|
message ResolveImageConfigRequest {
|
|
string Ref = 1;
|
|
pb.Platform Platform = 2;
|
|
string ResolveMode = 3;
|
|
string LogName = 4;
|
|
}
|
|
|
|
message ResolveImageConfigResponse {
|
|
string Digest = 1 [(gogoproto.customtype) = "github.com/opencontainers/go-digest.Digest", (gogoproto.nullable) = false];
|
|
bytes Config = 2;
|
|
}
|
|
|
|
message SolveRequest {
|
|
pb.Definition Definition = 1;
|
|
string Frontend = 2;
|
|
map<string, string> FrontendOpt = 3;
|
|
// ImportCacheRefsDeprecated is deprecated in favor or the new Imports since BuildKit v0.4.0.
|
|
// When ImportCacheRefsDeprecated is set, the solver appends
|
|
// {.Type = "registry", .Attrs = {"ref": importCacheRef}}
|
|
// for each of the ImportCacheRefs entry to CacheImports for compatibility. (planned to be removed)
|
|
repeated string ImportCacheRefsDeprecated = 4;
|
|
bool allowResultReturn = 5;
|
|
bool allowResultArrayRef = 6;
|
|
|
|
// apicaps.CapSolveInlineReturn deprecated
|
|
bool Final = 10;
|
|
bytes ExporterAttr = 11;
|
|
// CacheImports was added in BuildKit v0.4.0.
|
|
// apicaps:CapImportCaches
|
|
repeated CacheOptionsEntry CacheImports = 12;
|
|
|
|
// apicaps:CapFrontendInputs
|
|
map<string, pb.Definition> FrontendInputs = 13;
|
|
|
|
bool Evaluate = 14;
|
|
}
|
|
|
|
// CacheOptionsEntry corresponds to the control.CacheOptionsEntry
|
|
message CacheOptionsEntry {
|
|
string Type = 1;
|
|
map<string, string> Attrs = 2;
|
|
}
|
|
|
|
message SolveResponse {
|
|
// deprecated
|
|
string ref = 1; // can be used by readfile request
|
|
// deprecated
|
|
/* bytes ExporterAttr = 2;*/
|
|
|
|
// these fields are returned when allowMapReturn was set
|
|
Result result = 3;
|
|
}
|
|
|
|
message ReadFileRequest {
|
|
string Ref = 1;
|
|
string FilePath = 2;
|
|
FileRange Range = 3;
|
|
}
|
|
|
|
message FileRange {
|
|
int64 Offset = 1;
|
|
int64 Length = 2;
|
|
}
|
|
|
|
message ReadFileResponse {
|
|
bytes Data = 1;
|
|
}
|
|
|
|
message ReadDirRequest {
|
|
string Ref = 1;
|
|
string DirPath = 2;
|
|
string IncludePattern = 3;
|
|
}
|
|
|
|
message ReadDirResponse {
|
|
repeated fsutil.types.Stat entries = 1;
|
|
}
|
|
|
|
message StatFileRequest {
|
|
string Ref = 1;
|
|
string Path = 2;
|
|
}
|
|
|
|
message StatFileResponse {
|
|
fsutil.types.Stat stat = 1;
|
|
}
|
|
|
|
message PingRequest{
|
|
}
|
|
message PongResponse{
|
|
repeated moby.buildkit.v1.apicaps.APICap FrontendAPICaps = 1 [(gogoproto.nullable) = false];
|
|
repeated moby.buildkit.v1.apicaps.APICap LLBCaps = 2 [(gogoproto.nullable) = false];
|
|
repeated moby.buildkit.v1.types.WorkerRecord Workers = 3;
|
|
}
|
|
|
|
message NewContainerRequest {
|
|
string ContainerID = 1;
|
|
// For mount input values we can use random identifiers passed with ref
|
|
repeated pb.Mount Mounts = 2;
|
|
pb.NetMode Network = 3;
|
|
pb.Platform platform = 4;
|
|
pb.WorkerConstraints constraints = 5;
|
|
}
|
|
|
|
message NewContainerResponse{}
|
|
|
|
message ReleaseContainerRequest {
|
|
string ContainerID = 1;
|
|
}
|
|
|
|
message ReleaseContainerResponse{}
|
|
|
|
message ExecMessage {
|
|
string ProcessID = 1;
|
|
oneof Input {
|
|
// InitMessage sent from client to server will start a new process in a
|
|
// container
|
|
InitMessage Init = 2;
|
|
// FdMessage used from client to server for input (stdin) and
|
|
// from server to client for output (stdout, stderr)
|
|
FdMessage File = 3;
|
|
// ResizeMessage used from client to server for terminal resize events
|
|
ResizeMessage Resize = 4;
|
|
// StartedMessage sent from server to client after InitMessage to
|
|
// indicate the process has started.
|
|
StartedMessage Started = 5;
|
|
// ExitMessage sent from server to client will contain the exit code
|
|
// when the process ends.
|
|
ExitMessage Exit = 6;
|
|
// DoneMessage from server to client will be the last message for any
|
|
// process. Note that FdMessage might be sent after ExitMessage.
|
|
DoneMessage Done = 7;
|
|
}
|
|
}
|
|
|
|
message InitMessage{
|
|
string ContainerID = 1;
|
|
pb.Meta Meta = 2;
|
|
repeated uint32 Fds = 3;
|
|
bool Tty = 4;
|
|
pb.SecurityMode Security = 5;
|
|
}
|
|
|
|
message ExitMessage {
|
|
uint32 Code = 1;
|
|
google.rpc.Status Error = 2;
|
|
}
|
|
|
|
message StartedMessage{}
|
|
|
|
message DoneMessage{}
|
|
|
|
message FdMessage{
|
|
uint32 Fd = 1; // what fd the data was from
|
|
bool EOF = 2; // true if eof was reached
|
|
bytes Data = 3;
|
|
}
|
|
|
|
message ResizeMessage{
|
|
uint32 Rows = 1;
|
|
uint32 Cols = 2;
|
|
}
|