Documentation ¶
Index ¶
- Constants
- Variables
- func CloneRepo(ctx context.Context, opts CloneRepoOptions) (bool, error)
- func DefaultWorkspaceFolder(repoURL string) (string, error)
- func HijackLogrus(callback func(entry *logrus.Entry))
- func Run(ctx context.Context, options Options) error
- type CloneRepoOptions
- type DockerConfig
- type Options
Constants ¶
View Source
const ( // WorkspacesDir is the path to the directory where // all workspaces are stored by default. WorkspacesDir = "/workspaces" // EmptyWorkspaceDir is the path to a workspace that has // nothing going on... it's empty! EmptyWorkspaceDir = WorkspacesDir + "/empty" // MagicDir is where all envbuilder related files are stored. // This is a special directory that must not be modified // by the user or images. MagicDir = ".envbuilder" )
Variables ¶
View Source
var ( ErrNoFallbackImage = errors.New("no fallback image has been specified") // MagicFile is a file that is created in the workspace // when envbuilder has already been run. This is used // to skip building when a container is restarting. // e.g. docker stop -> docker start MagicFile = filepath.Join(MagicDir, "built") )
Functions ¶
func CloneRepo ¶
func CloneRepo(ctx context.Context, opts CloneRepoOptions) (bool, error)
CloneRepo will clone the repository at the given URL into the given path. If a repository is already initialized at the given path, it will not be cloned again.
The bool returned states whether the repository was cloned or not.
func DefaultWorkspaceFolder ¶
DefaultWorkspaceFolder returns the default workspace folder for a given repository URL.
func HijackLogrus ¶
HijackLogrus hijacks the logrus logger and calls the callback for each log entry. This is an abuse of logrus, the package that Kaniko uses, but it exposes no other way to obtain the log entries.
Types ¶
type CloneRepoOptions ¶
type DockerConfig ¶ added in v0.0.3
type DockerConfig configfile.ConfigFile
DockerConfig represents the Docker configuration file.
type Options ¶
type Options struct { // SetupScript is ran as the root user prior to the init script. // It is used to configure envbuilder dynamically during the runtime. // e.g. specifying whether to start `systemd` or `tiny init` for PID 1. SetupScript string `env:"SETUP_SCRIPT"` // InitScript is the script to run to initialize the workspace. InitScript string `env:"INIT_SCRIPT"` // InitCommand is the command to run to initialize the workspace. InitCommand string `env:"INIT_COMMAND"` // InitArgs are the arguments to pass to the init command. // They are split according to `/bin/sh` rules with // https://github.com/kballard/go-shellquote InitArgs string `env:"INIT_ARGS"` // CacheRepo is the name of the container registry // to push the cache image to. If this is empty, the cache // will not be pushed. CacheRepo string `env:"CACHE_REPO"` // BaseImageCacheDir is the path to a directory where the base // image can be found. This should be a read-only directory // solely mounted for the purpose of caching the base image. BaseImageCacheDir string `env:"BASE_IMAGECACHE_DIR"` // LayerCacheDir is the path to a directory where built layers // will be stored. This spawns an in-memory registry to serve // the layers from. // // It will override CacheRepo if both are specified. LayerCacheDir string `env:"LAYER_CACHE_DIR"` // DevcontainerJSONPath is a relative or absolute path to a // devcontainer.json file. This can be used in cases where // one wants to substitute an edited devcontainer.json file // for the one that exists in the repo. DevcontainerJSONPath string `env:"DEVCONTAINER_JSON_PATH"` // DockerfilePath is a relative path to the Dockerfile that // will be used to build the workspace. This is an alternative // to using a devcontainer that some might find simpler. DockerfilePath string `env:"DOCKERFILE_PATH"` // CacheTTLDays is the number of days to use cached layers before // expiring them. Defaults to 7 days. CacheTTLDays int `env:"CACHE_TTL_DAYS"` // DockerConfigBase64 is a base64 encoded Docker config // file that will be used to pull images from private // container registries. DockerConfigBase64 string `env:"DOCKER_CONFIG_BASE64"` // FallbackImage is the image to use if no image is // specified in the devcontainer.json file and // a Dockerfile is not found. FallbackImage string `env:"FALLBACK_IMAGE"` // ForceSafe ignores any filesystem safety checks. // This could cause serious harm to your system! // This is used in cases where bypass is needed // to unblock customers! ForceSafe bool `env:"FORCE_SAFE"` // Insecure bypasses TLS verification when cloning // and pulling from container registries. Insecure bool `env:"INSECURE"` // IgnorePaths is a comma separated list of paths // to ignore when building the workspace. IgnorePaths []string `env:"IGNORE_PATHS"` // SkipRebuild skips building if the MagicFile exists. // This is used to skip building when a container is // restarting. e.g. docker stop -> docker start // This value can always be set to true - even if the // container is being started for the first time. SkipRebuild bool `env:"SKIP_REBUILD"` // GitURL is the URL of the Git repository to clone. // This is optional! GitURL string `env:"GIT_URL"` // GitCloneDepth is the depth to use when cloning // the Git repository. GitCloneDepth int `env:"GIT_CLONE_DEPTH"` // GitCloneSingleBranch clones only a single branch // of the Git repository. GitCloneSingleBranch bool `env:"GIT_CLONE_SINGLE_BRANCH"` // GitUsername is the username to use for Git authentication. // This is optional! GitUsername string `env:"GIT_USERNAME"` // GitPassword is the password to use for Git authentication. // This is optional! GitPassword string `env:"GIT_PASSWORD"` // WorkspaceFolder is the path to the workspace folder // that will be built. This is optional! WorkspaceFolder string `env:"WORKSPACE_FOLDER"` // SSLCertBase64 is the content of an SSL cert file. // This is useful for self-signed certificates. SSLCertBase64 string `env:"SSL_CERT_BASE64"` // Logger is the logger to use for all operations. Logger func(level codersdk.LogLevel, format string, args ...interface{}) // Filesystem is the filesystem to use for all operations. // Defaults to the host filesystem. Filesystem billy.Filesystem }
Click to show internal directories.
Click to hide internal directories.