Documentation ¶
Index ¶
- Variables
- func AllCmds() []string
- func CheckFileExist(path string) bool
- func CheckTrustedRepositories(image, user, pass string) error
- func CopyFileWithProgress(src, dst string, logger event.Logger) error
- func CopyToFile(outfile string, r io.Reader) error
- func CopyWithProgress(srcFile SrcFile, dstFile DstFile, allSize int64, logger event.Logger) (err error)
- func EncodeAuthToBase64(authConfig types.AuthConfig) (string, error)
- func EncodePrivateKey(private *rsa.PrivateKey) []byte
- func EncodeSSHKey(public *rsa.PublicKey) ([]byte, error)
- func GenSaveImageName(name string) string
- func GenerateKey(bits int) (*rsa.PrivateKey, *rsa.PublicKey, error)
- func GetCodeSourceDir(RepositoryURL, branch, tenantID string, ServiceID string) string
- func GetLastCommit(re *git.Repository) (*object.Commit, error)
- func GetPrivateFile(tenantID string) string
- func GetPublicKey(tenantID string) string
- func GetTagFromNamedRef(ref reference.Named) string
- func GitCheckout(sourceDir, branch string) error
- func GitClone(csi CodeSourceInfo, sourceDir string, logger event.Logger, timeout int) (*git.Repository, error)
- func GitCloneOrPull(csi CodeSourceInfo, sourceDir string, logger event.Logger, timeout int) (*git.Repository, error)
- func GitPull(csi CodeSourceInfo, sourceDir string, logger event.Logger, timeout int) (*git.Repository, error)
- func Go(f func() error) chan error
- func Home() (string, error)
- func ImageBuild(dockerCli *client.Client, contextDir string, options types.ImageBuildOptions, ...) error
- func ImageExist(imageName, user, password string) (bool, error)
- func ImageImport(dockerCli *client.Client, image, source string, logger event.Logger) error
- func ImageInspectWithRaw(dockerCli *client.Client, image string) (*types.ImageInspect, error)
- func ImageLoad(dockerCli *client.Client, tarFile string, logger event.Logger) error
- func ImageNameHandle(imageName string) *model.ImageName
- func ImageNameWithNamespaceHandle(imageName string) *model.ImageName
- func ImagePull(dockerCli *client.Client, image string, username, password string, ...) (*types.ImageInspect, error)
- func ImagePush(dockerCli *client.Client, image, user, pass string, logger event.Logger, ...) error
- func ImageRemove(dockerCli *client.Client, image string) error
- func ImageSave(dockerCli *client.Client, image, destination string, logger event.Logger) error
- func ImageTag(dockerCli *client.Client, source, target string, logger event.Logger, ...) error
- func MakeSSHKeyPair() (string, string, error)
- func RemoveDir(path string) error
- func TrustedImagePush(dockerCli *client.Client, image, user, pass string, logger event.Logger, ...) error
- type CodeSourceInfo
- type Command
- type Commit
- type ContainerConfig
- func (m *ContainerConfig) GetAnnotations() map[string]string
- func (m *ContainerConfig) GetDevices() []*Device
- func (m *ContainerConfig) GetEnvs() []*KeyValue
- func (m *ContainerConfig) GetImage() *ImageSpec
- func (m *ContainerConfig) GetLabels() map[string]string
- func (m *ContainerConfig) GetMetadata() *ContainerMetadata
- func (m *ContainerConfig) GetMounts() []*Mount
- type ContainerMetadata
- type Device
- type DockerService
- func (ds *DockerService) AttachContainer(containerID string, attacheStdin, attaStdout, attaStderr bool, ...) (func(), error)
- func (ds *DockerService) CreateContainer(config *ContainerConfig) (string, error)
- func (ds *DockerService) GetContainerLogPath(containerID string) (string, error)
- func (ds *DockerService) RemoveContainer(containerID string) error
- func (ds *DockerService) StartContainer(containerID string) error
- func (ds *DockerService) StopContainer(containerID string, timeout int64) error
- func (ds *DockerService) WaitExitOrRemoved(containerID string, waitRemove bool) chan int
- type DstFile
- type IOError
- type ImageSpec
- type Info
- type JSONError
- type JSONMessage
- type JSONProgress
- type KeyValue
- type Logs
- type Mount
- type NetworkConfig
- type ParseError
- type Repostory
- type RepostoryBuildInfo
- type SFTPClient
- type SVNClient
- type SrcFile
Constants ¶
This section is empty.
Variables ¶
var ErrorNoAuth = fmt.Errorf("pull image require docker login")
ErrorNoAuth error no auth
var ErrorNoImage = fmt.Errorf("image not exist")
ErrorNoImage error no image
Functions ¶
func CheckTrustedRepositories ¶
CheckTrustedRepositories check Repositories is exist ,if not create it.
func CopyFileWithProgress ¶
CopyFileWithProgress 复制文件,带进度
func CopyToFile ¶
CopyToFile writes the content of the reader to the specified file
func CopyWithProgress ¶
func CopyWithProgress(srcFile SrcFile, dstFile DstFile, allSize int64, logger event.Logger) (err error)
CopyWithProgress copy file
func EncodeAuthToBase64 ¶
func EncodeAuthToBase64(authConfig types.AuthConfig) (string, error)
EncodeAuthToBase64 serializes the auth configuration as JSON base64 payload
func EncodePrivateKey ¶
func EncodePrivateKey(private *rsa.PrivateKey) []byte
EncodePrivateKey EncodePrivateKey
func EncodeSSHKey ¶
EncodeSSHKey EncodeSSHKey
func GenSaveImageName ¶
GenSaveImageName generates the final name of the image, which is the name of the image in the exported tar package.
func GenerateKey ¶
GenerateKey GenerateKey
func GetCodeSourceDir ¶
GetCodeSourceDir get source storage directory it changes as gitrepostory address, branch, and service id change
func GetLastCommit ¶
func GetLastCommit(re *git.Repository) (*object.Commit, error)
GetLastCommit get last commit info get commit by head reference
func GetTagFromNamedRef ¶
GetTagFromNamedRef get image tag by name
func GitCheckout ¶
GitCheckout checkout the specified branch
func GitClone ¶
func GitClone(csi CodeSourceInfo, sourceDir string, logger event.Logger, timeout int) (*git.Repository, error)
GitClone git clone code
func GitCloneOrPull ¶
func GitCloneOrPull(csi CodeSourceInfo, sourceDir string, logger event.Logger, timeout int) (*git.Repository, error)
GitCloneOrPull if code exist in local,use git pull.
func GitPull ¶
func GitPull(csi CodeSourceInfo, sourceDir string, logger event.Logger, timeout int) (*git.Repository, error)
GitPull git pull code
func Go ¶
Go is a basic promise implementation: it wraps calls a function in a goroutine, and returns a channel which will later return the function's return value.
func Home ¶
Home returns the home directory for the executing user.
This uses an OS-specific method for discovering the home directory. An error is returned if a home directory cannot be detected.
func ImageBuild ¶
func ImageBuild(dockerCli *client.Client, contextDir string, options types.ImageBuildOptions, logger event.Logger, timeout int) error
ImageBuild ImageBuild
func ImageExist ¶
ImageExist check image exist
func ImageImport ¶
ImageImport save image to tar file source source file name eg. /tmp/xxx.tar
func ImageInspectWithRaw ¶
ImageInspectWithRaw get image inspect
func ImageLoad ¶
ImageLoad load image from tar file destination destination file name eg. /tmp/xxx.tar
func ImageNameHandle ¶
ImageNameHandle 解析imagename
func ImageNameWithNamespaceHandle ¶
ImageNameWithNamespaceHandle if have namespace,will parse namespace
func ImagePull ¶
func ImagePull(dockerCli *client.Client, image string, username, password string, logger event.Logger, timeout int) (*types.ImageInspect, error)
ImagePull pull docker image timeout minutes of the unit
func ImagePush ¶
func ImagePush(dockerCli *client.Client, image, user, pass string, logger event.Logger, timeout int) error
ImagePush push image to registry timeout minutes of the unit
func ImageRemove ¶
ImageRemove remove image
func ImageSave ¶
ImageSave save image to tar file destination destination file name eg. /tmp/xxx.tar
Types ¶
type CodeSourceInfo ¶
type CodeSourceInfo struct { ServerType string `json:"server_type"` RepositoryURL string `json:"repository_url"` Branch string `json:"branch"` User string `json:"user"` Password string `json:"password"` //避免项目之间冲突,代码缓存目录提高到租户 TenantID string `json:"tenant_id"` ServiceID string `json:"service_id"` }
CodeSourceInfo 代码源信息
func (CodeSourceInfo) GetCodeSourceDir ¶
func (c CodeSourceInfo) GetCodeSourceDir() string
GetCodeSourceDir get source storage directory
type Command ¶
type Command struct { Cmd string // lowercased command name (ex: `from`) SubCmd string // for ONBUILD only this holds the sub-command Json bool // whether the value is written in json form Original string // The original source line StartLine int // The original source line number Flags []string // Any flags such as `--from=...` for `COPY`. Value []string // The contents of the command (ex: `ubuntu:xenial`) }
Command Represents a single line (layer) in a Dockerfile. For example `FROM ubuntu:xenial`
type Commit ¶
type Commit struct { Revision string `xml:"revision,attr"` Author string `xml:"author"` Msg string `xml:"msg"` Date string `xml:"date"` }
Commit Commit
type ContainerConfig ¶
type ContainerConfig struct { // Metadata of the container. This information will uniquely identify the // container, and the runtime should leverage this to ensure correct // operation. The runtime may also use this information to improve UX, such // as by constructing a readable name. Metadata *ContainerMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"` // Image to use. Image *ImageSpec `protobuf:"bytes,2,opt,name=image" json:"image,omitempty"` // Command to execute (i.e., entrypoint for docker) Command []string `protobuf:"bytes,3,rep,name=command" json:"command,omitempty"` // Args for the Command (i.e., command for docker) Args []string `protobuf:"bytes,4,rep,name=args" json:"args,omitempty"` // Current working directory of the command. WorkingDir string `protobuf:"bytes,5,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` // List of environment variable to set in the container. Envs []*KeyValue `protobuf:"bytes,6,rep,name=envs" json:"envs,omitempty"` // Mounts for the container. Mounts []*Mount `protobuf:"bytes,7,rep,name=mounts" json:"mounts,omitempty"` // Devices for the container. Devices []*Device `protobuf:"bytes,8,rep,name=devices" json:"devices,omitempty"` // Key-value pairs that may be used to scope and select individual resources. // Label keys are of the form: // label-key ::= prefixed-name | name // prefixed-name ::= prefix '/' name // prefix ::= DNS_SUBDOMAIN // name ::= DNS_LABEL Labels map[string]string `` /* 146-byte string literal not displayed */ // Unstructured key-value map that may be used by the kubelet to store and // retrieve arbitrary metadata. // // Annotations MUST NOT be altered by the runtime; the annotations stored // here MUST be returned in the ContainerStatus associated with the container // this ContainerConfig creates. // // In general, in order to preserve a well-defined interface between the // kubelet and the container runtime, annotations SHOULD NOT influence // runtime behaviour. Annotations map[string]string `` /* 157-byte string literal not displayed */ // Path relative to PodSandboxConfig.LogDirectory for container to store // the log (STDOUT and STDERR) on the host. // E.g., // PodSandboxConfig.LogDirectory = `/var/log/pods/<podUID>/` // ContainerConfig.LogPath = `containerName_Instance#.log` // // WARNING: Log management and how kubelet should interface with the // container logs are under active discussion in // https://issues.k8s.io/24677. There *may* be future change of direction // for logging as the discussion carries on. LogPath string `protobuf:"bytes,11,opt,name=log_path,json=logPath,proto3" json:"log_path,omitempty"` // Variables for interactive containers, these have very specialized // use-cases (e.g. debugging). // TODO: Determine if we need to continue supporting these fields that are // part of Kubernetes's Container Spec. Stdin bool `protobuf:"varint,12,opt,name=stdin,proto3" json:"stdin,omitempty"` StdinOnce bool `protobuf:"varint,13,opt,name=stdin_once,json=stdinOnce,proto3" json:"stdin_once,omitempty"` Tty bool `protobuf:"varint,14,opt,name=tty,proto3" json:"tty,omitempty"` // Configuration specific to Linux containers. //Linux *LinuxContainerConfig `protobuf:"bytes,15,opt,name=linux" json:"linux,omitempty"` AttachStdin bool AttachStdout bool AttachStderr bool NetworkConfig *NetworkConfig ExtraHosts []string }
ContainerConfig holds all the required and optional fields for creating a container.
func (*ContainerConfig) GetAnnotations ¶
func (m *ContainerConfig) GetAnnotations() map[string]string
GetAnnotations GetAnnotations
func (*ContainerConfig) GetDevices ¶
func (m *ContainerConfig) GetDevices() []*Device
GetDevices GetDevices
func (*ContainerConfig) GetImage ¶
func (m *ContainerConfig) GetImage() *ImageSpec
GetImage GetImage
func (*ContainerConfig) GetLabels ¶
func (m *ContainerConfig) GetLabels() map[string]string
GetLabels GetLabels
func (*ContainerConfig) GetMetadata ¶
func (m *ContainerConfig) GetMetadata() *ContainerMetadata
GetMetadata GetMetadata
func (*ContainerConfig) GetMounts ¶
func (m *ContainerConfig) GetMounts() []*Mount
GetMounts GetMounts
type ContainerMetadata ¶
type ContainerMetadata struct { // Name of the container. Same as the container name in the PodSpec. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Attempt number of creating the container. Default: 0. Attempt uint32 `protobuf:"varint,2,opt,name=attempt,proto3" json:"attempt,omitempty"` }
ContainerMetadata holds all necessary information for building the container name. The container runtime is encouraged to expose the metadata in its user interface for better user experience. E.g., runtime can construct a unique container name based on the metadata. Note that (name, attempt) is unique within a sandbox for the entire lifetime of the sandbox.
type Device ¶
type Device struct { // Path of the device within the container. ContainerPath string `protobuf:"bytes,1,opt,name=container_path,json=containerPath,proto3" json:"container_path,omitempty"` // Path of the device on the host. HostPath string `protobuf:"bytes,2,opt,name=host_path,json=hostPath,proto3" json:"host_path,omitempty"` // Cgroups permissions of the device, candidates are one or more of // * r - allows container to read from the specified device. // * w - allows container to write to the specified device. // * m - allows container to create device files that do not yet exist. Permissions string `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"` }
Device specifies a host device to mount into a container.
type DockerService ¶
type DockerService struct {
// contains filtered or unexported fields
}
DockerService docker cli service
func CreateDockerService ¶
func CreateDockerService(ctx context.Context, client *client.Client) *DockerService
CreateDockerService create docker service
func (*DockerService) AttachContainer ¶
func (ds *DockerService) AttachContainer(containerID string, attacheStdin, attaStdout, attaStderr bool, inputStream io.ReadCloser, outputStream, errorStream io.Writer, errCh *chan error) (func(), error)
AttachContainer attach container
func (*DockerService) CreateContainer ¶
func (ds *DockerService) CreateContainer(config *ContainerConfig) (string, error)
CreateContainer creates a new container in the given PodSandbox Docker cannot store the log to an arbitrary location (yet), so we create an symlink at LogPath, linking to the actual path of the log. TODO: check if the default values returned by the runtime API are ok.
func (*DockerService) GetContainerLogPath ¶
func (ds *DockerService) GetContainerLogPath(containerID string) (string, error)
GetContainerLogPath returns the real path where docker stores the container log.
func (*DockerService) RemoveContainer ¶
func (ds *DockerService) RemoveContainer(containerID string) error
RemoveContainer removes the container. TODO: If a container is still running, should we forcibly remove it?
func (*DockerService) StartContainer ¶
func (ds *DockerService) StartContainer(containerID string) error
StartContainer starts the container.
func (*DockerService) StopContainer ¶
func (ds *DockerService) StopContainer(containerID string, timeout int64) error
StopContainer stops a running container with a grace period (i.e., timeout).
func (*DockerService) WaitExitOrRemoved ¶
func (ds *DockerService) WaitExitOrRemoved(containerID string, waitRemove bool) chan int
WaitExitOrRemoved wait container exist or remove
type ImageSpec ¶
type ImageSpec struct {
Image string `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
}
ImageSpec is an internal representation of an image. Currently, it wraps the value of a Container's Image field (e.g. imageID or imageDigest), but in the future it will include more detailed information about the different image types.
type Info ¶
type Info struct { XMLName xml.Name `xml:"info"` URL string `xml:"entry>url"` RelativeURL string `xml:"entry>relative-url"` Root string `xml:"entry>repository>root"` UUID string `xml:"entry>repository>uuid"` WcrootAbspath string `xml:"entry>wc-info>wcroot-abspath"` Schedule string `xml:"entry>wc-info>schedule"` Depth string `xml:"entry>wc-info>depth"` Logs *Logs Branchs []string Tags []string }
Info Info
type JSONError ¶
type JSONError struct { Code int `json:"code,omitempty"` Message string `json:"message,omitempty"` }
JSONError wraps a concrete Code and Message, `Code` is is an integer error code, `Message` is the error message.
type JSONMessage ¶
type JSONMessage struct { Stream string `json:"stream,omitempty"` Status string `json:"status,omitempty"` Progress *JSONProgress `json:"progressDetail,omitempty"` ProgressMessage string `json:"progress,omitempty"` //deprecated ID string `json:"id,omitempty"` From string `json:"from,omitempty"` Time int64 `json:"time,omitempty"` TimeNano int64 `json:"timeNano,omitempty"` Error *JSONError `json:"errorDetail,omitempty"` ErrorMessage string `json:"error,omitempty"` //deprecated // Aux contains out-of-band data, such as digests for push signing. Aux *json.RawMessage `json:"aux,omitempty"` }
JSONMessage JSONMessage
func (*JSONMessage) JSONString ¶
func (j *JSONMessage) JSONString() string
JSONString return json string
type JSONProgress ¶
type JSONProgress struct { Current int64 `json:"current,omitempty"` Total int64 `json:"total,omitempty"` Start int64 `json:"start,omitempty"` // If true, don't show xB/yB HideCounts bool `json:"hidecounts,omitempty"` // contains filtered or unexported fields }
JSONProgress describes a Progress. terminalFd is the fd of the current terminal, Start is the initial value for the operation. Current is the current status and value of the progress made towards Total. Total is the end value describing when we made 100% progress for an operation.
type KeyValue ¶
type KeyValue struct { Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` }
KeyValue KeyValue
type Mount ¶
type Mount struct { // Path of the mount within the container. ContainerPath string `protobuf:"bytes,1,opt,name=container_path,json=containerPath,proto3" json:"container_path,omitempty"` // Path of the mount on the host. HostPath string `protobuf:"bytes,2,opt,name=host_path,json=hostPath,proto3" json:"host_path,omitempty"` // If set, the mount is read-only. Readonly bool `protobuf:"varint,3,opt,name=readonly,proto3" json:"readonly,omitempty"` // If set, the mount needs SELinux relabeling. SelinuxRelabel bool `protobuf:"varint,4,opt,name=selinux_relabel,json=selinuxRelabel,proto3" json:"selinux_relabel,omitempty"` }
Mount specifies a host volume to mount into a container.
type NetworkConfig ¶
type NetworkConfig struct {
NetworkMode string `json:"network_mode"`
}
NetworkConfig network config for container
type ParseError ¶
type ParseError struct {
Msg string
}
ParseError A failure in parsing the file as a dockerfile.
func (ParseError) Error ¶
func (e ParseError) Error() string
type Repostory ¶
type Repostory struct { ID int `json:"id,omitempty"` Namespace string `json:"namespace,omitempty"` NamespaceType string `json:"namespaceType,omitempty"` Name string `json:"name"` ShortDescription string `json:"shortDescription"` LongDescription string `json:"longDescription"` Visibility string `json:"visibility"` Status string `json:"status,omitempty"` }
Repostory repostory info
type RepostoryBuildInfo ¶
type RepostoryBuildInfo struct { RepostoryURL string RepostoryURLType string BuildBranch string BuildPath string CodeHome string // contains filtered or unexported fields }
RepostoryBuildInfo 源码编译信息
func CreateRepostoryBuildInfo ¶
func CreateRepostoryBuildInfo(repoURL, repoType, branch, tenantID string, ServiceID string) (*RepostoryBuildInfo, error)
CreateRepostoryBuildInfo 创建源码编译信息 repoType git or svn
func (*RepostoryBuildInfo) GetCodeBuildAbsPath ¶
func (r *RepostoryBuildInfo) GetCodeBuildAbsPath() string
GetCodeBuildAbsPath 获取代码编译绝对目录
func (*RepostoryBuildInfo) GetCodeBuildPath ¶
func (r *RepostoryBuildInfo) GetCodeBuildPath() string
GetCodeBuildPath 获取代码编译相对目录
func (*RepostoryBuildInfo) GetCodeHome ¶
func (r *RepostoryBuildInfo) GetCodeHome() string
GetCodeHome 获取代码目录
func (*RepostoryBuildInfo) GetProtocol ¶
func (r *RepostoryBuildInfo) GetProtocol() string
GetProtocol 获取协议
type SFTPClient ¶
type SFTPClient struct { UserName string `json:"username"` PassWord string `json:"password"` Host string `json:"host"` Port int `json:"int"` // contains filtered or unexported fields }
SFTPClient sFTP客户端
func NewSFTPClient ¶
func NewSFTPClient(username, password, host, port string) (*SFTPClient, error)
NewSFTPClient NewSFTPClient
func (*SFTPClient) DownloadFile ¶
func (s *SFTPClient) DownloadFile(src, dst string, logger event.Logger) error
DownloadFile DownloadFile
type SVNClient ¶
type SVNClient interface { Checkout() (*Info, error) Update(childpath string) (*Info, error) UpdateOrCheckout(childpath string) (*Info, error) }
SVNClient svn svnclient
func NewClient ¶
func NewClient(csi CodeSourceInfo, codeHome string, logger event.Logger) SVNClient
NewClient new svn svnclient
func NewClientWithEnv ¶
NewClientWithEnv ...