in integration_test/agents/agents.go [1134:1172]
func InstallPackageFromGCS(ctx context.Context, logger *log.Logger, vm *gce.VM, gcsPath string) error {
if gce.IsWindows(vm.ImageSpec) {
return installWindowsPackageFromGCS(ctx, logger, vm, gcsPath)
}
if _, err := gce.RunRemotely(ctx, logger, vm, "mkdir -p /tmp/agentUpload /tmp/agentPlugin"); err != nil {
return err
}
if err := gce.InstallGsutilIfNeeded(ctx, logger, vm); err != nil {
return err
}
if _, err := gce.RunRemotely(ctx, logger, vm, "sudo gsutil cp -r "+gcsPath+"/* /tmp/agentUpload"); err != nil {
return fmt.Errorf("error copying down agent package from GCS: %v", err)
}
// Print the contents of /tmp/agentUpload into the logs.
if _, err := gce.RunRemotely(ctx, logger, vm, "ls /tmp/agentUpload"); err != nil {
return err
}
if _, err := gce.RunRemotely(ctx, logger, vm, "rm /tmp/agentUpload/*dbgsym* || echo nothing to delete"); err != nil {
return err
}
if _, err := gce.RunRemotely(ctx, logger, vm, "mv /tmp/agentUpload/*.tar.gz /tmp/agentPlugin || echo nothing to move"); err != nil {
return err
}
if IsRPMBased(vm.ImageSpec) {
if _, err := gce.RunRemotely(ctx, logger, vm, "sudo rpm --upgrade -v --force /tmp/agentUpload/*"); err != nil {
return fmt.Errorf("error installing agent from .rpm file: %v", err)
}
return nil
}
// --allow-downgrades is marked as dangerous, but I don't see another way
// to get the following sequence to work (from TestUpgradeOpsAgent):
// 1. install stable package from Rapture
// 2. install just-built package from GCS
// Nor do I know why apt considers that sequence to be a downgrade.
if _, err := gce.RunRemotely(ctx, logger, vm, "sudo apt-get install --allow-downgrades --yes --verbose-versions /tmp/agentUpload/*"); err != nil {
return fmt.Errorf("error installing agent from .deb file: %v", err)
}
return nil
}