in gke-windows-builder/builder/builder/bucket.go [129:176]
func createZip(ctx context.Context, fullpath string) (string, error) {
f, err := ioutil.TempFile("", "")
if err != nil {
return "", fmt.Errorf("failed to create temp file: %v", err)
}
defer f.Close()
zipW := zip.NewWriter(f)
defer zipW.Close()
err = filepath.Walk(fullpath, func(path string, info os.FileInfo, err error) error {
fi, err := os.Lstat(path)
if err != nil {
return err
}
if fi.IsDir() {
// Skip
return ctx.Err()
}
if fi.Mode()&os.ModeSymlink != 0 {
log.Printf("Skipping symlink: %q", path)
return ctx.Err()
}
trimmedPath := path
if filepath.HasPrefix(trimmedPath, fullpath) {
trimmedPath = trimmedPath[len(fullpath)+1:]
}
w, err := zipW.Create(trimmedPath)
if err != nil {
return err
}
if err := copyFile(w, path); err != nil {
return err
}
return ctx.Err()
})
if err != nil {
return "", fmt.Errorf("failed to walk directory: %v", err)
}
return f.Name(), ctx.Err()
}