sources

package
v1.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2023 License: LGPL-3.0 Imports: 85 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ContainerRuntimeDocker docker runtime
	ContainerRuntimeDocker = "docker"
	// ContainerRuntimeContainerd containerd runtime
	ContainerRuntimeContainerd = "containerd"
	// DefaultDockerSock docker runtime endpoint
	DefaultDockerSock = "/var/run/dockershim.sock"
	// DefaultContainerdSock containerd runtime endpoint
	DefaultContainerdSock = "/run/containerd/containerd.sock"
)
View Source
const (
	// CONTAINER_ACTION_START is start container event action
	CONTAINER_ACTION_START = "start"

	// CONTAINER_ACTION_STOP is stop container event action
	CONTAINER_ACTION_STOP = "stop"

	// CONTAINER_ACTION_CREATE is create container event action
	CONTAINER_ACTION_CREATE = "create"

	// CONTAINER_ACTION_DESTROY is destroy container event action
	CONTAINER_ACTION_DESTROY = "destroy"

	// CONTAINER_ACTION_DIE is die container event action
	CONTAINER_ACTION_DIE = "die"
)

Variables

View Source
var ErrorNoAuth = fmt.Errorf("pull image require docker login")

ErrorNoAuth error no auth

View Source
var ErrorNoImage = fmt.Errorf("image not exist")

ErrorNoImage error no image

View Source
var Namespace = "k8s.io"

Namespace containerd image namespace

Functions

func AllCmds

func AllCmds() []string

AllCmds List all legal cmds in a dockerfile

func CacheContainer

func CacheContainer(cchan chan ContainerEvent, cs ...ContainerEvent)

func CheckFileExist

func CheckFileExist(path string) bool

CheckFileExist CheckFileExist

func CheckIfImageExists

func CheckIfImageExists(containerdClient *containerd.Client, image string) (imageName string, isExists bool, err error)

CheckIfImageExists -

func CheckTrustedRepositories

func CheckTrustedRepositories(image, user, pass string) error

CheckTrustedRepositories check Repositories is exist ,if not create it.

func CopyFileWithProgress

func CopyFileWithProgress(src, dst string, logger event.Logger) error

CopyFileWithProgress 复制文件,带进度

func CopyToFile

func CopyToFile(outfile string, r io.Reader) error

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 CreateImageName

func CreateImageName(ServiceID, DeployVersion string) string

CreateImageName -

func CreateVolumesAndMounts

func CreateVolumesAndMounts(contextDir, buildType string) (volumes []corev1.Volume, volumeMounts []corev1.VolumeMount)

CreateVolumesAndMounts -

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

func EncodeSSHKey(public *rsa.PublicKey) ([]byte, error)

EncodeSSHKey EncodeSSHKey

func GenerateKey

func GenerateKey(bits int) (*rsa.PrivateKey, *rsa.PublicKey, error)

GenerateKey GenerateKey

func GetCodeSourceDir

func GetCodeSourceDir(RepositoryURL, branch, tenantEnvID string, ServiceID string) string

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 GetPrivateFile

func GetPrivateFile(tenantEnvID string) string

GetPrivateFile 获取私钥文件地址

func GetPublicKey

func GetPublicKey(tenantEnvID string) string

GetPublicKey 获取公钥

func GetTagFromNamedRef

func GetTagFromNamedRef(ref reference.Named) string

GetTagFromNamedRef get image tag by name

func GitCheckout

func GitCheckout(sourceDir, branch string) error

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 Home

func Home() (string, error)

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(contextDir, WtNamespace, ServiceID, DeployVersion string, logger event.Logger, buildType string, plugImageName, KanikoImage string) error

func ImageExist

func ImageExist(imageName, user, password string) (bool, error)

ImageExist check image exist

func ImageImport

func ImageImport(dockerCli *client.Client, image, source string, logger event.Logger) error

ImageImport save image to tar file source source file name eg. /tmp/xxx.tar

func ImageInspectWithRaw

func ImageInspectWithRaw(dockerCli *client.Client, image string) (*types.ImageInspect, error)

ImageInspectWithRaw get image inspect

func ImageLoad

func ImageLoad(dockerCli *client.Client, tarFile string, logger event.Logger) error

ImageLoad load image from tar file destination destination file name eg. /tmp/xxx.tar

func ImageNameHandle

func ImageNameHandle(imageName string) *model.ImageName

ImageNameHandle 解析imagename

func ImageNameWithNamespaceHandle

func ImageNameWithNamespaceHandle(imageName string) *model.ImageName

ImageNameWithNamespaceHandle if have namespace,will parse namespace

func ImagePull

func ImagePull(client *containerd.Client, ref string, username, password string, logger event.Logger, timeout int) (*containerd.Image, error)

ImagePull pull docker image Deprecated: use sources.ImageClient.ImagePull instead

func ImagePush

func ImagePush(client *containerd.Client, rawRef, user, pass string, logger event.Logger, timeout int) error

ImagePush push image to registry timeout minutes of the unit Deprecated: use sources.ImageClient.ImagePush instead

func ImageRemove

func ImageRemove(containerdClient *containerd.Client, image string) error

ImageRemove remove image

func ImageSave

func ImageSave(dockerCli *client.Client, image, destination string, logger event.Logger) error

ImageSave save image to tar file destination destination file name eg. /tmp/xxx.tar

func ImageTag

func ImageTag(containerdClient *containerd.Client, source, target string, logger event.Logger, timeout int) error

ImageTag change docker image tag Deprecated: use sources.ImageClient.ImagePull instead

func ImagesPullAndPush

func ImagesPullAndPush(sourceImage, targetImage, username, password string, logger event.Logger) error

ImagesPullAndPush Used to process mirroring of non local components, example: builder, runner, /wt-mesh-data-panel Deprecated: ImagesPullAndPush

func MakeSSHKeyPair

func MakeSSHKeyPair() (string, string, error)

MakeSSHKeyPair make ssh key

func MultiImageSave

func MultiImageSave(ctx context.Context, dockerCli *client.Client, destination string, logger event.Logger, images ...string) error

MultiImageSave save multi image to tar file destination destination file name eg. /tmp/xxx.tar

func RemoveDir

func RemoveDir(path string) error

RemoveDir RemoveDir

func TrustedImagePush

func TrustedImagePush(containerdClient *containerd.Client, image, user, pass string, logger event.Logger, timeout int) error

TrustedImagePush push image to trusted registry

func WaitingComplete

func WaitingComplete(reChan *channels.RingChannel) (err error)

Types

type ClientFactory

type ClientFactory interface {
	NewClient(endpoint string, timeout time.Duration) (ContainerImageCli, error)
}

ClientFactory client factory

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"`
	//避免项目之间冲突,代码缓存目录提高到租户
	TenantEnvID string `json:"tenant_env_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`

func ParseFile

func ParseFile(filename string) ([]Command, error)

ParseFile Parse a Dockerfile from a filename. An IOError or ParseError may occur.

func ParseReader

func ParseReader(file io.Reader) ([]Command, error)

ParseReader Parse a Dockerfile from a reader. A ParseError may occur.

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) GetEnvs

func (m *ContainerConfig) GetEnvs() []*KeyValue

GetEnvs GetEnvs

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 ContainerDesc

type ContainerDesc struct {
	ContainerRuntime string
	// Info is extra information of the Container. The key could be arbitrary string, and
	// value should be in json format. The information could include anything useful for
	// debug, e.g. pid for linux container based container runtime.
	// It should only be returned non-empty when Verbose is true.
	Info map[string]string
	*runtimeapi.ContainerStatus
	// Docker container json
	*types.ContainerJSON
}

func (*ContainerDesc) GetId

func (c *ContainerDesc) GetId() string

func (*ContainerDesc) GetLogPath

func (c *ContainerDesc) GetLogPath() string

type ContainerEvent

type ContainerEvent struct {
	Action    string
	Container *ContainerDesc
}

ContainerEvent container event

type ContainerImageCli

type ContainerImageCli interface {
	ListContainers() ([]*runtimeapi.Container, error)
	InspectContainer(containerID string) (*ContainerDesc, error)
	WatchContainers(ctx context.Context, cchan chan ContainerEvent) error
	GetRuntimeClient() (*runtimeapi.RuntimeServiceClient, error)
	GetDockerClient() (*dockercli.Client, error)
}

ContainerImageCli container image client

func NewContainerImageClient

func NewContainerImageClient(containerRuntime, endpoint string, timeout time.Duration) (c ContainerImageCli, err error)

NewContainerImageClient new container image client

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 DstFile

type DstFile interface {
	Write([]byte) (int, error)
}

DstFile 目标文件

type IOError

type IOError struct {
	Msg string
}

IOError A failure in opening a file for reading.

func (IOError) Error

func (e IOError) Error() string

type ImageClient

type ImageClient interface {
	GetContainerdClient() *containerd.Client
	GetDockerClient() *dockercli.Client
	CheckIfImageExists(imageName string) (imageRef string, exists bool, err error)
	ImagePull(image string, username, password string, logger event.Logger, timeout int) (*ocispec.ImageConfig, error)
	ImageTag(source, target string, logger event.Logger, timeout int) error
	ImagePush(image, user, pass string, logger event.Logger, timeout int) error
	ImagesPullAndPush(sourceImage, targetImage, username, password string, logger event.Logger) error
	ImageRemove(image string) error
	ImageSave(image, destination string) error
	ImageLoad(tarFile string, logger event.Logger) error
	TrustedImagePush(image, user, pass string, logger event.Logger, timeout int) error
}

ImageClient image client

func NewImageClient

func NewImageClient(containerRuntime, endpoint string, timeout time.Duration) (c ImageClient, err error)

NewImageClient new image client

type ImageClientFactory

type ImageClientFactory interface {
	NewClient(endpoint string, timeout time.Duration) (ImageClient, error)
}

ImageClientFactory client factory

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.

func (*JSONError) Error

func (e *JSONError) Error() string

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 Logs

type Logs struct {
	XMLName      xml.Name `xml:"log"`
	CommitEntrys []Commit `xml:"logentry"`
}

Logs commit logs

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, tenantEnvID 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) Close

func (s *SFTPClient) Close()

Close 关闭啊

func (*SFTPClient) DownloadFile

func (s *SFTPClient) DownloadFile(src, dst string, logger event.Logger) error

DownloadFile DownloadFile

func (*SFTPClient) FileExist

func (s *SFTPClient) FileExist(filepath string) (bool, error)

FileExist 文件是否存在

func (*SFTPClient) MkdirAll

func (s *SFTPClient) MkdirAll(dirpath string) error

MkdirAll 创建目录,递归

func (*SFTPClient) PushFile

func (s *SFTPClient) PushFile(src, dst string, logger event.Logger) error

PushFile PushFile

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

func NewClientWithEnv(username, password, url, sourceDir string, env []string) SVNClient

NewClientWithEnv ...

type SrcFile

type SrcFile interface {
	Read([]byte) (int, error)
}

SrcFile 源文件

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL