package remotecontext import ( "context" "os" "github.com/containerd/log" "github.com/moby/go-archive" "github.com/moby/go-archive/compression" "github.com/moby/moby/v2/daemon/builder" "github.com/moby/moby/v2/daemon/builder/remotecontext/git" ) // MakeGitContext returns a Context from gitURL that is cloned in a temporary directory. func MakeGitContext(gitURL string) (builder.Source, error) { root, err := git.Clone(gitURL, git.WithIsolatedConfig(true)) if err != nil { return nil, err } c, err := archive.Tar(root, compression.None) if err != nil { return nil, err } defer func() { if err := c.Close(); err != nil { log.G(context.TODO()).WithFields(log.Fields{ "error": err, "action": "MakeGitContext", "module": "builder", "url": gitURL, }).Error("error while closing git context") } if err := os.RemoveAll(root); err != nil { log.G(context.TODO()).WithFields(log.Fields{ "error": err, "action": "MakeGitContext", "module": "builder", "url": gitURL, }).Error("error while removing path and children of root") } }() return FromArchive(c) }