Documentation
¶
Index ¶
- Constants
- func ArtifactDir(kind, namespace, name string) string
- func ArtifactPath(kind, namespace, name, filename string) string
- type ArchiveFileFilter
- type Storage
- func (s Storage) Archive(artifact *meta.Artifact, dir string, filter ArchiveFileFilter) (err error)
- func (s Storage) ArtifactExist(artifact meta.Artifact) bool
- func (s Storage) AtomicWriteFile(artifact *meta.Artifact, reader io.Reader, mode os.FileMode) (err error)
- func (s Storage) Copy(artifact *meta.Artifact, reader io.Reader) (err error)
- func (s Storage) CopyFromPath(artifact *meta.Artifact, path string) (err error)
- func (s Storage) CopyToPath(artifact *meta.Artifact, subPath, toPath string) error
- func (s Storage) GarbageCollect(ctx context.Context, artifact meta.Artifact, timeout time.Duration) ([]string, error)
- func (s Storage) GetGarbageFiles(artifact meta.Artifact, totalCountLimit, maxItemsToBeRetained int, ...) (garbageFiles []string, _ error)
- func (s Storage) LocalPath(artifact meta.Artifact) string
- func (s Storage) Lock(artifact meta.Artifact) (unlock func(), err error)
- func (s Storage) MkdirAll(artifact meta.Artifact) error
- func (s Storage) NewArtifactFor(kind string, metadata metav1.Object, revision, fileName string) meta.Artifact
- func (s Storage) Remove(artifact meta.Artifact) error
- func (s Storage) RemoveAll(artifact meta.Artifact) (string, error)
- func (s Storage) RemoveAllButCurrent(artifact meta.Artifact) ([]string, error)
- func (s Storage) SetArtifactURL(artifact *meta.Artifact)
- func (s Storage) SetHostname(URL string) string
- func (s Storage) Symlink(artifact meta.Artifact, linkName string) (string, error)
- func (s Storage) VerifyArtifact(artifact meta.Artifact) error
Constants ¶
const ( // DefaultFileMode is the permission mode applied to files inside an artifact archive. DefaultFileMode int64 = 0o600 // DefaultDirMode is the permission mode applied to all directories inside an artifact archive. DefaultDirMode int64 = 0o750 // DefaultExeFileMode is the permission mode applied to executable files inside an artifact archive. DefaultExeFileMode int64 = 0o700 )
const GarbageCountLimit = 1000
Variables ¶
This section is empty.
Functions ¶
func ArtifactDir ¶
ArtifactDir returns the artifact dir path in the form of '<kind>/<namespace>/<name>'.
func ArtifactPath ¶
ArtifactPath returns the artifact path in the form of '<kind>/<namespace>/name>/<filename>'.
Types ¶
type ArchiveFileFilter ¶
ArchiveFileFilter must return true if a file should not be included in the archive after inspecting the given path and/or os.FileInfo.
func SourceIgnoreFilter ¶
func SourceIgnoreFilter(ps []gitignore.Pattern, domain []string) ArchiveFileFilter
SourceIgnoreFilter returns an ArchiveFileFilter that filters out files matching sourceignore.VCSPatterns and any of the provided patterns. If an empty gitignore.Pattern slice is given, the matcher is set to sourceignore.NewDefaultMatcher.
type Storage ¶
type Storage struct {
// BasePath is the local directory path where the source artifacts are stored.
BasePath string `json:"basePath"`
// Hostname is the file server host name used to compose the artifacts URIs.
Hostname string `json:"hostname"`
// ArtifactRetentionTTL is the duration of time that artifacts will be kept
// in storage before being garbage collected.
ArtifactRetentionTTL time.Duration `json:"artifactRetentionTTL"`
// ArtifactRetentionRecords is the maximum number of artifacts to be kept in
// storage after a garbage collection.
ArtifactRetentionRecords int `json:"artifactRetentionRecords"`
}
Storage manages meta.Artifact tarballs on the local filesystem. It provides methods for creating, verifying, and garbage collecting artifacts.
func (Storage) Archive ¶
Archive atomically archives the given directory as a tarball to the given meta.Artifact path, excluding directories and any ArchiveFileFilter matches. While archiving, any environment specific data (for example, the user and group name) is stripped from file headers. If successful, it sets the digest and last update time on the artifact.
func (Storage) ArtifactExist ¶
ArtifactExist returns a boolean indicating whether the meta.Artifact exists in storage and is a regular file.
func (Storage) AtomicWriteFile ¶
func (s Storage) AtomicWriteFile(artifact *meta.Artifact, reader io.Reader, mode os.FileMode) (err error)
AtomicWriteFile atomically writes the io.Reader contents to the meta.Artifact path. If successful, it sets the digest and last update time on the artifact.
func (Storage) Copy ¶
Copy atomically copies the io.Reader contents to the meta.Artifact path. If successful, it sets the digest and last update time on the artifact.
func (Storage) CopyFromPath ¶
CopyFromPath atomically copies the contents of the given path to the path of the meta.Artifact. If successful, the digest and last update time on the artifact is set.
func (Storage) CopyToPath ¶
CopyToPath copies the contents in the (sub)path of the given artifact to the given path.
func (Storage) GarbageCollect ¶
func (s Storage) GarbageCollect(ctx context.Context, artifact meta.Artifact, timeout time.Duration) ([]string, error)
GarbageCollect removes all garbage files in the artifact dir according to the provided retention options.
func (Storage) GetGarbageFiles ¶
func (s Storage) GetGarbageFiles(artifact meta.Artifact, totalCountLimit, maxItemsToBeRetained int, ttl time.Duration) (garbageFiles []string, _ error)
GetGarbageFiles returns all files that need to be garbage collected for the given artifact. Garbage files are determined based on the below flow: 1. collect all artifact files with an expired ttl 2. if we satisfy maxItemsToBeRetained, then return 3. else, collect all artifact files till the latest n files remain, where n=maxItemsToBeRetained
func (Storage) LocalPath ¶
LocalPath returns the secure local path of the given artifact (that is: relative to the Storage.BasePath).
func (Storage) NewArtifactFor ¶
func (s Storage) NewArtifactFor(kind string, metadata metav1.Object, revision, fileName string) meta.Artifact
NewArtifactFor returns a new meta.Artifact.
func (Storage) RemoveAllButCurrent ¶
RemoveAllButCurrent removes all files for the given meta.Artifact base dir, excluding the current one.
func (Storage) SetArtifactURL ¶
SetArtifactURL sets the URL on the given meta.Artifact.
func (Storage) SetHostname ¶
SetHostname sets the hostname of the given URL string to the current Storage.Hostname and returns the result.