| package executor |
| |
| import ( |
| "context" |
| "io" |
| "net" |
| |
| "github.com/moby/buildkit/snapshot" |
| "github.com/moby/buildkit/solver/pb" |
| ) |
| |
| type Meta struct { |
| Args []string |
| Env []string |
| User string |
| Cwd string |
| Hostname string |
| Tty bool |
| ReadonlyRootFS bool |
| ExtraHosts []HostIP |
| NetMode pb.NetMode |
| SecurityMode pb.SecurityMode |
| } |
| |
| type Mountable interface { |
| Mount(ctx context.Context, readonly bool) (snapshot.Mountable, error) |
| } |
| |
| type Mount struct { |
| Src Mountable |
| Selector string |
| Dest string |
| Readonly bool |
| } |
| |
| type WinSize struct { |
| Rows uint32 |
| Cols uint32 |
| } |
| |
| type ProcessInfo struct { |
| Meta Meta |
| Stdin io.ReadCloser |
| Stdout, Stderr io.WriteCloser |
| Resize <-chan WinSize |
| } |
| |
| type Executor interface { |
| // Run will start a container for the given process with rootfs, mounts. |
| // `id` is an optional name for the container so it can be referenced later via Exec. |
| // `started` is an optional channel that will be closed when the container setup completes and has started running. |
| Run(ctx context.Context, id string, rootfs Mount, mounts []Mount, process ProcessInfo, started chan<- struct{}) error |
| // Exec will start a process in container matching `id`. An error will be returned |
| // if the container failed to start (via Run) or has exited before Exec is called. |
| Exec(ctx context.Context, id string, process ProcessInfo) error |
| } |
| |
| type HostIP struct { |
| Host string |
| IP net.IP |
| } |