func (v *cacheOp) VisitContainer(node *parse.ContainerNode) error { if node.Type() != parse.NodeCache { return nil } if len(node.Vargs) == 0 || v.enable == false { node.Disabled = true return nil } if node.Container.Name == "" { node.Container.Name = "cache" } if node.Container.Image == "" { node.Container.Image = v.plugin } // discard any other cache properties except the image name. // everything else is discard for security reasons. node.Container = runner.Container{ Name: node.Container.Name, Alias: node.Container.Alias, Image: node.Container.Image, Volumes: []string{ v.mount + ":/cache", }, } // this is a hack until I can come up with a better solution. // this copies the clone name, and appends at the end of the // build. When it is executed a second time the build should // have a completed status, so it knows to cache instead // of restore. cache := node.Root().NewCacheNode() cache.Vargs = node.Vargs cache.Container = node.Container node.Root().Script = append(node.Root().Script, cache) return nil }
func (v *cloneOp) VisitContainer(node *parse.ContainerNode) error { if node.Type() != parse.NodeClone { return nil } if v.enable == false { node.Disabled = true return nil } if node.Container.Name == "" { node.Container.Name = "clone" } if node.Container.Image == "" { node.Container.Image = v.plugin } // discard any other cache properties except the image name. // everything else is discard for security reasons. node.Container = runner.Container{ Name: node.Container.Name, Image: node.Container.Image, } return nil }