in windows-builder/builder/builder/remote.go [154:188]
func (r *Remote) Run(command string, runTimeoutMin int) error {
if runTimeoutMin <= 0 {
return errors.New("runTimeout must be greater than 0")
}
runTimeout := time.Duration(runTimeoutMin) * time.Minute
cmdstring := fmt.Sprintf(`cd c:\workspace & %s`, command)
endpoint := winrm.NewEndpoint(*r.Hostname, 5986, true, true, nil, nil, nil, runTimeout)
w, err := winrm.NewClient(endpoint, *r.Username, *r.Password)
if err != nil {
return err
}
shell, err := w.CreateShell()
if err != nil {
return err
}
var cmd *winrm.Command
cmd, err = shell.Execute(cmdstring)
if err != nil {
return err
}
go io.Copy(os.Stdout, cmd.Stdout)
go io.Copy(os.Stderr, cmd.Stderr)
cmd.Wait()
shell.Close()
if cmd.ExitCode() != 0 {
return fmt.Errorf("command failed with exit-code:%d", cmd.ExitCode())
}
return nil
}