in internal/testers/ginkgov1/package.go [157:186]
func (t *Tester) ensureKubectl(downloadPath string) error {
kubectlPathInGCS := fmt.Sprintf(
"gs://%s/%s/%s/bin/%s/%s/kubectl",
t.TestPackageBucket,
t.TestPackageDir,
t.TestPackageVersion,
runtime.GOOS,
runtime.GOARCH,
)
if _, err := os.Stat(downloadPath); err == nil {
klog.V(0).Infof("Found existing kubectl at %v", downloadPath)
err := t.compareSHA(downloadPath, kubectlPathInGCS)
if err == nil {
klog.V(0).Infof("Validated hash for existing kubectl at %v", downloadPath)
return nil
}
klog.Warning(err)
}
cmd := exec.Command("gsutil", "cp", kubectlPathInGCS, downloadPath)
exec.InheritOutput(cmd)
if err := cmd.Run(); err != nil {
return fmt.Errorf("failed to download kubectl for release %s: %s", t.TestPackageVersion, err)
}
if err := os.Chmod(downloadPath, 0700); err != nil {
return fmt.Errorf("failed to make %s executable: %s", downloadPath, err)
}
return nil
}