mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-24 20:28:02 +08:00
controller: strongly type the controller api
Strongly typing the API allows us to perform all command line parsing fully on the client-side, where we have access to the client local directory and all the client environment variables, which may not be available on the remote server. Additionally, the controller api starts to look a lot like build.Options, so at some point in the future there may be an oppportunity to merge the two, which would allow both build and bake to execute through the controller, instead of needing to maintain multiple code paths. Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
@@ -26,7 +26,6 @@ import (
|
||||
"github.com/docker/cli/cli/command"
|
||||
"github.com/docker/cli/cli/config"
|
||||
dockeropts "github.com/docker/cli/opts"
|
||||
"github.com/docker/distribution/reference"
|
||||
"github.com/docker/docker/pkg/ioutils"
|
||||
"github.com/docker/go-units"
|
||||
"github.com/moby/buildkit/client"
|
||||
@@ -53,9 +52,9 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build
|
||||
progressMode = "quiet"
|
||||
}
|
||||
|
||||
contexts, err := parseContextNames(in.Contexts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
contexts := map[string]build.NamedContext{}
|
||||
for name, path := range in.NamedContexts {
|
||||
contexts[name] = build.NamedContext{Path: path}
|
||||
}
|
||||
|
||||
printFunc, err := parsePrintFunc(in.PrintFunc)
|
||||
@@ -70,10 +69,10 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build
|
||||
InStream: inStream,
|
||||
NamedContexts: contexts,
|
||||
},
|
||||
BuildArgs: listToMap(in.BuildArgs, true),
|
||||
BuildArgs: in.BuildArgs,
|
||||
ExtraHosts: in.ExtraHosts,
|
||||
ImageIDFile: in.ImageIDFile,
|
||||
Labels: listToMap(in.Labels, false),
|
||||
Labels: in.Labels,
|
||||
NetworkMode: in.NetworkMode,
|
||||
NoCache: in.Opts.NoCache,
|
||||
NoCacheFilter: in.NoCacheFilter,
|
||||
@@ -94,7 +93,7 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build
|
||||
dockerConfig := config.LoadDefaultConfigFile(os.Stderr)
|
||||
opts.Session = append(opts.Session, authprovider.NewDockerAuthProvider(dockerConfig))
|
||||
|
||||
secrets, err := buildflags.ParseSecretSpecs(in.Secrets)
|
||||
secrets, err := controllerapi.CreateSecrets(in.Secrets)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -102,15 +101,15 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build
|
||||
|
||||
sshSpecs := in.SSH
|
||||
if len(sshSpecs) == 0 && buildflags.IsGitSSH(in.ContextPath) {
|
||||
sshSpecs = []string{"default"}
|
||||
sshSpecs = append(sshSpecs, &controllerapi.SSH{ID: "default"})
|
||||
}
|
||||
ssh, err := buildflags.ParseSSHSpecs(sshSpecs)
|
||||
ssh, err := controllerapi.CreateSSH(sshSpecs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
opts.Session = append(opts.Session, ssh)
|
||||
|
||||
outputs, err := buildflags.ParseOutputs(in.Outputs)
|
||||
outputs, err := controllerapi.CreateExports(in.Exports)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -162,17 +161,8 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cacheImports, err := buildflags.ParseCacheEntry(in.CacheFrom)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
opts.CacheFrom = cacheImports
|
||||
|
||||
cacheExports, err := buildflags.ParseCacheEntry(in.CacheTo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
opts.CacheTo = cacheExports
|
||||
opts.CacheFrom = controllerapi.CreateCaches(in.CacheFrom)
|
||||
opts.CacheTo = controllerapi.CreateCaches(in.CacheTo)
|
||||
|
||||
allow, err := buildflags.ParseEntitlements(in.Allow)
|
||||
if err != nil {
|
||||
@@ -301,46 +291,6 @@ func printWarnings(w io.Writer, warnings []client.VertexWarning, mode string) {
|
||||
}
|
||||
}
|
||||
|
||||
func listToMap(values []string, defaultEnv bool) map[string]string {
|
||||
result := make(map[string]string, len(values))
|
||||
for _, value := range values {
|
||||
kv := strings.SplitN(value, "=", 2)
|
||||
if len(kv) == 1 {
|
||||
if defaultEnv {
|
||||
v, ok := os.LookupEnv(kv[0])
|
||||
if ok {
|
||||
result[kv[0]] = v
|
||||
}
|
||||
} else {
|
||||
result[kv[0]] = ""
|
||||
}
|
||||
} else {
|
||||
result[kv[0]] = kv[1]
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func parseContextNames(values []string) (map[string]build.NamedContext, error) {
|
||||
if len(values) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
result := make(map[string]build.NamedContext, len(values))
|
||||
for _, value := range values {
|
||||
kv := strings.SplitN(value, "=", 2)
|
||||
if len(kv) != 2 {
|
||||
return nil, errors.Errorf("invalid context value: %s, expected key=value", value)
|
||||
}
|
||||
named, err := reference.ParseNormalizedNamed(kv[0])
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "invalid context name %s", kv[0])
|
||||
}
|
||||
name := strings.TrimSuffix(reference.FamiliarString(named), ":latest")
|
||||
result[name] = build.NamedContext{Path: kv[1]}
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func parsePrintFunc(str string) (*build.PrintFunc, error) {
|
||||
if str == "" {
|
||||
return nil, nil
|
||||
|
21
controller/pb/cache.go
Normal file
21
controller/pb/cache.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package pb
|
||||
|
||||
import "github.com/moby/buildkit/client"
|
||||
|
||||
func CreateCaches(entries []*CacheOptionsEntry) []client.CacheOptionsEntry {
|
||||
var outs []client.CacheOptionsEntry
|
||||
if len(entries) == 0 {
|
||||
return nil
|
||||
}
|
||||
for _, entry := range entries {
|
||||
out := client.CacheOptionsEntry{
|
||||
Type: entry.Type,
|
||||
Attrs: map[string]string{},
|
||||
}
|
||||
for k, v := range entry.Attrs {
|
||||
out.Attrs[k] = v
|
||||
}
|
||||
outs = append(outs, out)
|
||||
}
|
||||
return outs
|
||||
}
|
@@ -72,35 +72,34 @@ func (m *BuildRequest) GetOptions() *BuildOptions {
|
||||
}
|
||||
|
||||
type BuildOptions struct {
|
||||
ContextPath string `protobuf:"bytes,1,opt,name=ContextPath,proto3" json:"ContextPath,omitempty"`
|
||||
DockerfileName string `protobuf:"bytes,2,opt,name=DockerfileName,proto3" json:"DockerfileName,omitempty"`
|
||||
PrintFunc string `protobuf:"bytes,3,opt,name=PrintFunc,proto3" json:"PrintFunc,omitempty"`
|
||||
Allow []string `protobuf:"bytes,4,rep,name=Allow,proto3" json:"Allow,omitempty"`
|
||||
Attests []string `protobuf:"bytes,5,rep,name=Attests,proto3" json:"Attests,omitempty"`
|
||||
BuildArgs []string `protobuf:"bytes,6,rep,name=BuildArgs,proto3" json:"BuildArgs,omitempty"`
|
||||
CacheFrom []string `protobuf:"bytes,7,rep,name=CacheFrom,proto3" json:"CacheFrom,omitempty"`
|
||||
CacheTo []string `protobuf:"bytes,8,rep,name=CacheTo,proto3" json:"CacheTo,omitempty"`
|
||||
CgroupParent string `protobuf:"bytes,9,opt,name=CgroupParent,proto3" json:"CgroupParent,omitempty"`
|
||||
Contexts []string `protobuf:"bytes,10,rep,name=Contexts,proto3" json:"Contexts,omitempty"`
|
||||
ExtraHosts []string `protobuf:"bytes,11,rep,name=ExtraHosts,proto3" json:"ExtraHosts,omitempty"`
|
||||
ImageIDFile string `protobuf:"bytes,12,opt,name=ImageIDFile,proto3" json:"ImageIDFile,omitempty"`
|
||||
Labels []string `protobuf:"bytes,13,rep,name=Labels,proto3" json:"Labels,omitempty"`
|
||||
NetworkMode string `protobuf:"bytes,14,opt,name=NetworkMode,proto3" json:"NetworkMode,omitempty"`
|
||||
NoCacheFilter []string `protobuf:"bytes,15,rep,name=NoCacheFilter,proto3" json:"NoCacheFilter,omitempty"`
|
||||
Outputs []string `protobuf:"bytes,16,rep,name=Outputs,proto3" json:"Outputs,omitempty"`
|
||||
Platforms []string `protobuf:"bytes,17,rep,name=Platforms,proto3" json:"Platforms,omitempty"`
|
||||
Quiet bool `protobuf:"varint,18,opt,name=Quiet,proto3" json:"Quiet,omitempty"`
|
||||
Secrets []string `protobuf:"bytes,19,rep,name=Secrets,proto3" json:"Secrets,omitempty"`
|
||||
ShmSize int64 `protobuf:"varint,20,opt,name=ShmSize,proto3" json:"ShmSize,omitempty"`
|
||||
SSH []string `protobuf:"bytes,21,rep,name=SSH,proto3" json:"SSH,omitempty"`
|
||||
Tags []string `protobuf:"bytes,22,rep,name=Tags,proto3" json:"Tags,omitempty"`
|
||||
Target string `protobuf:"bytes,23,opt,name=Target,proto3" json:"Target,omitempty"`
|
||||
Ulimits *UlimitOpt `protobuf:"bytes,24,opt,name=Ulimits,proto3" json:"Ulimits,omitempty"`
|
||||
// string Invoke: provided via Invoke API
|
||||
Opts *CommonOptions `protobuf:"bytes,25,opt,name=Opts,proto3" json:"Opts,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
ContextPath string `protobuf:"bytes,1,opt,name=ContextPath,proto3" json:"ContextPath,omitempty"`
|
||||
DockerfileName string `protobuf:"bytes,2,opt,name=DockerfileName,proto3" json:"DockerfileName,omitempty"`
|
||||
PrintFunc string `protobuf:"bytes,3,opt,name=PrintFunc,proto3" json:"PrintFunc,omitempty"`
|
||||
NamedContexts map[string]string `protobuf:"bytes,4,rep,name=NamedContexts,proto3" json:"NamedContexts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||
Allow []string `protobuf:"bytes,5,rep,name=Allow,proto3" json:"Allow,omitempty"`
|
||||
Attests []string `protobuf:"bytes,6,rep,name=Attests,proto3" json:"Attests,omitempty"`
|
||||
BuildArgs map[string]string `protobuf:"bytes,7,rep,name=BuildArgs,proto3" json:"BuildArgs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||
CacheFrom []*CacheOptionsEntry `protobuf:"bytes,8,rep,name=CacheFrom,proto3" json:"CacheFrom,omitempty"`
|
||||
CacheTo []*CacheOptionsEntry `protobuf:"bytes,9,rep,name=CacheTo,proto3" json:"CacheTo,omitempty"`
|
||||
CgroupParent string `protobuf:"bytes,10,opt,name=CgroupParent,proto3" json:"CgroupParent,omitempty"`
|
||||
Exports []*ExportEntry `protobuf:"bytes,11,rep,name=Exports,proto3" json:"Exports,omitempty"`
|
||||
ExtraHosts []string `protobuf:"bytes,12,rep,name=ExtraHosts,proto3" json:"ExtraHosts,omitempty"`
|
||||
ImageIDFile string `protobuf:"bytes,13,opt,name=ImageIDFile,proto3" json:"ImageIDFile,omitempty"`
|
||||
Labels map[string]string `protobuf:"bytes,14,rep,name=Labels,proto3" json:"Labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||
NetworkMode string `protobuf:"bytes,15,opt,name=NetworkMode,proto3" json:"NetworkMode,omitempty"`
|
||||
NoCacheFilter []string `protobuf:"bytes,16,rep,name=NoCacheFilter,proto3" json:"NoCacheFilter,omitempty"`
|
||||
Platforms []string `protobuf:"bytes,17,rep,name=Platforms,proto3" json:"Platforms,omitempty"`
|
||||
Quiet bool `protobuf:"varint,18,opt,name=Quiet,proto3" json:"Quiet,omitempty"`
|
||||
Secrets []*Secret `protobuf:"bytes,19,rep,name=Secrets,proto3" json:"Secrets,omitempty"`
|
||||
ShmSize int64 `protobuf:"varint,20,opt,name=ShmSize,proto3" json:"ShmSize,omitempty"`
|
||||
SSH []*SSH `protobuf:"bytes,21,rep,name=SSH,proto3" json:"SSH,omitempty"`
|
||||
Tags []string `protobuf:"bytes,22,rep,name=Tags,proto3" json:"Tags,omitempty"`
|
||||
Target string `protobuf:"bytes,23,opt,name=Target,proto3" json:"Target,omitempty"`
|
||||
Ulimits *UlimitOpt `protobuf:"bytes,24,opt,name=Ulimits,proto3" json:"Ulimits,omitempty"`
|
||||
Opts *CommonOptions `protobuf:"bytes,25,opt,name=Opts,proto3" json:"Opts,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *BuildOptions) Reset() { *m = BuildOptions{} }
|
||||
@@ -148,6 +147,13 @@ func (m *BuildOptions) GetPrintFunc() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *BuildOptions) GetNamedContexts() map[string]string {
|
||||
if m != nil {
|
||||
return m.NamedContexts
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *BuildOptions) GetAllow() []string {
|
||||
if m != nil {
|
||||
return m.Allow
|
||||
@@ -162,21 +168,21 @@ func (m *BuildOptions) GetAttests() []string {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *BuildOptions) GetBuildArgs() []string {
|
||||
func (m *BuildOptions) GetBuildArgs() map[string]string {
|
||||
if m != nil {
|
||||
return m.BuildArgs
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *BuildOptions) GetCacheFrom() []string {
|
||||
func (m *BuildOptions) GetCacheFrom() []*CacheOptionsEntry {
|
||||
if m != nil {
|
||||
return m.CacheFrom
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *BuildOptions) GetCacheTo() []string {
|
||||
func (m *BuildOptions) GetCacheTo() []*CacheOptionsEntry {
|
||||
if m != nil {
|
||||
return m.CacheTo
|
||||
}
|
||||
@@ -190,9 +196,9 @@ func (m *BuildOptions) GetCgroupParent() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *BuildOptions) GetContexts() []string {
|
||||
func (m *BuildOptions) GetExports() []*ExportEntry {
|
||||
if m != nil {
|
||||
return m.Contexts
|
||||
return m.Exports
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -211,7 +217,7 @@ func (m *BuildOptions) GetImageIDFile() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *BuildOptions) GetLabels() []string {
|
||||
func (m *BuildOptions) GetLabels() map[string]string {
|
||||
if m != nil {
|
||||
return m.Labels
|
||||
}
|
||||
@@ -232,13 +238,6 @@ func (m *BuildOptions) GetNoCacheFilter() []string {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *BuildOptions) GetOutputs() []string {
|
||||
if m != nil {
|
||||
return m.Outputs
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *BuildOptions) GetPlatforms() []string {
|
||||
if m != nil {
|
||||
return m.Platforms
|
||||
@@ -253,7 +252,7 @@ func (m *BuildOptions) GetQuiet() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *BuildOptions) GetSecrets() []string {
|
||||
func (m *BuildOptions) GetSecrets() []*Secret {
|
||||
if m != nil {
|
||||
return m.Secrets
|
||||
}
|
||||
@@ -267,7 +266,7 @@ func (m *BuildOptions) GetShmSize() int64 {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *BuildOptions) GetSSH() []string {
|
||||
func (m *BuildOptions) GetSSH() []*SSH {
|
||||
if m != nil {
|
||||
return m.SSH
|
||||
}
|
||||
@@ -302,6 +301,206 @@ func (m *BuildOptions) GetOpts() *CommonOptions {
|
||||
return nil
|
||||
}
|
||||
|
||||
type ExportEntry struct {
|
||||
Type string `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty"`
|
||||
Attrs map[string]string `protobuf:"bytes,2,rep,name=Attrs,proto3" json:"Attrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||
Destination string `protobuf:"bytes,3,opt,name=Destination,proto3" json:"Destination,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *ExportEntry) Reset() { *m = ExportEntry{} }
|
||||
func (m *ExportEntry) String() string { return proto.CompactTextString(m) }
|
||||
func (*ExportEntry) ProtoMessage() {}
|
||||
func (*ExportEntry) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{2}
|
||||
}
|
||||
func (m *ExportEntry) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_ExportEntry.Unmarshal(m, b)
|
||||
}
|
||||
func (m *ExportEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_ExportEntry.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (m *ExportEntry) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_ExportEntry.Merge(m, src)
|
||||
}
|
||||
func (m *ExportEntry) XXX_Size() int {
|
||||
return xxx_messageInfo_ExportEntry.Size(m)
|
||||
}
|
||||
func (m *ExportEntry) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_ExportEntry.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_ExportEntry proto.InternalMessageInfo
|
||||
|
||||
func (m *ExportEntry) GetType() string {
|
||||
if m != nil {
|
||||
return m.Type
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *ExportEntry) GetAttrs() map[string]string {
|
||||
if m != nil {
|
||||
return m.Attrs
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *ExportEntry) GetDestination() string {
|
||||
if m != nil {
|
||||
return m.Destination
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CacheOptionsEntry struct {
|
||||
Type string `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty"`
|
||||
Attrs map[string]string `protobuf:"bytes,2,rep,name=Attrs,proto3" json:"Attrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CacheOptionsEntry) Reset() { *m = CacheOptionsEntry{} }
|
||||
func (m *CacheOptionsEntry) String() string { return proto.CompactTextString(m) }
|
||||
func (*CacheOptionsEntry) ProtoMessage() {}
|
||||
func (*CacheOptionsEntry) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{3}
|
||||
}
|
||||
func (m *CacheOptionsEntry) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_CacheOptionsEntry.Unmarshal(m, b)
|
||||
}
|
||||
func (m *CacheOptionsEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_CacheOptionsEntry.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (m *CacheOptionsEntry) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_CacheOptionsEntry.Merge(m, src)
|
||||
}
|
||||
func (m *CacheOptionsEntry) XXX_Size() int {
|
||||
return xxx_messageInfo_CacheOptionsEntry.Size(m)
|
||||
}
|
||||
func (m *CacheOptionsEntry) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_CacheOptionsEntry.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_CacheOptionsEntry proto.InternalMessageInfo
|
||||
|
||||
func (m *CacheOptionsEntry) GetType() string {
|
||||
if m != nil {
|
||||
return m.Type
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CacheOptionsEntry) GetAttrs() map[string]string {
|
||||
if m != nil {
|
||||
return m.Attrs
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type SSH struct {
|
||||
ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
|
||||
Paths []string `protobuf:"bytes,2,rep,name=Paths,proto3" json:"Paths,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *SSH) Reset() { *m = SSH{} }
|
||||
func (m *SSH) String() string { return proto.CompactTextString(m) }
|
||||
func (*SSH) ProtoMessage() {}
|
||||
func (*SSH) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{4}
|
||||
}
|
||||
func (m *SSH) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_SSH.Unmarshal(m, b)
|
||||
}
|
||||
func (m *SSH) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_SSH.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (m *SSH) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_SSH.Merge(m, src)
|
||||
}
|
||||
func (m *SSH) XXX_Size() int {
|
||||
return xxx_messageInfo_SSH.Size(m)
|
||||
}
|
||||
func (m *SSH) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_SSH.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_SSH proto.InternalMessageInfo
|
||||
|
||||
func (m *SSH) GetID() string {
|
||||
if m != nil {
|
||||
return m.ID
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *SSH) GetPaths() []string {
|
||||
if m != nil {
|
||||
return m.Paths
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type Secret struct {
|
||||
ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
|
||||
FilePath string `protobuf:"bytes,2,opt,name=FilePath,proto3" json:"FilePath,omitempty"`
|
||||
Env string `protobuf:"bytes,3,opt,name=Env,proto3" json:"Env,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *Secret) Reset() { *m = Secret{} }
|
||||
func (m *Secret) String() string { return proto.CompactTextString(m) }
|
||||
func (*Secret) ProtoMessage() {}
|
||||
func (*Secret) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{5}
|
||||
}
|
||||
func (m *Secret) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_Secret.Unmarshal(m, b)
|
||||
}
|
||||
func (m *Secret) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_Secret.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (m *Secret) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_Secret.Merge(m, src)
|
||||
}
|
||||
func (m *Secret) XXX_Size() int {
|
||||
return xxx_messageInfo_Secret.Size(m)
|
||||
}
|
||||
func (m *Secret) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_Secret.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_Secret proto.InternalMessageInfo
|
||||
|
||||
func (m *Secret) GetID() string {
|
||||
if m != nil {
|
||||
return m.ID
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *Secret) GetFilePath() string {
|
||||
if m != nil {
|
||||
return m.FilePath
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *Secret) GetEnv() string {
|
||||
if m != nil {
|
||||
return m.Env
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type UlimitOpt struct {
|
||||
Values map[string]*Ulimit `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
@@ -313,7 +512,7 @@ func (m *UlimitOpt) Reset() { *m = UlimitOpt{} }
|
||||
func (m *UlimitOpt) String() string { return proto.CompactTextString(m) }
|
||||
func (*UlimitOpt) ProtoMessage() {}
|
||||
func (*UlimitOpt) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{2}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{6}
|
||||
}
|
||||
func (m *UlimitOpt) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_UlimitOpt.Unmarshal(m, b)
|
||||
@@ -353,7 +552,7 @@ func (m *Ulimit) Reset() { *m = Ulimit{} }
|
||||
func (m *Ulimit) String() string { return proto.CompactTextString(m) }
|
||||
func (*Ulimit) ProtoMessage() {}
|
||||
func (*Ulimit) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{3}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{7}
|
||||
}
|
||||
func (m *Ulimit) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_Ulimit.Unmarshal(m, b)
|
||||
@@ -413,7 +612,7 @@ func (m *CommonOptions) Reset() { *m = CommonOptions{} }
|
||||
func (m *CommonOptions) String() string { return proto.CompactTextString(m) }
|
||||
func (*CommonOptions) ProtoMessage() {}
|
||||
func (*CommonOptions) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{4}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{8}
|
||||
}
|
||||
func (m *CommonOptions) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_CommonOptions.Unmarshal(m, b)
|
||||
@@ -499,7 +698,7 @@ func (m *BuildResponse) Reset() { *m = BuildResponse{} }
|
||||
func (m *BuildResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*BuildResponse) ProtoMessage() {}
|
||||
func (*BuildResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{5}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{9}
|
||||
}
|
||||
func (m *BuildResponse) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_BuildResponse.Unmarshal(m, b)
|
||||
@@ -530,7 +729,7 @@ func (m *DisconnectRequest) Reset() { *m = DisconnectRequest{} }
|
||||
func (m *DisconnectRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*DisconnectRequest) ProtoMessage() {}
|
||||
func (*DisconnectRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{6}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{10}
|
||||
}
|
||||
func (m *DisconnectRequest) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_DisconnectRequest.Unmarshal(m, b)
|
||||
@@ -567,7 +766,7 @@ func (m *DisconnectResponse) Reset() { *m = DisconnectResponse{} }
|
||||
func (m *DisconnectResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*DisconnectResponse) ProtoMessage() {}
|
||||
func (*DisconnectResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{7}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{11}
|
||||
}
|
||||
func (m *DisconnectResponse) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_DisconnectResponse.Unmarshal(m, b)
|
||||
@@ -598,7 +797,7 @@ func (m *ListRequest) Reset() { *m = ListRequest{} }
|
||||
func (m *ListRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ListRequest) ProtoMessage() {}
|
||||
func (*ListRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{8}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{12}
|
||||
}
|
||||
func (m *ListRequest) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_ListRequest.Unmarshal(m, b)
|
||||
@@ -636,7 +835,7 @@ func (m *ListResponse) Reset() { *m = ListResponse{} }
|
||||
func (m *ListResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*ListResponse) ProtoMessage() {}
|
||||
func (*ListResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{9}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{13}
|
||||
}
|
||||
func (m *ListResponse) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_ListResponse.Unmarshal(m, b)
|
||||
@@ -677,7 +876,7 @@ func (m *InputMessage) Reset() { *m = InputMessage{} }
|
||||
func (m *InputMessage) String() string { return proto.CompactTextString(m) }
|
||||
func (*InputMessage) ProtoMessage() {}
|
||||
func (*InputMessage) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{10}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{14}
|
||||
}
|
||||
func (m *InputMessage) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_InputMessage.Unmarshal(m, b)
|
||||
@@ -751,7 +950,7 @@ func (m *InputInitMessage) Reset() { *m = InputInitMessage{} }
|
||||
func (m *InputInitMessage) String() string { return proto.CompactTextString(m) }
|
||||
func (*InputInitMessage) ProtoMessage() {}
|
||||
func (*InputInitMessage) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{11}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{15}
|
||||
}
|
||||
func (m *InputInitMessage) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_InputInitMessage.Unmarshal(m, b)
|
||||
@@ -790,7 +989,7 @@ func (m *DataMessage) Reset() { *m = DataMessage{} }
|
||||
func (m *DataMessage) String() string { return proto.CompactTextString(m) }
|
||||
func (*DataMessage) ProtoMessage() {}
|
||||
func (*DataMessage) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{12}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{16}
|
||||
}
|
||||
func (m *DataMessage) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_DataMessage.Unmarshal(m, b)
|
||||
@@ -834,7 +1033,7 @@ func (m *InputResponse) Reset() { *m = InputResponse{} }
|
||||
func (m *InputResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*InputResponse) ProtoMessage() {}
|
||||
func (*InputResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{13}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{17}
|
||||
}
|
||||
func (m *InputResponse) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_InputResponse.Unmarshal(m, b)
|
||||
@@ -870,7 +1069,7 @@ func (m *Message) Reset() { *m = Message{} }
|
||||
func (m *Message) String() string { return proto.CompactTextString(m) }
|
||||
func (*Message) ProtoMessage() {}
|
||||
func (*Message) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{14}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{18}
|
||||
}
|
||||
func (m *Message) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_Message.Unmarshal(m, b)
|
||||
@@ -969,7 +1168,7 @@ func (m *InitMessage) Reset() { *m = InitMessage{} }
|
||||
func (m *InitMessage) String() string { return proto.CompactTextString(m) }
|
||||
func (*InitMessage) ProtoMessage() {}
|
||||
func (*InitMessage) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{15}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{19}
|
||||
}
|
||||
func (m *InitMessage) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_InitMessage.Unmarshal(m, b)
|
||||
@@ -1021,7 +1220,7 @@ func (m *ContainerConfig) Reset() { *m = ContainerConfig{} }
|
||||
func (m *ContainerConfig) String() string { return proto.CompactTextString(m) }
|
||||
func (*ContainerConfig) ProtoMessage() {}
|
||||
func (*ContainerConfig) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{16}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{20}
|
||||
}
|
||||
func (m *ContainerConfig) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_ContainerConfig.Unmarshal(m, b)
|
||||
@@ -1110,7 +1309,7 @@ func (m *FdMessage) Reset() { *m = FdMessage{} }
|
||||
func (m *FdMessage) String() string { return proto.CompactTextString(m) }
|
||||
func (*FdMessage) ProtoMessage() {}
|
||||
func (*FdMessage) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{17}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{21}
|
||||
}
|
||||
func (m *FdMessage) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_FdMessage.Unmarshal(m, b)
|
||||
@@ -1163,7 +1362,7 @@ func (m *ResizeMessage) Reset() { *m = ResizeMessage{} }
|
||||
func (m *ResizeMessage) String() string { return proto.CompactTextString(m) }
|
||||
func (*ResizeMessage) ProtoMessage() {}
|
||||
func (*ResizeMessage) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{18}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{22}
|
||||
}
|
||||
func (m *ResizeMessage) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_ResizeMessage.Unmarshal(m, b)
|
||||
@@ -1210,7 +1409,7 @@ func (m *SignalMessage) Reset() { *m = SignalMessage{} }
|
||||
func (m *SignalMessage) String() string { return proto.CompactTextString(m) }
|
||||
func (*SignalMessage) ProtoMessage() {}
|
||||
func (*SignalMessage) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{19}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{23}
|
||||
}
|
||||
func (m *SignalMessage) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_SignalMessage.Unmarshal(m, b)
|
||||
@@ -1248,7 +1447,7 @@ func (m *StatusRequest) Reset() { *m = StatusRequest{} }
|
||||
func (m *StatusRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*StatusRequest) ProtoMessage() {}
|
||||
func (*StatusRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{20}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{24}
|
||||
}
|
||||
func (m *StatusRequest) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_StatusRequest.Unmarshal(m, b)
|
||||
@@ -1289,7 +1488,7 @@ func (m *StatusResponse) Reset() { *m = StatusResponse{} }
|
||||
func (m *StatusResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*StatusResponse) ProtoMessage() {}
|
||||
func (*StatusResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{21}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{25}
|
||||
}
|
||||
func (m *StatusResponse) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_StatusResponse.Unmarshal(m, b)
|
||||
@@ -1347,7 +1546,7 @@ func (m *InfoRequest) Reset() { *m = InfoRequest{} }
|
||||
func (m *InfoRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*InfoRequest) ProtoMessage() {}
|
||||
func (*InfoRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{22}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{26}
|
||||
}
|
||||
func (m *InfoRequest) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_InfoRequest.Unmarshal(m, b)
|
||||
@@ -1378,7 +1577,7 @@ func (m *InfoResponse) Reset() { *m = InfoResponse{} }
|
||||
func (m *InfoResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*InfoResponse) ProtoMessage() {}
|
||||
func (*InfoResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{23}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{27}
|
||||
}
|
||||
func (m *InfoResponse) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_InfoResponse.Unmarshal(m, b)
|
||||
@@ -1418,7 +1617,7 @@ func (m *BuildxVersion) Reset() { *m = BuildxVersion{} }
|
||||
func (m *BuildxVersion) String() string { return proto.CompactTextString(m) }
|
||||
func (*BuildxVersion) ProtoMessage() {}
|
||||
func (*BuildxVersion) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{24}
|
||||
return fileDescriptor_ed7f10298fa1d90f, []int{28}
|
||||
}
|
||||
func (m *BuildxVersion) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_BuildxVersion.Unmarshal(m, b)
|
||||
@@ -1462,6 +1661,15 @@ func (m *BuildxVersion) GetRevision() string {
|
||||
func init() {
|
||||
proto.RegisterType((*BuildRequest)(nil), "buildx.controller.v1.BuildRequest")
|
||||
proto.RegisterType((*BuildOptions)(nil), "buildx.controller.v1.BuildOptions")
|
||||
proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.BuildOptions.BuildArgsEntry")
|
||||
proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.BuildOptions.LabelsEntry")
|
||||
proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.BuildOptions.NamedContextsEntry")
|
||||
proto.RegisterType((*ExportEntry)(nil), "buildx.controller.v1.ExportEntry")
|
||||
proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.ExportEntry.AttrsEntry")
|
||||
proto.RegisterType((*CacheOptionsEntry)(nil), "buildx.controller.v1.CacheOptionsEntry")
|
||||
proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.CacheOptionsEntry.AttrsEntry")
|
||||
proto.RegisterType((*SSH)(nil), "buildx.controller.v1.SSH")
|
||||
proto.RegisterType((*Secret)(nil), "buildx.controller.v1.Secret")
|
||||
proto.RegisterType((*UlimitOpt)(nil), "buildx.controller.v1.UlimitOpt")
|
||||
proto.RegisterMapType((map[string]*Ulimit)(nil), "buildx.controller.v1.UlimitOpt.ValuesEntry")
|
||||
proto.RegisterType((*Ulimit)(nil), "buildx.controller.v1.Ulimit")
|
||||
@@ -1491,97 +1699,111 @@ func init() {
|
||||
func init() { proto.RegisterFile("controller.proto", fileDescriptor_ed7f10298fa1d90f) }
|
||||
|
||||
var fileDescriptor_ed7f10298fa1d90f = []byte{
|
||||
// 1436 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x57, 0xdd, 0x52, 0x1b, 0xc7,
|
||||
0x12, 0x3e, 0x8b, 0x84, 0x7e, 0x5a, 0x08, 0xe3, 0x39, 0x1c, 0x9f, 0x39, 0x3a, 0x8e, 0x8d, 0x17,
|
||||
0xdb, 0x51, 0x55, 0xaa, 0x84, 0x83, 0x93, 0x72, 0x62, 0x3b, 0x17, 0x20, 0xa0, 0x20, 0xc5, 0x5f,
|
||||
0x16, 0x6c, 0x57, 0x72, 0x11, 0xd7, 0x22, 0x0d, 0x62, 0x4b, 0xab, 0x1d, 0x65, 0x67, 0x24, 0x20,
|
||||
0x57, 0x79, 0x82, 0x5c, 0xe4, 0x2d, 0xf2, 0x0c, 0x79, 0x8d, 0xbc, 0x47, 0xf2, 0x08, 0xa9, 0xee,
|
||||
0x99, 0x5d, 0x56, 0x58, 0x2b, 0x5f, 0x69, 0xfa, 0x9b, 0xef, 0xeb, 0x99, 0xee, 0xe9, 0xe9, 0x59,
|
||||
0xc1, 0x52, 0x47, 0x46, 0x3a, 0x96, 0x61, 0x28, 0xe2, 0xd6, 0x30, 0x96, 0x5a, 0xb2, 0xe5, 0xb3,
|
||||
0x51, 0x10, 0x76, 0xaf, 0x5a, 0x99, 0x89, 0xf1, 0xe7, 0x8d, 0x57, 0xbd, 0x40, 0x5f, 0x8c, 0xce,
|
||||
0x5a, 0x1d, 0x39, 0x58, 0x1b, 0xc8, 0xb3, 0xeb, 0x35, 0x62, 0xf5, 0x03, 0xbd, 0xe6, 0x0f, 0x83,
|
||||
0x35, 0x25, 0xe2, 0x71, 0xd0, 0x11, 0x6a, 0xcd, 0x8a, 0x92, 0x5f, 0xe3, 0xd2, 0xfd, 0x11, 0x16,
|
||||
0x36, 0x91, 0xee, 0x89, 0x9f, 0x46, 0x42, 0x69, 0xb6, 0x04, 0x05, 0x4f, 0x9c, 0x73, 0x67, 0xc5,
|
||||
0x69, 0x56, 0x3d, 0x1c, 0xb2, 0xd7, 0x50, 0x3e, 0x1a, 0xea, 0x40, 0x46, 0x8a, 0xcf, 0xad, 0x38,
|
||||
0xcd, 0xda, 0xba, 0xdb, 0x9a, 0xb6, 0x8d, 0x16, 0xb9, 0xb1, 0x4c, 0x2f, 0x91, 0xb8, 0xbf, 0x95,
|
||||
0xec, 0x02, 0x16, 0x60, 0x2b, 0x50, 0x6b, 0xcb, 0x48, 0x8b, 0x2b, 0x7d, 0xec, 0xeb, 0x0b, 0xbb,
|
||||
0x50, 0x16, 0x62, 0x4f, 0x61, 0x71, 0x4b, 0x76, 0xfa, 0x22, 0x3e, 0x0f, 0x42, 0x71, 0xe8, 0x0f,
|
||||
0x04, 0xad, 0x5b, 0xf5, 0x6e, 0xa1, 0xec, 0x3e, 0x54, 0x8f, 0xe3, 0x20, 0xd2, 0x3b, 0xa3, 0xa8,
|
||||
0xc3, 0x0b, 0x44, 0xb9, 0x01, 0xd8, 0x32, 0xcc, 0x6f, 0x84, 0xa1, 0xbc, 0xe4, 0xc5, 0x95, 0x42,
|
||||
0xb3, 0xea, 0x19, 0x83, 0x71, 0x28, 0x6f, 0x68, 0x2d, 0x94, 0x56, 0x7c, 0x9e, 0xf0, 0xc4, 0x44,
|
||||
0x6f, 0xb4, 0xcf, 0x8d, 0xb8, 0xa7, 0x78, 0x89, 0xe6, 0x6e, 0x00, 0x9c, 0x6d, 0xfb, 0x9d, 0x0b,
|
||||
0xb1, 0x13, 0xcb, 0x01, 0x2f, 0x9b, 0xd9, 0x14, 0x40, 0xaf, 0x64, 0x9c, 0x4a, 0x5e, 0x31, 0x5e,
|
||||
0xad, 0xc9, 0x5c, 0x58, 0x68, 0xf7, 0x62, 0x39, 0x1a, 0x1e, 0xfb, 0xb1, 0x88, 0x34, 0xaf, 0xd2,
|
||||
0x36, 0x27, 0x30, 0xd6, 0x80, 0x8a, 0x0d, 0x5f, 0x71, 0x20, 0x79, 0x6a, 0xb3, 0x07, 0x00, 0xdb,
|
||||
0x57, 0x3a, 0xf6, 0x77, 0x25, 0x6e, 0xb9, 0x46, 0xb3, 0x19, 0x04, 0xb3, 0xb9, 0x37, 0xf0, 0x7b,
|
||||
0x62, 0x6f, 0x6b, 0x27, 0x08, 0x05, 0x5f, 0x30, 0xd9, 0xcc, 0x40, 0xec, 0x1e, 0x94, 0xf6, 0xfd,
|
||||
0x33, 0x11, 0x2a, 0x5e, 0x27, 0xb5, 0xb5, 0x50, 0x79, 0x28, 0xf4, 0xa5, 0x8c, 0xfb, 0x07, 0xb2,
|
||||
0x2b, 0xf8, 0xa2, 0x51, 0x66, 0x20, 0xf6, 0x18, 0xea, 0x87, 0xd2, 0x04, 0x19, 0x84, 0x5a, 0xc4,
|
||||
0xfc, 0x0e, 0x39, 0x98, 0x04, 0x31, 0xf6, 0xa3, 0x91, 0x1e, 0x8e, 0xb4, 0xe2, 0x4b, 0x26, 0x76,
|
||||
0x6b, 0xd2, 0xf9, 0x84, 0xbe, 0x3e, 0x97, 0xf1, 0x40, 0xf1, 0xbb, 0x26, 0x67, 0x29, 0x80, 0xe7,
|
||||
0xf3, 0xdd, 0x28, 0x10, 0x9a, 0xb3, 0x15, 0xa7, 0x59, 0xf1, 0x8c, 0x81, 0xde, 0x4e, 0x44, 0x27,
|
||||
0x16, 0x5a, 0xf1, 0x7f, 0x1b, 0x6f, 0xd6, 0xa4, 0x99, 0x8b, 0xc1, 0x49, 0xf0, 0xb3, 0xe0, 0xcb,
|
||||
0x2b, 0x4e, 0xb3, 0xe0, 0x25, 0x26, 0x96, 0xec, 0xc9, 0xc9, 0x2e, 0xff, 0x0f, 0xf1, 0x71, 0xc8,
|
||||
0x18, 0x14, 0x4f, 0xfd, 0x9e, 0xe2, 0xf7, 0x08, 0xa2, 0x31, 0xe6, 0xe1, 0xd4, 0x8f, 0x7b, 0x42,
|
||||
0xf3, 0xff, 0x52, 0xa8, 0xd6, 0x62, 0x5f, 0x43, 0xf9, 0x4d, 0x18, 0x0c, 0x02, 0xad, 0x38, 0xa7,
|
||||
0xf2, 0x7e, 0x38, 0xbd, 0xbc, 0x0d, 0xe9, 0x68, 0xa8, 0xbd, 0x84, 0xcf, 0x5e, 0x40, 0xf1, 0x68,
|
||||
0xa8, 0x15, 0xff, 0x1f, 0xe9, 0x56, 0xa7, 0xeb, 0xda, 0x72, 0x30, 0x90, 0x51, 0x72, 0x2f, 0x48,
|
||||
0xe0, 0xfe, 0xee, 0x40, 0x35, 0xf5, 0xc7, 0xda, 0x50, 0x1a, 0xfb, 0xe1, 0x48, 0x28, 0xee, 0xac,
|
||||
0x14, 0x9a, 0xb5, 0xf5, 0xcf, 0x3e, 0xb2, 0x81, 0xd6, 0x5b, 0x62, 0x6f, 0x47, 0x3a, 0xbe, 0xf6,
|
||||
0xac, 0xb4, 0xf1, 0x0e, 0x6a, 0x19, 0x18, 0x73, 0xd2, 0x17, 0xd7, 0xc9, 0x35, 0xee, 0x8b, 0x6b,
|
||||
0xb6, 0x0e, 0xf3, 0x44, 0xb5, 0x97, 0xf8, 0xfe, 0xac, 0x45, 0x3c, 0x43, 0x7d, 0x39, 0xf7, 0x95,
|
||||
0xe3, 0x6e, 0x41, 0xc9, 0x80, 0x98, 0x55, 0xba, 0x8d, 0xc6, 0x29, 0x8d, 0x11, 0xdb, 0xf5, 0xe3,
|
||||
0x2e, 0x39, 0x2d, 0x78, 0x34, 0x46, 0xec, 0x44, 0x9e, 0x6b, 0xba, 0x92, 0x05, 0x8f, 0xc6, 0xee,
|
||||
0x5f, 0x0e, 0xd4, 0x27, 0x32, 0x81, 0xe7, 0x49, 0xd7, 0x4b, 0xc4, 0xd6, 0x61, 0x62, 0xe2, 0x9d,
|
||||
0x39, 0x10, 0xda, 0xef, 0xfa, 0xda, 0xa7, 0xa2, 0x36, 0xb7, 0x7f, 0x02, 0x43, 0xb5, 0x2d, 0x43,
|
||||
0x5a, 0xa6, 0xe2, 0x25, 0x26, 0xae, 0x7e, 0x3c, 0x0a, 0x43, 0x5e, 0x24, 0x98, 0xc6, 0xe6, 0x16,
|
||||
0x0d, 0x65, 0xac, 0x8f, 0x47, 0xea, 0x82, 0xcf, 0xd3, 0x4c, 0x06, 0xb9, 0x99, 0xdf, 0x97, 0x7e,
|
||||
0x97, 0x97, 0xb2, 0xf3, 0x88, 0x50, 0x44, 0x9b, 0x47, 0x07, 0xbc, 0x6c, 0x22, 0xc7, 0x31, 0x6a,
|
||||
0x8e, 0x63, 0x39, 0x16, 0x91, 0x1f, 0x75, 0x04, 0xaf, 0xd0, 0x4c, 0x06, 0x71, 0xef, 0x40, 0xdd,
|
||||
0x36, 0x56, 0x35, 0x94, 0x91, 0x12, 0xee, 0x13, 0xb8, 0xbb, 0x15, 0xa8, 0x8e, 0x8c, 0x22, 0xd1,
|
||||
0xd1, 0xb9, 0xed, 0xd6, 0x5d, 0x06, 0x96, 0xa5, 0x59, 0xf1, 0x43, 0xa8, 0xed, 0x07, 0x6a, 0x86,
|
||||
0xcc, 0x85, 0x05, 0x43, 0x30, 0x02, 0xdc, 0x72, 0x5f, 0x5c, 0x9b, 0x92, 0xaa, 0x7a, 0x34, 0x76,
|
||||
0x7f, 0x75, 0x60, 0x61, 0x2f, 0x1a, 0x8e, 0xf4, 0x81, 0x50, 0xca, 0xef, 0x09, 0xf6, 0x1a, 0x8a,
|
||||
0x7b, 0x51, 0xa0, 0xc9, 0x4f, 0x6d, 0xfd, 0xe9, 0xf4, 0x92, 0x20, 0x05, 0xd2, 0xac, 0x6a, 0xf7,
|
||||
0x5f, 0x1e, 0xa9, 0xb0, 0xfc, 0xb7, 0x7c, 0xed, 0xdb, 0x82, 0x7a, 0x34, 0x5d, 0x8d, 0x8c, 0x8c,
|
||||
0x10, 0xcd, 0xcd, 0x32, 0xcc, 0x93, 0x53, 0xf7, 0x31, 0x2c, 0xdd, 0xf6, 0x3e, 0x25, 0xb4, 0xe7,
|
||||
0x50, 0xcb, 0x78, 0x41, 0xc2, 0xf6, 0xd1, 0x0e, 0x11, 0x2a, 0x1e, 0x0e, 0x31, 0xd6, 0x74, 0x23,
|
||||
0x0b, 0x66, 0x0d, 0x4c, 0x3f, 0xb9, 0x4e, 0x33, 0xf8, 0xcb, 0x1c, 0x94, 0x13, 0x17, 0x2f, 0x26,
|
||||
0xe2, 0x7e, 0x94, 0x17, 0xf7, 0x87, 0x21, 0x7f, 0x09, 0xc5, 0xb4, 0x24, 0x73, 0x3b, 0xc5, 0x4e,
|
||||
0x37, 0x23, 0xa3, 0x6a, 0xfd, 0x06, 0x4a, 0x9e, 0x50, 0xd8, 0xba, 0x0a, 0xb3, 0x5a, 0x85, 0xe1,
|
||||
0xdc, 0x88, 0xad, 0x08, 0xe5, 0x27, 0x41, 0x2f, 0xf2, 0x4d, 0x51, 0xe7, 0xca, 0x0d, 0x27, 0x23,
|
||||
0x37, 0xc0, 0x4d, 0xba, 0x87, 0x50, 0x9b, 0x99, 0x69, 0x76, 0x04, 0x77, 0xf0, 0xe5, 0xf1, 0x83,
|
||||
0x48, 0xc4, 0x6d, 0x19, 0x9d, 0x07, 0x3d, 0x1b, 0xe9, 0x93, 0xbc, 0xde, 0x36, 0x41, 0xf6, 0x6e,
|
||||
0xab, 0xdd, 0x3f, 0x9c, 0x0f, 0x3c, 0xd2, 0x65, 0xc3, 0x1e, 0x35, 0x94, 0x41, 0xa4, 0x6d, 0x7d,
|
||||
0x66, 0x10, 0xdc, 0x56, 0x7b, 0x80, 0x1d, 0x85, 0xda, 0x79, 0x7b, 0xd0, 0xa5, 0x13, 0x8f, 0xc6,
|
||||
0xbc, 0x60, 0x90, 0xed, 0x68, 0x8c, 0x27, 0xfe, 0x46, 0x89, 0x98, 0xf2, 0x51, 0xf5, 0x68, 0x8c,
|
||||
0x0d, 0xfe, 0x50, 0x12, 0x6a, 0x2e, 0xb8, 0xb5, 0xc8, 0xdf, 0xa5, 0xb9, 0xd5, 0xe8, 0xef, 0xb2,
|
||||
0x8b, 0x4f, 0xcf, 0xa1, 0x44, 0xac, 0x6c, 0x9e, 0x1e, 0x32, 0x90, 0x77, 0xaa, 0xaf, 0xe9, 0x26,
|
||||
0x57, 0x3c, 0x1c, 0xba, 0x1b, 0x50, 0x4d, 0xcf, 0x92, 0x2d, 0xc2, 0xdc, 0x4e, 0x97, 0x92, 0x55,
|
||||
0xf7, 0xe6, 0x76, 0xba, 0x49, 0x19, 0xce, 0x7d, 0x58, 0x86, 0x85, 0x4c, 0x19, 0xbe, 0x80, 0xfa,
|
||||
0xc4, 0xa9, 0x22, 0xc9, 0x93, 0x97, 0xca, 0x3a, 0xa2, 0x31, 0x62, 0x6d, 0x19, 0x9a, 0xcf, 0xab,
|
||||
0xba, 0x47, 0x63, 0x77, 0x15, 0xea, 0x13, 0xe7, 0x39, 0xad, 0xfb, 0xba, 0x8f, 0xa0, 0x7e, 0xa2,
|
||||
0x7d, 0x3d, 0x52, 0xf9, 0x7d, 0xe1, 0x6f, 0x07, 0x16, 0x13, 0x8e, 0x6d, 0x0d, 0x5f, 0x40, 0x65,
|
||||
0x2c, 0x62, 0x2d, 0xae, 0xd2, 0x17, 0x87, 0xb7, 0xf0, 0xbb, 0xb1, 0x95, 0x7c, 0x37, 0xe2, 0xd1,
|
||||
0xbe, 0x25, 0x86, 0x97, 0x32, 0xd9, 0x4b, 0xa8, 0x28, 0xf2, 0x23, 0x14, 0x9d, 0x4d, 0x6d, 0xfd,
|
||||
0x41, 0x9e, 0xca, 0xae, 0x97, 0xf2, 0xd9, 0x1a, 0x14, 0x43, 0xd9, 0x53, 0x74, 0x82, 0xb5, 0xf5,
|
||||
0xff, 0xe7, 0xe9, 0xf6, 0x65, 0xcf, 0x23, 0x22, 0x7b, 0x05, 0x95, 0x4b, 0x3f, 0x8e, 0x82, 0xa8,
|
||||
0xa7, 0xe8, 0xfb, 0x0d, 0xef, 0x5a, 0x8e, 0xe8, 0x9d, 0xe1, 0x79, 0xa9, 0xc0, 0xad, 0x63, 0x99,
|
||||
0x9f, 0x4b, 0x9b, 0x13, 0xf7, 0x7b, 0x6c, 0x7a, 0x68, 0xda, 0xf0, 0xf7, 0xa0, 0x6e, 0x8a, 0xf9,
|
||||
0xad, 0x88, 0x55, 0x20, 0x23, 0xdb, 0x05, 0x56, 0x67, 0x7c, 0xd5, 0x26, 0x54, 0x6f, 0x52, 0xe9,
|
||||
0xbe, 0xb7, 0x3d, 0x3e, 0x01, 0xf0, 0x59, 0x1a, 0xfa, 0x9d, 0xbe, 0xdf, 0x4b, 0xce, 0x29, 0x31,
|
||||
0x71, 0x66, 0x6c, 0xd7, 0x33, 0xef, 0x59, 0x62, 0xe2, 0xe7, 0x5f, 0x2c, 0xc6, 0x01, 0x4d, 0x99,
|
||||
0xaf, 0xd8, 0xd4, 0x5e, 0xff, 0xb3, 0x08, 0xd0, 0x4e, 0xf7, 0xc3, 0x8e, 0x61, 0x9e, 0xd6, 0x63,
|
||||
0xb3, 0x3e, 0xc1, 0x6d, 0xdc, 0x8d, 0xd5, 0x99, 0x1c, 0x9b, 0x8c, 0x37, 0x50, 0x32, 0xa7, 0xc5,
|
||||
0xf2, 0x9a, 0x4a, 0xb6, 0xbe, 0x1a, 0x8f, 0x67, 0x93, 0x8c, 0xd3, 0x67, 0x0e, 0xf3, 0x6c, 0xcb,
|
||||
0xc9, 0xdb, 0x68, 0xf6, 0x15, 0xca, 0xdb, 0xe8, 0x44, 0xfb, 0x6e, 0x3a, 0xec, 0x5b, 0x28, 0xed,
|
||||
0x45, 0x63, 0xd9, 0x17, 0xec, 0x93, 0xe9, 0x82, 0xc4, 0xdf, 0xec, 0xe9, 0xa6, 0xf3, 0xcc, 0x61,
|
||||
0x07, 0x50, 0xc4, 0xd7, 0x92, 0xe5, 0xb4, 0xfe, 0xcc, 0x53, 0xdb, 0x70, 0x67, 0x51, 0x6c, 0x16,
|
||||
0xdf, 0x03, 0xdc, 0xbc, 0xd9, 0xec, 0xd3, 0x9c, 0x97, 0xf0, 0xf6, 0xe3, 0xdf, 0x68, 0x7e, 0x9c,
|
||||
0x68, 0x17, 0x38, 0xc0, 0x07, 0xeb, 0x5c, 0xb2, 0xdc, 0xa7, 0x2a, 0x2d, 0xf7, 0x86, 0x3b, 0x8b,
|
||||
0x62, 0xdc, 0x6d, 0x16, 0x7f, 0x98, 0x1b, 0x9e, 0x9d, 0x95, 0xe8, 0x1f, 0xe0, 0xf3, 0x7f, 0x02,
|
||||
0x00, 0x00, 0xff, 0xff, 0x10, 0xcd, 0x98, 0x21, 0x68, 0x0e, 0x00, 0x00,
|
||||
// 1653 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xef, 0x72, 0x1b, 0x49,
|
||||
0x11, 0x67, 0x25, 0x59, 0x7f, 0x5a, 0x96, 0x93, 0x0c, 0xe1, 0x98, 0x13, 0xc7, 0xc5, 0xd9, 0xe4,
|
||||
0x0e, 0x55, 0x1d, 0x25, 0xdf, 0xf9, 0x38, 0x72, 0x77, 0x09, 0x55, 0xd8, 0x92, 0x55, 0x16, 0x15,
|
||||
0xff, 0x61, 0x95, 0xe4, 0x0a, 0xa8, 0xe2, 0x6a, 0x2d, 0x8d, 0xe5, 0x2d, 0xad, 0x76, 0xc4, 0xce,
|
||||
0x48, 0xb6, 0xf9, 0xc4, 0x13, 0xf0, 0x0a, 0x7c, 0xa6, 0x78, 0x04, 0x3e, 0xf1, 0x0e, 0xbc, 0x07,
|
||||
0x3c, 0x02, 0xd5, 0x3d, 0xb3, 0xd2, 0x2a, 0xd2, 0x2a, 0x71, 0xf1, 0x49, 0xd3, 0xbd, 0xbf, 0x5f,
|
||||
0x77, 0x4f, 0x4f, 0x4f, 0xf7, 0xae, 0xe0, 0x7e, 0x5f, 0x46, 0x3a, 0x96, 0x61, 0x28, 0xe2, 0xe6,
|
||||
0x24, 0x96, 0x5a, 0xb2, 0x87, 0x17, 0xd3, 0x20, 0x1c, 0xdc, 0x34, 0x53, 0x0f, 0x66, 0x5f, 0xd4,
|
||||
0x9f, 0x0f, 0x03, 0x7d, 0x35, 0xbd, 0x68, 0xf6, 0xe5, 0x78, 0x6f, 0x2c, 0x2f, 0x6e, 0xf7, 0x08,
|
||||
0x35, 0x0a, 0xf4, 0x9e, 0x3f, 0x09, 0xf6, 0x94, 0x88, 0x67, 0x41, 0x5f, 0xa8, 0x3d, 0x4b, 0x4a,
|
||||
0x7e, 0x8d, 0x49, 0xf7, 0x8f, 0xb0, 0x7d, 0x88, 0x70, 0x4f, 0xfc, 0x69, 0x2a, 0x94, 0x66, 0xf7,
|
||||
0x21, 0xef, 0x89, 0x4b, 0xee, 0xec, 0x3a, 0x8d, 0x8a, 0x87, 0x4b, 0xf6, 0x02, 0x4a, 0x67, 0x13,
|
||||
0x1d, 0xc8, 0x48, 0xf1, 0xdc, 0xae, 0xd3, 0xa8, 0xee, 0xbb, 0xcd, 0x75, 0x61, 0x34, 0xc9, 0x8c,
|
||||
0x45, 0x7a, 0x09, 0xc5, 0xfd, 0x1b, 0x58, 0x07, 0x56, 0xc1, 0x76, 0xa1, 0xda, 0x92, 0x91, 0x16,
|
||||
0x37, 0xfa, 0xdc, 0xd7, 0x57, 0xd6, 0x51, 0x5a, 0xc5, 0x3e, 0x85, 0x9d, 0xb6, 0xec, 0x8f, 0x44,
|
||||
0x7c, 0x19, 0x84, 0xe2, 0xd4, 0x1f, 0x0b, 0xf2, 0x5b, 0xf1, 0xde, 0xd2, 0xb2, 0x8f, 0xa0, 0x72,
|
||||
0x1e, 0x07, 0x91, 0xee, 0x4c, 0xa3, 0x3e, 0xcf, 0x13, 0x64, 0xa1, 0x60, 0x7f, 0x80, 0x1a, 0xa2,
|
||||
0x06, 0xd6, 0xb2, 0xe2, 0x85, 0xdd, 0x7c, 0xa3, 0xba, 0xff, 0xd5, 0xbb, 0x83, 0x6f, 0x2e, 0xf1,
|
||||
0x8e, 0x22, 0x1d, 0xdf, 0x7a, 0xcb, 0xb6, 0xd8, 0x43, 0xd8, 0x3a, 0x08, 0x43, 0x79, 0xcd, 0xb7,
|
||||
0x76, 0xf3, 0x8d, 0x8a, 0x67, 0x04, 0xc6, 0xa1, 0x74, 0xa0, 0xb5, 0x50, 0x5a, 0xf1, 0x22, 0xe9,
|
||||
0x13, 0x91, 0x9d, 0x41, 0x85, 0x3c, 0x1c, 0xc4, 0x43, 0xc5, 0x4b, 0x14, 0xc8, 0x17, 0xef, 0x11,
|
||||
0xc8, 0x9c, 0x63, 0x82, 0x58, 0xd8, 0x60, 0x47, 0x50, 0x69, 0xf9, 0xfd, 0x2b, 0xd1, 0x89, 0xe5,
|
||||
0x98, 0x97, 0xc9, 0xe0, 0xcf, 0xd6, 0x1b, 0x24, 0x98, 0x35, 0x68, 0xcd, 0xcc, 0x99, 0xec, 0x00,
|
||||
0x4a, 0x24, 0xbc, 0x92, 0xbc, 0x72, 0x37, 0x23, 0x09, 0x8f, 0xb9, 0xb0, 0xdd, 0x1a, 0xc6, 0x72,
|
||||
0x3a, 0x39, 0xf7, 0x63, 0x11, 0x69, 0x0e, 0x74, 0x10, 0x4b, 0x3a, 0xf6, 0x1c, 0x4a, 0x47, 0x37,
|
||||
0x13, 0x19, 0x6b, 0xc5, 0xab, 0xe4, 0xe6, 0xf1, 0x7a, 0x37, 0x06, 0x64, 0x1d, 0x58, 0x06, 0xfb,
|
||||
0x18, 0xe0, 0xe8, 0x46, 0xc7, 0xfe, 0xb1, 0xc4, 0xc4, 0x6e, 0x53, 0x62, 0x53, 0x1a, 0x2c, 0xa8,
|
||||
0xee, 0xd8, 0x1f, 0x8a, 0x6e, 0xbb, 0x13, 0x84, 0x82, 0xd7, 0x4c, 0x41, 0xa5, 0x54, 0xac, 0x03,
|
||||
0xc5, 0x97, 0xfe, 0x85, 0x08, 0x15, 0xdf, 0x21, 0xef, 0xcd, 0xf7, 0x48, 0xbd, 0x21, 0x98, 0x50,
|
||||
0x2c, 0x1b, 0x3d, 0x9d, 0x0a, 0x7d, 0x2d, 0xe3, 0xd1, 0x89, 0x1c, 0x08, 0x7e, 0xcf, 0x78, 0x4a,
|
||||
0xa9, 0xd8, 0x53, 0xa8, 0x9d, 0x4a, 0x93, 0xde, 0x20, 0xd4, 0x22, 0xe6, 0xf7, 0x29, 0xdc, 0x65,
|
||||
0x25, 0x15, 0x6e, 0xe8, 0xeb, 0x4b, 0x19, 0x8f, 0x15, 0x7f, 0x40, 0x88, 0x85, 0x02, 0x6b, 0xeb,
|
||||
0xb7, 0xd3, 0x40, 0x68, 0xce, 0x76, 0x9d, 0x46, 0xd9, 0x33, 0x02, 0xfb, 0x25, 0x94, 0x7a, 0xa2,
|
||||
0x1f, 0x0b, 0xad, 0xf8, 0x0f, 0x69, 0x13, 0x1f, 0xad, 0xdf, 0x84, 0x01, 0x79, 0x09, 0x18, 0x6b,
|
||||
0xb2, 0x77, 0x35, 0xee, 0x05, 0x7f, 0x16, 0xfc, 0xe1, 0xae, 0xd3, 0xc8, 0x7b, 0x89, 0xc8, 0x3e,
|
||||
0x83, 0x7c, 0xaf, 0x77, 0xcc, 0x7f, 0x44, 0xd6, 0x3e, 0xcc, 0xb0, 0xd6, 0x3b, 0xf6, 0x10, 0xc5,
|
||||
0x18, 0x14, 0x5e, 0xf9, 0x43, 0xc5, 0x3f, 0xa0, 0x68, 0x69, 0xcd, 0x3e, 0x80, 0xe2, 0x2b, 0x3f,
|
||||
0x1e, 0x0a, 0xcd, 0x7f, 0x4c, 0x99, 0xb0, 0x12, 0xfb, 0x06, 0x4a, 0xaf, 0xc3, 0x60, 0x1c, 0x68,
|
||||
0xc5, 0x39, 0x35, 0x8c, 0x47, 0xeb, 0x8d, 0x1b, 0xd0, 0xd9, 0x44, 0x7b, 0x09, 0x9e, 0x3d, 0x83,
|
||||
0xc2, 0xd9, 0x44, 0x2b, 0xfe, 0x21, 0xf1, 0x9e, 0x64, 0x14, 0xa3, 0x1c, 0x8f, 0x65, 0x94, 0x74,
|
||||
0x1a, 0x22, 0xd4, 0x7f, 0x0d, 0x6c, 0xf5, 0xd6, 0x62, 0x33, 0x1b, 0x89, 0xdb, 0xa4, 0x99, 0x8d,
|
||||
0xc4, 0x2d, 0x26, 0x77, 0xe6, 0x87, 0xd3, 0xa4, 0xa5, 0x18, 0xe1, 0xdb, 0xdc, 0xd7, 0x4e, 0xfd,
|
||||
0x05, 0xec, 0x2c, 0x5f, 0xb7, 0x3b, 0xb1, 0xbf, 0x81, 0x6a, 0xaa, 0x62, 0xee, 0x42, 0x75, 0xff,
|
||||
0xe5, 0x40, 0x35, 0x55, 0xf8, 0x94, 0xea, 0xdb, 0x89, 0xb0, 0x64, 0x5a, 0xb3, 0x43, 0xd8, 0x3a,
|
||||
0xd0, 0x3a, 0xc6, 0x0e, 0x8c, 0xa7, 0xf5, 0xf3, 0x77, 0x5e, 0x9f, 0x26, 0xc1, 0x4d, 0xf9, 0x1a,
|
||||
0x2a, 0x56, 0x6f, 0x5b, 0x28, 0x1d, 0x44, 0x3e, 0x26, 0xce, 0x36, 0xcc, 0xb4, 0xaa, 0xfe, 0x35,
|
||||
0xc0, 0x82, 0x76, 0xa7, 0x3d, 0xfc, 0xc3, 0x81, 0x07, 0x2b, 0x3d, 0x62, 0xed, 0x4e, 0x8e, 0x97,
|
||||
0x77, 0xb2, 0xff, 0x9e, 0xfd, 0x66, 0x75, 0x3f, 0xff, 0x47, 0xb4, 0xa6, 0xf2, 0xd9, 0x0e, 0xe4,
|
||||
0xba, 0x6d, 0xcb, 0xc8, 0x75, 0xdb, 0x48, 0xc0, 0xf9, 0x63, 0x42, 0xab, 0x78, 0x46, 0x70, 0x3b,
|
||||
0x50, 0x34, 0x77, 0x69, 0x05, 0x5f, 0x87, 0x32, 0xb6, 0x17, 0x1a, 0x63, 0xc6, 0xc7, 0x5c, 0xc6,
|
||||
0x70, 0x8e, 0xa2, 0x99, 0x4d, 0x32, 0x2e, 0xdd, 0xbf, 0x3b, 0x50, 0x99, 0x57, 0x3c, 0x6b, 0x41,
|
||||
0x91, 0xe2, 0x51, 0xdc, 0xa1, 0x3c, 0x7c, 0xf6, 0x8e, 0x2b, 0xd2, 0x7c, 0x43, 0x68, 0xdb, 0x8f,
|
||||
0x0c, 0xb5, 0xfe, 0x1d, 0x54, 0x53, 0xea, 0x35, 0x29, 0xd8, 0x4f, 0xa7, 0x20, 0xb3, 0x65, 0x18,
|
||||
0x27, 0xe9, 0x04, 0xb5, 0xa1, 0x68, 0x94, 0x78, 0x84, 0x34, 0x81, 0xed, 0x11, 0xd2, 0xdc, 0x65,
|
||||
0x50, 0x38, 0xf6, 0xe3, 0x01, 0x19, 0xcd, 0x7b, 0xb4, 0x46, 0x5d, 0x4f, 0x5e, 0x6a, 0xda, 0x70,
|
||||
0xde, 0xa3, 0xb5, 0xfb, 0x1f, 0x07, 0x6a, 0x4b, 0x77, 0x15, 0x9b, 0x11, 0xdd, 0x31, 0x11, 0x5b,
|
||||
0x83, 0x89, 0x88, 0x53, 0xe4, 0x44, 0x68, 0x7f, 0xe0, 0x6b, 0x9f, 0xba, 0xb8, 0xc9, 0xe7, 0x92,
|
||||
0x0e, 0xd9, 0xb6, 0x8f, 0x92, 0x9b, 0xb2, 0x97, 0x88, 0xe8, 0xfd, 0x7c, 0x1a, 0x86, 0xbc, 0x40,
|
||||
0x6a, 0x5a, 0x9b, 0xb1, 0x81, 0xf7, 0xe1, 0x7c, 0xaa, 0xae, 0xf8, 0x16, 0x3d, 0x49, 0x69, 0x16,
|
||||
0xcf, 0x5f, 0x4a, 0x7f, 0xc0, 0x8b, 0xe9, 0xe7, 0xa8, 0xa1, 0x1d, 0x1d, 0x9e, 0x9d, 0xf0, 0x92,
|
||||
0xd9, 0x39, 0xae, 0x91, 0x73, 0x1e, 0xcb, 0x99, 0x88, 0xfc, 0xa8, 0x2f, 0x78, 0x99, 0x9e, 0xa4,
|
||||
0x34, 0xee, 0x3d, 0xa8, 0xd9, 0x97, 0x29, 0x35, 0x91, 0x91, 0x12, 0xee, 0x27, 0xf0, 0xa0, 0x1d,
|
||||
0xa8, 0xbe, 0x8c, 0x22, 0xd1, 0xd7, 0x99, 0xaf, 0x58, 0xee, 0x43, 0x60, 0x69, 0x98, 0x25, 0x3f,
|
||||
0x82, 0xea, 0xcb, 0x40, 0x6d, 0xa0, 0xb9, 0xb0, 0x6d, 0x00, 0x86, 0x80, 0x21, 0x8f, 0xc4, 0xad,
|
||||
0x29, 0xa9, 0x8a, 0x47, 0x6b, 0xf7, 0xaf, 0x0e, 0x6c, 0x77, 0xa3, 0xc9, 0x54, 0x9f, 0x08, 0xa5,
|
||||
0xfc, 0xa1, 0x60, 0x2f, 0xa0, 0xd0, 0x8d, 0x02, 0x4d, 0x76, 0xaa, 0xfb, 0x9f, 0xae, 0x2f, 0x09,
|
||||
0x62, 0x20, 0xcc, 0xb2, 0x8e, 0x7f, 0xe0, 0x11, 0x0b, 0x1b, 0x74, 0xdb, 0xd7, 0xbe, 0x2d, 0xa8,
|
||||
0x8c, 0x31, 0x8e, 0x88, 0x14, 0x11, 0xc5, 0xc3, 0x12, 0x6c, 0x91, 0x51, 0xf7, 0x29, 0xdc, 0x7f,
|
||||
0xdb, 0xfa, 0x9a, 0xad, 0x7d, 0x09, 0xd5, 0x94, 0x15, 0xba, 0x4e, 0x67, 0x1d, 0x02, 0x94, 0x3d,
|
||||
0x5c, 0xe2, 0x5e, 0xe7, 0x81, 0x6c, 0x1b, 0x1f, 0x98, 0x7e, 0x32, 0x3d, 0xcf, 0xe0, 0x5f, 0x72,
|
||||
0x50, 0x4a, 0x4c, 0x3c, 0x5b, 0xda, 0xf7, 0xe3, 0xac, 0x7d, 0xaf, 0x6e, 0xf9, 0x2b, 0x28, 0xcc,
|
||||
0x4b, 0x32, 0x73, 0x96, 0x75, 0x06, 0x29, 0x1a, 0x55, 0xeb, 0xaf, 0xa0, 0xe8, 0x09, 0x85, 0x73,
|
||||
0x37, 0xbf, 0x69, 0x98, 0x19, 0xcc, 0x82, 0x6c, 0x49, 0x48, 0xef, 0x05, 0xc3, 0xc8, 0x37, 0x45,
|
||||
0x9d, 0x49, 0x37, 0x98, 0x14, 0xdd, 0x28, 0x16, 0xe9, 0x9e, 0x40, 0x75, 0x63, 0xa6, 0xd9, 0x19,
|
||||
0xdc, 0xc3, 0xa1, 0xe9, 0x07, 0x91, 0x88, 0x5b, 0x32, 0xba, 0x0c, 0x86, 0x76, 0xa7, 0x9f, 0x64,
|
||||
0x4d, 0xdf, 0x25, 0xb0, 0xf7, 0x36, 0xdb, 0xfd, 0xa7, 0xb3, 0x62, 0x91, 0x2e, 0x1b, 0xf6, 0xa8,
|
||||
0x89, 0x0c, 0x22, 0x6d, 0xeb, 0x33, 0xa5, 0xc1, 0xb0, 0x5a, 0xe3, 0x81, 0x6d, 0xbc, 0xb8, 0x5c,
|
||||
0x34, 0xd0, 0xbc, 0x6d, 0xa0, 0x78, 0xe2, 0xaf, 0x95, 0x88, 0x29, 0x1f, 0x15, 0x8f, 0xd6, 0xf8,
|
||||
0x0a, 0x72, 0x2a, 0x49, 0x6b, 0x2e, 0xb8, 0x95, 0xc8, 0xde, 0xb5, 0xb9, 0xd5, 0x68, 0xef, 0x7a,
|
||||
0x80, 0xcd, 0xfd, 0x54, 0xa2, 0xae, 0x64, 0xde, 0xaa, 0x48, 0x40, 0xdc, 0x2b, 0x7d, 0x4b, 0x37,
|
||||
0xb9, 0xec, 0xe1, 0xd2, 0x3d, 0x80, 0xca, 0xfc, 0x2c, 0xb1, 0xe3, 0x77, 0x06, 0x94, 0xac, 0x9a,
|
||||
0x97, 0xeb, 0x0c, 0x92, 0x32, 0xcc, 0xad, 0x96, 0x61, 0x3e, 0x55, 0x86, 0xcf, 0xa0, 0xb6, 0x74,
|
||||
0xaa, 0x08, 0xf2, 0xe4, 0xb5, 0xb2, 0x86, 0x68, 0x8d, 0xba, 0x96, 0x0c, 0xcd, 0x27, 0x55, 0xcd,
|
||||
0xa3, 0xb5, 0xfb, 0x04, 0x6a, 0x4b, 0xe7, 0xb9, 0xae, 0xfb, 0xba, 0x8f, 0xa1, 0xd6, 0xd3, 0xbe,
|
||||
0x9e, 0xaa, 0xec, 0xbe, 0xf0, 0x5f, 0x07, 0x76, 0x12, 0x8c, 0x6d, 0x0d, 0xbf, 0x80, 0xf2, 0x4c,
|
||||
0xc4, 0x5a, 0xdc, 0xcc, 0x27, 0x0e, 0x6f, 0xe2, 0xb7, 0x62, 0x33, 0xf9, 0x56, 0xc4, 0xa3, 0x7d,
|
||||
0x43, 0x08, 0x6f, 0x8e, 0x64, 0xdf, 0x42, 0x59, 0x91, 0x1d, 0x91, 0xcc, 0xeb, 0x8f, 0xb3, 0x58,
|
||||
0xd6, 0xdf, 0x1c, 0xcf, 0xf6, 0xa0, 0x10, 0xca, 0xa1, 0xa2, 0x13, 0xac, 0xee, 0xff, 0x24, 0x8b,
|
||||
0xf7, 0x52, 0x0e, 0x3d, 0x02, 0xb2, 0xe7, 0x50, 0xbe, 0xf6, 0xe3, 0x28, 0x88, 0x86, 0xc9, 0xb7,
|
||||
0xda, 0xa3, 0x2c, 0xd2, 0x77, 0x06, 0xe7, 0xcd, 0x09, 0x6e, 0x0d, 0xcb, 0xfc, 0x52, 0xda, 0x9c,
|
||||
0xb8, 0xbf, 0xc3, 0xa6, 0x87, 0xa2, 0xdd, 0x7e, 0x17, 0x6a, 0xa6, 0x98, 0xdf, 0x88, 0x58, 0xe1,
|
||||
0xdb, 0x8f, 0xb3, 0xe9, 0x52, 0x1d, 0xa6, 0xa1, 0xde, 0x32, 0xd3, 0xfd, 0xde, 0xf6, 0xf8, 0x44,
|
||||
0x81, 0x63, 0x69, 0xe2, 0xf7, 0x47, 0xfe, 0x30, 0x39, 0xa7, 0x44, 0xc4, 0x27, 0x33, 0xeb, 0xcf,
|
||||
0xcc, 0xb3, 0x44, 0xc4, 0x57, 0x87, 0x58, 0xcc, 0x02, 0xb5, 0x78, 0x11, 0x9b, 0xcb, 0xfb, 0xff,
|
||||
0x2e, 0x00, 0xb4, 0xe6, 0xf1, 0xb0, 0x73, 0xd8, 0x22, 0x7f, 0x6c, 0xd3, 0x67, 0xb7, 0xdd, 0x77,
|
||||
0xfd, 0xc9, 0x46, 0x8c, 0x4d, 0xc6, 0x6b, 0x28, 0x9a, 0xd3, 0x62, 0x59, 0x4d, 0x25, 0x5d, 0x5f,
|
||||
0xf5, 0xa7, 0x9b, 0x41, 0xc6, 0xe8, 0xe7, 0x0e, 0xf3, 0x6c, 0xcb, 0xc9, 0x0a, 0x34, 0x3d, 0x85,
|
||||
0xb2, 0x02, 0x5d, 0x6a, 0xdf, 0x0d, 0x87, 0xfd, 0x06, 0x8a, 0xdd, 0x68, 0x26, 0x47, 0x82, 0xfd,
|
||||
0x74, 0x3d, 0x21, 0xb1, 0xb7, 0xf9, 0x71, 0xc3, 0xf9, 0xdc, 0x61, 0x27, 0x50, 0xc0, 0x69, 0xc9,
|
||||
0x32, 0x5a, 0x7f, 0x6a, 0xd4, 0xd6, 0xdd, 0x4d, 0x10, 0x9b, 0xc5, 0xef, 0x01, 0x16, 0x33, 0x9b,
|
||||
0x65, 0x7c, 0x37, 0xaf, 0x0c, 0xff, 0x7a, 0xe3, 0xdd, 0x40, 0xeb, 0xe0, 0x04, 0x07, 0xd6, 0xa5,
|
||||
0x64, 0x99, 0xa3, 0x6a, 0x5e, 0xee, 0x75, 0x77, 0x13, 0xc4, 0x98, 0x3b, 0x2c, 0xfc, 0x3e, 0x37,
|
||||
0xb9, 0xb8, 0x28, 0xd2, 0xbf, 0x3e, 0x5f, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x47, 0x50, 0x7d,
|
||||
0xc5, 0x5c, 0x12, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
|
@@ -25,32 +25,54 @@ message BuildOptions {
|
||||
string ContextPath = 1;
|
||||
string DockerfileName = 2;
|
||||
string PrintFunc = 3;
|
||||
map<string, string> NamedContexts = 4;
|
||||
|
||||
repeated string Allow = 4;
|
||||
repeated string Attests = 5; // TODO
|
||||
repeated string BuildArgs = 6;
|
||||
repeated string CacheFrom = 7;
|
||||
repeated string CacheTo = 8;
|
||||
string CgroupParent = 9;
|
||||
repeated string Contexts = 10;
|
||||
repeated string ExtraHosts = 11;
|
||||
string ImageIDFile = 12;
|
||||
repeated string Labels = 13;
|
||||
string NetworkMode = 14;
|
||||
repeated string NoCacheFilter = 15;
|
||||
repeated string Outputs = 16;
|
||||
repeated string Allow = 5;
|
||||
repeated string Attests = 6; // TODO
|
||||
map<string, string> BuildArgs = 7;
|
||||
repeated CacheOptionsEntry CacheFrom = 8;
|
||||
repeated CacheOptionsEntry CacheTo = 9;
|
||||
string CgroupParent = 10;
|
||||
repeated ExportEntry Exports = 11;
|
||||
repeated string ExtraHosts = 12;
|
||||
string ImageIDFile = 13;
|
||||
map<string, string> Labels = 14;
|
||||
string NetworkMode = 15;
|
||||
repeated string NoCacheFilter = 16;
|
||||
repeated string Platforms = 17;
|
||||
bool Quiet = 18;
|
||||
repeated string Secrets = 19;
|
||||
repeated Secret Secrets = 19;
|
||||
int64 ShmSize = 20;
|
||||
repeated string SSH = 21;
|
||||
repeated SSH SSH = 21;
|
||||
repeated string Tags = 22;
|
||||
string Target = 23;
|
||||
UlimitOpt Ulimits = 24;
|
||||
// string Invoke: provided via Invoke API
|
||||
|
||||
CommonOptions Opts = 25;
|
||||
}
|
||||
|
||||
message ExportEntry {
|
||||
string Type = 1;
|
||||
map<string, string> Attrs = 2;
|
||||
string Destination = 3;
|
||||
}
|
||||
|
||||
message CacheOptionsEntry {
|
||||
string Type = 1;
|
||||
map<string, string> Attrs = 2;
|
||||
}
|
||||
|
||||
message SSH {
|
||||
string ID = 1;
|
||||
repeated string Paths = 2;
|
||||
}
|
||||
|
||||
message Secret {
|
||||
string ID = 1;
|
||||
string FilePath = 2;
|
||||
string Env = 3;
|
||||
}
|
||||
|
||||
message UlimitOpt {
|
||||
map<string, Ulimit> values = 1;
|
||||
}
|
||||
|
100
controller/pb/export.go
Normal file
100
controller/pb/export.go
Normal file
@@ -0,0 +1,100 @@
|
||||
package pb
|
||||
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
"github.com/containerd/console"
|
||||
"github.com/moby/buildkit/client"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func CreateExports(entries []*ExportEntry) ([]client.ExportEntry, error) {
|
||||
var outs []client.ExportEntry
|
||||
if len(entries) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
for _, entry := range entries {
|
||||
if entry.Type == "" {
|
||||
return nil, errors.Errorf("type is required for output")
|
||||
}
|
||||
|
||||
out := client.ExportEntry{
|
||||
Type: entry.Type,
|
||||
Attrs: map[string]string{},
|
||||
}
|
||||
for k, v := range entry.Attrs {
|
||||
out.Attrs[k] = v
|
||||
}
|
||||
|
||||
supportFile := false
|
||||
supportDir := false
|
||||
switch out.Type {
|
||||
case client.ExporterLocal:
|
||||
supportDir = true
|
||||
case client.ExporterTar:
|
||||
supportFile = true
|
||||
case client.ExporterOCI, client.ExporterDocker:
|
||||
tar, err := strconv.ParseBool(out.Attrs["tar"])
|
||||
if err != nil {
|
||||
tar = true
|
||||
}
|
||||
supportFile = tar
|
||||
supportDir = !tar
|
||||
case "registry":
|
||||
out.Type = client.ExporterImage
|
||||
}
|
||||
|
||||
if supportDir {
|
||||
if entry.Destination == "" {
|
||||
return nil, errors.Errorf("dest is required for %s exporter", out.Type)
|
||||
}
|
||||
if entry.Destination == "-" {
|
||||
return nil, errors.Errorf("dest cannot be stdout for %s exporter", out.Type)
|
||||
}
|
||||
|
||||
fi, err := os.Stat(entry.Destination)
|
||||
if err != nil && !os.IsNotExist(err) {
|
||||
return nil, errors.Wrapf(err, "invalid destination directory: %s", entry.Destination)
|
||||
}
|
||||
if err == nil && !fi.IsDir() {
|
||||
return nil, errors.Errorf("destination directory %s is a file", entry.Destination)
|
||||
}
|
||||
out.OutputDir = entry.Destination
|
||||
}
|
||||
if supportFile {
|
||||
if entry.Destination == "" && out.Type != client.ExporterDocker {
|
||||
entry.Destination = "-"
|
||||
}
|
||||
if entry.Destination == "-" {
|
||||
if _, err := console.ConsoleFromFile(os.Stdout); err == nil {
|
||||
return nil, errors.Errorf("dest file is required for %s exporter. refusing to write to console", out.Type)
|
||||
}
|
||||
out.Output = wrapWriteCloser(os.Stdout)
|
||||
} else if entry.Destination != "" {
|
||||
fi, err := os.Stat(entry.Destination)
|
||||
if err != nil && !os.IsNotExist(err) {
|
||||
return nil, errors.Wrapf(err, "invalid destination file: %s", entry.Destination)
|
||||
}
|
||||
if err == nil && fi.IsDir() {
|
||||
return nil, errors.Errorf("destination file %s is a directory", entry.Destination)
|
||||
}
|
||||
f, err := os.Create(entry.Destination)
|
||||
if err != nil {
|
||||
return nil, errors.Errorf("failed to open %s", err)
|
||||
}
|
||||
out.Output = wrapWriteCloser(f)
|
||||
}
|
||||
}
|
||||
|
||||
outs = append(outs, out)
|
||||
}
|
||||
return outs, nil
|
||||
}
|
||||
|
||||
func wrapWriteCloser(wc io.WriteCloser) func(map[string]string) (io.WriteCloser, error) {
|
||||
return func(map[string]string) (io.WriteCloser, error) {
|
||||
return wc, nil
|
||||
}
|
||||
}
|
22
controller/pb/secrets.go
Normal file
22
controller/pb/secrets.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package pb
|
||||
|
||||
import (
|
||||
"github.com/moby/buildkit/session"
|
||||
"github.com/moby/buildkit/session/secrets/secretsprovider"
|
||||
)
|
||||
|
||||
func CreateSecrets(secrets []*Secret) (session.Attachable, error) {
|
||||
fs := make([]secretsprovider.Source, 0, len(secrets))
|
||||
for _, secret := range secrets {
|
||||
fs = append(fs, secretsprovider.Source{
|
||||
ID: secret.ID,
|
||||
FilePath: secret.FilePath,
|
||||
Env: secret.Env,
|
||||
})
|
||||
}
|
||||
store, err := secretsprovider.NewStore(fs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return secretsprovider.NewSecretProvider(store), nil
|
||||
}
|
18
controller/pb/ssh.go
Normal file
18
controller/pb/ssh.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package pb
|
||||
|
||||
import (
|
||||
"github.com/moby/buildkit/session"
|
||||
"github.com/moby/buildkit/session/sshforward/sshprovider"
|
||||
)
|
||||
|
||||
func CreateSSH(ssh []*SSH) (session.Attachable, error) {
|
||||
configs := make([]sshprovider.AgentConfig, 0, len(ssh))
|
||||
for _, ssh := range ssh {
|
||||
cfg := sshprovider.AgentConfig{
|
||||
ID: ssh.ID,
|
||||
Paths: append([]string{}, ssh.Paths...),
|
||||
}
|
||||
configs = append(configs, cfg)
|
||||
}
|
||||
return sshprovider.NewSSHAgentProvider(configs)
|
||||
}
|
Reference in New Issue
Block a user