mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 00:47:48 +08:00

Removes gogo/protobuf from buildx and updates to a version of moby/buildkit where gogo is removed. This also changes how the proto files are generated. This is because newer versions of protobuf are more strict about name conflicts. If two files have the same name (even if they are relative paths) and are used in different protoc commands, they'll conflict in the registry. Since protobuf file generation doesn't work very well with `paths=source_relative`, this removes the `go:generate` expression and just relies on the dockerfile to perform the generation. Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
251 lines
5.6 KiB
Protocol Buffer
251 lines
5.6 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package buildx.controller.v1;
|
|
|
|
import "github.com/moby/buildkit/api/services/control/control.proto";
|
|
import "github.com/moby/buildkit/sourcepolicy/pb/policy.proto";
|
|
|
|
option go_package = "github.com/docker/buildx/controller/pb";
|
|
|
|
service Controller {
|
|
rpc Build(BuildRequest) returns (BuildResponse);
|
|
rpc Inspect(InspectRequest) returns (InspectResponse);
|
|
rpc Status(StatusRequest) returns (stream StatusResponse);
|
|
rpc Input(stream InputMessage) returns (InputResponse);
|
|
rpc Invoke(stream Message) returns (stream Message);
|
|
rpc List(ListRequest) returns (ListResponse);
|
|
rpc Disconnect(DisconnectRequest) returns (DisconnectResponse);
|
|
rpc Info(InfoRequest) returns (InfoResponse);
|
|
rpc ListProcesses(ListProcessesRequest) returns (ListProcessesResponse);
|
|
rpc DisconnectProcess(DisconnectProcessRequest) returns (DisconnectProcessResponse);
|
|
}
|
|
|
|
message ListProcessesRequest {
|
|
string Ref = 1;
|
|
}
|
|
|
|
message ListProcessesResponse {
|
|
repeated ProcessInfo Infos = 1;
|
|
}
|
|
|
|
message ProcessInfo {
|
|
string ProcessID = 1;
|
|
InvokeConfig InvokeConfig = 2;
|
|
}
|
|
|
|
message DisconnectProcessRequest {
|
|
string Ref = 1;
|
|
string ProcessID = 2;
|
|
}
|
|
|
|
message DisconnectProcessResponse {
|
|
}
|
|
|
|
message BuildRequest {
|
|
string Ref = 1;
|
|
BuildOptions Options = 2;
|
|
}
|
|
|
|
message BuildOptions {
|
|
string ContextPath = 1;
|
|
string DockerfileName = 2;
|
|
CallFunc CallFunc = 3;
|
|
map<string, string> NamedContexts = 4;
|
|
|
|
repeated string Allow = 5;
|
|
repeated Attest Attests = 6;
|
|
map<string, string> BuildArgs = 7;
|
|
repeated CacheOptionsEntry CacheFrom = 8;
|
|
repeated CacheOptionsEntry CacheTo = 9;
|
|
string CgroupParent = 10;
|
|
repeated ExportEntry Exports = 11;
|
|
repeated string ExtraHosts = 12;
|
|
map<string, string> Labels = 13;
|
|
string NetworkMode = 14;
|
|
repeated string NoCacheFilter = 15;
|
|
repeated string Platforms = 16;
|
|
repeated Secret Secrets = 17;
|
|
int64 ShmSize = 18;
|
|
repeated SSH SSH = 19;
|
|
repeated string Tags = 20;
|
|
string Target = 21;
|
|
UlimitOpt Ulimits = 22;
|
|
|
|
string Builder = 23;
|
|
bool NoCache = 24;
|
|
bool Pull = 25;
|
|
bool ExportPush = 26;
|
|
bool ExportLoad = 27;
|
|
moby.buildkit.v1.sourcepolicy.Policy SourcePolicy = 28;
|
|
string Ref = 29;
|
|
string GroupRef = 30;
|
|
repeated string Annotations = 31;
|
|
string ProvenanceResponseMode = 32;
|
|
}
|
|
|
|
message ExportEntry {
|
|
string Type = 1;
|
|
map<string, string> Attrs = 2;
|
|
string Destination = 3;
|
|
}
|
|
|
|
message CacheOptionsEntry {
|
|
string Type = 1;
|
|
map<string, string> Attrs = 2;
|
|
}
|
|
|
|
message Attest {
|
|
string Type = 1;
|
|
bool Disabled = 2;
|
|
string Attrs = 3;
|
|
}
|
|
|
|
message SSH {
|
|
string ID = 1;
|
|
repeated string Paths = 2;
|
|
}
|
|
|
|
message Secret {
|
|
string ID = 1;
|
|
string FilePath = 2;
|
|
string Env = 3;
|
|
}
|
|
|
|
message CallFunc {
|
|
string Name = 1;
|
|
string Format = 2;
|
|
bool IgnoreStatus = 3;
|
|
}
|
|
|
|
message InspectRequest {
|
|
string Ref = 1;
|
|
}
|
|
|
|
message InspectResponse {
|
|
BuildOptions Options = 1;
|
|
}
|
|
|
|
message UlimitOpt {
|
|
map<string, Ulimit> values = 1;
|
|
}
|
|
|
|
message Ulimit {
|
|
string Name = 1;
|
|
int64 Hard = 2;
|
|
int64 Soft = 3;
|
|
}
|
|
|
|
message BuildResponse {
|
|
map<string, string> ExporterResponse = 1;
|
|
}
|
|
|
|
message DisconnectRequest {
|
|
string Ref = 1;
|
|
}
|
|
|
|
message DisconnectResponse {}
|
|
|
|
message ListRequest {
|
|
string Ref = 1;
|
|
}
|
|
|
|
message ListResponse {
|
|
repeated string keys = 1;
|
|
}
|
|
|
|
message InputMessage {
|
|
oneof Input {
|
|
InputInitMessage Init = 1;
|
|
DataMessage Data = 2;
|
|
}
|
|
}
|
|
|
|
message InputInitMessage {
|
|
string Ref = 1;
|
|
}
|
|
|
|
message DataMessage {
|
|
bool EOF = 1; // true if eof was reached
|
|
bytes Data = 2; // should be chunked smaller than 4MB:
|
|
// https://pkg.go.dev/google.golang.org/grpc#MaxRecvMsgSize
|
|
}
|
|
|
|
message InputResponse {}
|
|
|
|
message Message {
|
|
oneof Input {
|
|
InitMessage Init = 1;
|
|
// FdMessage used from client to server for input (stdin) and
|
|
// from server to client for output (stdout, stderr)
|
|
FdMessage File = 2;
|
|
// ResizeMessage used from client to server for terminal resize events
|
|
ResizeMessage Resize = 3;
|
|
// SignalMessage is used from client to server to send signal events
|
|
SignalMessage Signal = 4;
|
|
}
|
|
}
|
|
|
|
message InitMessage {
|
|
string Ref = 1;
|
|
|
|
// If ProcessID already exists in the server, it tries to connect to it
|
|
// instead of invoking the new one. In this case, InvokeConfig will be ignored.
|
|
string ProcessID = 2;
|
|
InvokeConfig InvokeConfig = 3;
|
|
}
|
|
|
|
message InvokeConfig {
|
|
repeated string Entrypoint = 1;
|
|
repeated string Cmd = 2;
|
|
bool NoCmd = 11; // Do not set cmd but use the image's default
|
|
repeated string Env = 3;
|
|
string User = 4;
|
|
bool NoUser = 5; // Do not set user but use the image's default
|
|
string Cwd = 6;
|
|
bool NoCwd = 7; // Do not set cwd but use the image's default
|
|
bool Tty = 8;
|
|
bool Rollback = 9; // Kill all process in the container and recreate it.
|
|
bool Initial = 10; // Run container from the initial state of that stage (supported only on the failed step)
|
|
}
|
|
|
|
message FdMessage {
|
|
uint32 Fd = 1; // what fd the data was from
|
|
bool EOF = 2; // true if eof was reached
|
|
bytes Data = 3; // should be chunked smaller than 4MB:
|
|
// https://pkg.go.dev/google.golang.org/grpc#MaxRecvMsgSize
|
|
}
|
|
|
|
message ResizeMessage {
|
|
uint32 Rows = 1;
|
|
uint32 Cols = 2;
|
|
}
|
|
|
|
message SignalMessage {
|
|
// we only send name (ie HUP, INT) because the int values
|
|
// are platform dependent.
|
|
string Name = 1;
|
|
}
|
|
|
|
message StatusRequest {
|
|
string Ref = 1;
|
|
}
|
|
|
|
message StatusResponse {
|
|
repeated moby.buildkit.v1.Vertex vertexes = 1;
|
|
repeated moby.buildkit.v1.VertexStatus statuses = 2;
|
|
repeated moby.buildkit.v1.VertexLog logs = 3;
|
|
repeated moby.buildkit.v1.VertexWarning warnings = 4;
|
|
}
|
|
|
|
message InfoRequest {}
|
|
|
|
message InfoResponse {
|
|
BuildxVersion buildxVersion = 1;
|
|
}
|
|
|
|
message BuildxVersion {
|
|
string package = 1;
|
|
string version = 2;
|
|
string revision = 3;
|
|
}
|