util

package
v0.0.0-...-ced0851 Latest Latest
Warning

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

Go to latest
Published: May 13, 2024 License: Apache-2.0 Imports: 42 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DoNotChangeUID = -1
	DoNotChangeGID = -1
)

Variables

View Source
var ErrNotSymLink = fmt.Errorf("not a symlink")

Functions

func AddToDefaultIgnoreList

func AddToDefaultIgnoreList(entry IgnoreListEntry)

func AddToIgnoreList

func AddToIgnoreList(entry IgnoreListEntry)

func AddVolumePathToIgnoreList

func AddVolumePathToIgnoreList(path string)

AddVolumePath adds the given path to the volume ignorelist.

func CacheHasher

func CacheHasher() func(string) (string, error)

CacheHasher takes into account everything the regular hasher does except for mtime

func CheckCleanedPathAgainstIgnoreList

func CheckCleanedPathAgainstIgnoreList(path string) bool

func CheckCleanedPathAgainstProvidedIgnoreList

func CheckCleanedPathAgainstProvidedIgnoreList(path string, wl []IgnoreListEntry) bool

func CheckIgnoreList

func CheckIgnoreList(path string) bool

func ContainsWildcards

func ContainsWildcards(paths []string) bool

ContainsWildcards returns true if any entry in paths contains wildcards

func CopyDir

func CopyDir(src, dest string, context FileContext, uid, gid int64, chmod fs.FileMode, useDefaultChmod bool) ([]string, error)

CopyDir copies the file or directory at src to dest It returns a list of files it copied over

func CopyFile

func CopyFile(src, dest string, context FileContext, uid, gid int64, chmod fs.FileMode, useDefaultChmod bool) (bool, error)

CopyFile copies the file at src to dest

func CopyFileOrSymlink(src string, destDir string, root string) error

For cross stage dependencies kaniko must persist the referenced path so that it can be used in the dependent stage. For symlinks we copy the target path because copying the symlink would result in a dead link

func CopyOwnership

func CopyOwnership(src string, destDir string, root string) error

CopyOwnership copies the file or directory ownership recursively at src to dest

func CopySymlink(src, dest string, context FileContext) (bool, error)

CopySymlink copies the symlink at src to dest.

func CreateFile

func CreateFile(path string, reader io.Reader, perm os.FileMode, uid uint32, gid uint32) error

CreateFile creates a file at path and copies over contents from the reader

func CreateTarballOfDirectory

func CreateTarballOfDirectory(pathToDir string, f io.Writer) error

func CreateTargetTarfile

func CreateTargetTarfile(tarpath string) (*os.File, error)

CreateTargetTarfile creates target tar file for downloading the context file. Make directory if directory does not exist

func DeleteFilesystem

func DeleteFilesystem() error

DeleteFilesystem deletes the extracted image file system

func DestinationFilepath

func DestinationFilepath(src, dest, cwd string) (string, error)

DestinationFilepath returns the destination filepath from the build context to the image filesystem If source is a file:

If dest is a dir, copy it to /dest/relpath
If dest is a file, copy directly to dest

If source is a dir:

Assume dest is also a dir, and copy to dest/

If dest is not an absolute filepath, add /cwd to the beginning

func DetectFilesystemIgnoreList

func DetectFilesystemIgnoreList(path string) error

Get ignorelist from roots of mounted files Each line of /proc/self/mountinfo is in the form: 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue (1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11) Where (5) is the mount point relative to the process's root From: https://www.kernel.org/doc/Documentation/filesystems/proc.txt

func DetermineTargetFileOwnership

func DetermineTargetFileOwnership(fi os.FileInfo, uid, gid int64) (int64, int64)

DetermineTargetFileOwnership returns the user provided uid/gid combination. If they are set to -1, the uid/gid from the original file is used.

func DockerConfLocation

func DockerConfLocation() string

DockerConfLocation returns the file system location of the Docker configuration file under the directory set in the DOCKER_CONFIG environment variable. If that variable is not set, it returns the OS-equivalent of "/kaniko/.docker/config.json".

func DownloadFileToDest

func DownloadFileToDest(rawurl, dest string, uid, gid int64, chmod fs.FileMode) error

DownloadFileToDest downloads the file at rawurl to the given dest for the ADD command From add command docs:

  1. If <src> is a remote file URL: - destination will have permissions of 0600 by default if not specified with chmod - If remote file has HTTP Last-Modified header, we set the mtime of the file to that timestamp
func EvalSymLink(path string) (string, error)

func ExtractFile

func ExtractFile(dest string, hdr *tar.Header, cleanedName string, tr io.Reader) error

func FilepathExists

func FilepathExists(path string) bool

FilepathExists returns true if the path exists

func GetChmod

func GetChmod(chmodStr string, env []string) (chmod fs.FileMode, useDefault bool, err error)

func GetFSFromImage

func GetFSFromImage(root string, img v1.Image, extract ExtractFunction) ([]string, error)

GetFSFromImage extracts the layers of img to root It returns a list of all files extracted

func GetFSFromLayers

func GetFSFromLayers(root string, layers []v1.Layer, opts ...FSOpt) ([]string, error)

func GetFSInfoMap

func GetFSInfoMap(dir string, existing map[string]os.FileInfo) (map[string]os.FileInfo, []string)

GetFSInfoMap given a directory gets a map of FileInfo for all files

func GetInputFrom

func GetInputFrom(r io.Reader) ([]byte, error)

GetInputFrom returns Reader content

func GetSymLink(path string) (string, error)

func GetUserGroup

func GetUserGroup(chownStr string, env []string) (int64, int64, error)

func HasFilepathPrefix

func HasFilepathPrefix(path, prefix string, prefixMatchOnly bool) bool

HasFilepathPrefix checks if the given file path begins with prefix

func Hasher

func Hasher() func(string) (string, error)

Hasher returns a hash function, used in snapshotting to determine if a file has changed

func InitIgnoreList

func InitIgnoreList() error

InitIgnoreList will initialize the ignore list using: - defaultIgnoreList - mounted paths via DetectFilesystemIgnoreList()

func IsDestDir

func IsDestDir(path string) bool

func IsFileLocalTarArchive

func IsFileLocalTarArchive(src string) bool

IsFileLocalTarArchive returns true if the file is a local tar archive

func IsInIgnoreList

func IsInIgnoreList(path string) bool

func IsInProvidedIgnoreList

func IsInProvidedIgnoreList(path string, wl []IgnoreListEntry) bool

func IsSrcRemoteFileURL

func IsSrcRemoteFileURL(rawurl string) bool

func IsSrcsValid

func IsSrcsValid(srcsAndDest instructions.SourcesAndDest, resolvedSources []string, fileContext FileContext) error
func IsSymlink(fi os.FileInfo) bool

Returns true if a file is a symlink

func Lgetxattr

func Lgetxattr(path string, attr string) ([]byte, error)

func LookupUser

func LookupUser(userStr string) (*user.User, error)

LookupUser will try to lookup the userStr inside the passwd file. If the user does not exists, the function will fallback to parsing the userStr as an uid.

func MakeTransport

func MakeTransport(opts config.RegistryOptions, registryName string) (http.RoundTripper, error)

func MkdirAllWithPermissions

func MkdirAllWithPermissions(path string, mode os.FileMode, uid, gid int64) error

func MtimeHasher

func MtimeHasher() func(string) (string, error)

MtimeHasher returns a hash function, which only looks at mtime to determine if a file has changed. Note that the mtime can lag, so it's possible that a file will have changed but the mtime may look the same.

func ParentDirectories

func ParentDirectories(path string) []string

ParentDirectories returns a list of paths to all parent directories Ex. /some/temp/dir -> [/, /some, /some/temp, /some/temp/dir]

func ParentDirectoriesWithoutLeadingSlash

func ParentDirectoriesWithoutLeadingSlash(path string) []string

ParentDirectoriesWithoutLeadingSlash returns a list of paths to all parent directories all subdirectories do not contain a leading / Ex. /some/temp/dir -> [/, some, some/temp, some/temp/dir]

func RedoHasher

func RedoHasher() func(string) (string, error)

RedoHasher returns a hash function, which looks at mtime, size, filemode, owner uid and gid Note that the mtime can lag, so it's possible that a file will have changed but the mtime may look the same.

func RelativeFiles

func RelativeFiles(fp string, root string) ([]string, error)

RelativeFiles returns a list of all files at the filepath relative to root

func ResolveEnvAndWildcards

func ResolveEnvAndWildcards(sd instructions.SourcesAndDest, fileContext FileContext, envs []string) ([]string, string, error)

func ResolveEnvironmentReplacement

func ResolveEnvironmentReplacement(value string, envs []string, isFilepath bool) (string, error)

ResolveEnvironmentReplacement resolves replacing env variables in some text from envs It takes in a string representation of the command, the value to be resolved, and a list of envs (config.Env) Ex: value = $foo/newdir, envs = [foo=/foodir], then this should return /foodir/newdir The dockerfile/shell package handles processing env values It handles escape characters and supports expansion from the config.Env array Shlex handles some of the following use cases (these and more are tested in integration tests) ""a'b'c"" -> "a'b'c" "Rex\ The\ Dog \" -> "Rex The Dog" "a\"b" -> "a"b"

func ResolveEnvironmentReplacementList

func ResolveEnvironmentReplacementList(values, envs []string, isFilepath bool) ([]string, error)

ResolveEnvironmentReplacementList resolves a list of values by calling resolveEnvironmentReplacement

func ResolveSources

func ResolveSources(srcs []string, root string) ([]string, error)

ResolveSources resolves the given sources if the sources contains wildcards It returns a list of resolved sources

func Retry

func Retry(operation retryFunc, retryCount int, initialDelayMilliseconds int) error

Retry retries an operation

func RetryWithResult

func RetryWithResult[T any](operation func() (T, error), retryCount int, initialDelayMilliseconds int) (result T, err error)

Retry retries an operation with a return value

func SHA256

func SHA256(r io.Reader) (string, error)

SHA256 returns the shasum of the contents of r

func SyscallCredentials

func SyscallCredentials(userStr string) (*syscall.Credential, error)

func URLDestinationFilepath

func URLDestinationFilepath(rawurl, dest, cwd string, envs []string) (string, error)

URLDestinationFilepath gives the destination a file from a remote URL should be saved to

func UnTar

func UnTar(r io.Reader, dest string) ([]string, error)

UnTar returns a list of files that have been extracted from the tar archive at r to the path at dest

func UnpackCompressedTar

func UnpackCompressedTar(path, dir string) error

UnpackCompressedTar unpacks the compressed tar at path to dir

func UnpackLocalTarArchive

func UnpackLocalTarArchive(path, dest string) ([]string, error)

UnpackLocalTarArchive unpacks the tar archive at path to the directory dest Returns the files extracted from the tar archive

func UpdateConfigEnv

func UpdateConfigEnv(envVars []instructions.KeyValuePair, config *v1.Config, replacementEnvs []string) error

func ValidAzureBlobStorageHost

func ValidAzureBlobStorageHost(context string) bool

Validate if the host url provided is with correct suffix for AzureCloud, AzureChinaCloud, AzureGermanCloud and AzureUSGovernment RegEX for supported suffix defined in constants.AzureBlobStorageHostRegEx

func Volumes

func Volumes() []string

func WalkFS

func WalkFS(
	dir string,
	existingPaths map[string]struct{},
	changeFunc func(string) (bool, error),
) ([]string, map[string]struct{})

WalkFS given a directory dir and list of existing files existingPaths, returns a list of changed files determined by `changeFunc` and a list of deleted files. Input existingPaths is changed inside this function and returned as deleted files map. It timesout after 90 mins which can be configured via setting an environment variable SNAPSHOT_TIMEOUT in the kaniko pod definition.

Types

type CertPool

type CertPool interface {
	// contains filtered or unexported methods
}

type ExtractFunction

type ExtractFunction func(string, *tar.Header, string, io.Reader) error

type FSConfig

type FSConfig struct {
	// contains filtered or unexported fields
}

type FSOpt

type FSOpt func(*FSConfig)

func ExtractFunc

func ExtractFunc(extractFunc ExtractFunction) FSOpt

func IncludeWhiteout

func IncludeWhiteout() FSOpt

type FileContext

type FileContext struct {
	Root          string
	ExcludedFiles []string
}

func NewFileContextFromDockerfile

func NewFileContextFromDockerfile(dockerfilePath, buildcontext string) (FileContext, error)

func (FileContext) ExcludesFile

func (c FileContext) ExcludesFile(path string) bool

ExcludesFile returns true if the file context specified this file should be ignored. Usually this is specified via .dockerignore

type IgnoreListEntry

type IgnoreListEntry struct {
	Path            string
	PrefixMatchOnly bool
}

func IgnoreList

func IgnoreList() []IgnoreListEntry

type KeyPairLoader

type KeyPairLoader interface {
	// contains filtered or unexported methods
}

type Tar

type Tar struct {
	// contains filtered or unexported fields
}

Tar knows how to write files to a tar file.

func NewTar

func NewTar(f io.Writer) Tar

NewTar will create an instance of Tar that can write files to the writer at f.

func (*Tar) AddFileToTar

func (t *Tar) AddFileToTar(p string) error

AddFileToTar adds the file at path p to the tar

func (*Tar) Close

func (t *Tar) Close()

Close will close any open streams used by Tar.

func (*Tar) Whiteout

func (t *Tar) Whiteout(p string) error

type X509CertPool

type X509CertPool struct {
	// contains filtered or unexported fields
}

type X509KeyPairLoader

type X509KeyPairLoader struct {
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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