Documentation
¶
Overview ¶
* This file is a little bit strange. The problem is that we want to do * daemonized containers with liblxc, but we can't spawn containers in threaded * environments (i.e. golang), with go-lxc. So instead, we embed some C into * our program that catches execution before golang starts. This way, we can do * a tiny C program to actually spawn the container. * * We do this in the "stacker" package so that if anyone uses the library, the * re-exec will actually work. Of course, this is slightly impolite, but what * can you do.
Index ¶
- Constants
- func CleanImportsDir(c types.StackerConfig, name string, imports types.Imports, cache *BuildCache) error
- func Download(cacheDir string, url string, progress bool, remoteHash string, ...) (string, error)
- func GenerateShellForRunning(rootfs string, cmd []string, outFile string) error
- func GetBase(o BaseLayerOpts) error
- func GitVersion(path string) (string, error)
- func Grab(sc types.StackerConfig, storage types.Storage, name string, source string, ...) error
- func Import(c types.StackerConfig, storage types.Storage, name string, ...) error
- func NewGitLayerTag(path string) (string, error)
- func NewStorage(c types.StackerConfig) (types.Storage, error)
- func SetupRootfs(o BaseLayerOpts) error
- func UnprivSetup(c types.StackerConfig, uid, gid int) error
- type BaseLayerOpts
- type BuildArgs
- type BuildCache
- type Builder
- type CacheEntry
- type Container
- type ImportHash
- type ImportType
- type PublishArgs
- type Publisher
- type StackerFilesDAG
Constants ¶
const ( GitVersionAnnotation = "com.cisco.stacker.git_version" StackerContentsAnnotation = "com.cisco.stacker.stacker_yaml" )
const (
ReasonableDefaultPath = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
)
Variables ¶
This section is empty.
Functions ¶
func CleanImportsDir ¶ added in v0.5.0
func CleanImportsDir(c types.StackerConfig, name string, imports types.Imports, cache *BuildCache) error
func Download ¶ added in v0.2.0
func Download(cacheDir string, url string, progress bool, remoteHash string, remoteSize string) (string, error)
download with caching support in the specified cache dir.
func GenerateShellForRunning ¶ added in v0.6.0
GenerateShellForRunning generates a shell script to run inside the container, and writes it to the contianer. It checks that the script already have a shebang? If so, it leaves it as is, otherwise it prepends a shebang.
func GetBase ¶ added in v0.6.0
func GetBase(o BaseLayerOpts) error
GetBase grabs the base layer and puts it in the cache.
func GitVersion ¶
GitVersion generates a version string similar to what git describe --always does, with -dirty on the end if the git repo had local changes.
func NewGitLayerTag ¶ added in v0.5.0
NewGitLayerTag version generates a commit-<id> tag to be used for uploading an image to a docker registry
func NewStorage ¶
func NewStorage(c types.StackerConfig) (types.Storage, error)
func SetupRootfs ¶ added in v0.6.0
func SetupRootfs(o BaseLayerOpts) error
SetupRootfs assumes the base layer is correct in the cache, and sets up the base to the output.
If the layer is a build only layer, this code simply initializes the filesystem in roots to the built tag's filesystem.
func UnprivSetup ¶ added in v0.6.0
func UnprivSetup(c types.StackerConfig, uid, gid int) error
Types ¶
type BaseLayerOpts ¶
type BuildCache ¶
type BuildCache struct { Cache map[string]CacheEntry `json:"cache"` Version int `json:"version"` // contains filtered or unexported fields }
func OpenCache ¶
func OpenCache(config types.StackerConfig, oci casext.Engine, sfm types.StackerFiles) (*BuildCache, error)
func (*BuildCache) Lookup ¶
func (c *BuildCache) Lookup(name string) (*CacheEntry, bool, error)
func (*BuildCache) Put ¶
func (c *BuildCache) Put(name string, manifests map[types.LayerType]ispec.Descriptor) error
type Builder ¶ added in v0.5.0
type Builder struct {
// contains filtered or unexported fields
}
Builder is responsible for building the layers based on stackerfiles
func NewBuilder ¶ added in v0.5.0
NewBuilder initializes a new Builder struct
func (*Builder) BuildMultiple ¶ added in v0.5.0
BuildMultiple builds a list of stackerfiles
type CacheEntry ¶
type CacheEntry struct { // A map of LayerType:Manifest this build corresponds to. Manifests map[types.LayerType]ispec.Descriptor // A map of the import url to the base64 encoded result of mtree walk // or sha256 sum of a file, depending on what Type is. Imports map[string]ImportHash // The name of this layer as it was built. Useful for the BuildOnly // case to make sure it still exists, and for printing error messages. Name string // The layer to cache Layer *types.Layer // If the layer is of type "built", this is a hash of the base layer's // CacheEntry, which contains a hash of its imports. If there is a // mismatch with the current base layer's CacheEntry, the layer should // be rebuilt. Base string }
type Container ¶ added in v0.6.0
type Container struct {
// contains filtered or unexported fields
}
our representation of a container
func NewContainer ¶ added in v0.6.0
type ImportHash ¶
type ImportHash struct { // Unfortuantely, mtree doesn't work if you just pass it a single file, // so we use the sha256sum of the file, or the mtree encoding if it's a // directory. This indicates which. Type ImportType Hash string }
type ImportType ¶
type ImportType int
const ( ImportFile ImportType = iota ImportDir ImportType = iota )
func (ImportType) IsDir ¶
func (it ImportType) IsDir() bool
type PublishArgs ¶ added in v0.5.0
type Publisher ¶ added in v0.5.0
type Publisher struct {
// contains filtered or unexported fields
}
Publisher is responsible for publishing the layers based on stackerfiles
func NewPublisher ¶ added in v0.5.0
func NewPublisher(opts *PublishArgs) *Publisher
NewPublisher initializes a new Publisher struct
func (*Publisher) PublishMultiple ¶ added in v0.5.0
PublishMultiple published layers defined in a list of stackerfiles
type StackerFilesDAG ¶ added in v0.5.0
type StackerFilesDAG struct {
// contains filtered or unexported fields
}
StackerDepsDAG processes the dependencies between different stacker recipes
func NewStackerFilesDAG ¶ added in v0.5.0
func NewStackerFilesDAG(sfMap types.StackerFiles) (*StackerFilesDAG, error)
NewStackerDepsDAG properly initializes a StackerDepsProcessor
func (*StackerFilesDAG) GetStackerFile ¶ added in v0.5.0
func (d *StackerFilesDAG) GetStackerFile(path string) *types.Stackerfile
func (*StackerFilesDAG) Sort ¶ added in v0.5.0
func (d *StackerFilesDAG) Sort() []string
Sort provides a serial build order for the stacker files
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
containers_storage
containers/image/storage has a dependency on libdevmapper.so; having this in its own package allows downstream users to import it if they want to use it, but means they can also avoid importing it if they don't want to add this dependency.
|
containers/image/storage has a dependency on libdevmapper.so; having this in its own package allows downstream users to import it if they want to use it, but means they can also avoid importing it if they don't want to add this dependency. |
A basic overlay storage backend.
|
A basic overlay storage backend. |
This package is a small go "library" (read: exec wrapper) around the mksquashfs binary that provides some useful primitives.
|
This package is a small go "library" (read: exec wrapper) around the mksquashfs binary that provides some useful primitives. |
common code used by storage backends
|
common code used by storage backends |