Установите Chocolatey, используя сборку TFS

Я хотел бы тихо установить шоколад на серию тестовых агентов, и я пытаюсь использовать для этого сборку TFS. У меня есть шаг сборки, который использует задачу «Запуск Powershell на удаленных компьютерах». Это, в свою очередь, вызывает ps1 для установки шоколада из https://chocolatey.org/install.ps1, и я предоставляю переключатели powershell, как описано на сайте шоколада:

-NoProfile -InputFormat None -ExecutionPolicy Bypass

Когда я запускаю сборку, я получаю эту ошибку:

System.Management.Automation.RuntimeException: команда, уведомляющая пользователя о сбое, поскольку основная программа или тип команды не поддерживает взаимодействие с пользователем. Попробуйте хост-программу, поддерживающую взаимодействие с пользователем, например консоль Windows PowerShell или Windows PowerShell ISE, и удалите команды, связанные с подсказками, из типов команд, которые не поддерживают взаимодействие с пользователем, таких как рабочие процессы Windows PowerShell. ---> System.Management.Automation.RuntimeException: Команда, уведомляющая пользователя о сбое, поскольку основная программа или тип команды не поддерживает взаимодействие с пользователем. Попробуйте хост-программу, поддерживающую взаимодействие с пользователем, например консоль Windows PowerShell или Windows PowerShell ISE, и удалите команды, связанные с подсказками, из типов команд, которые не поддерживают взаимодействие с пользователем, таких как рабочие процессы Windows PowerShell.

Что я делаю неправильно? Кажется странным, что шоколадный установщик требовал взаимодействия с пользователем, я думаю, что весь смысл шоколадного был в бесшумной установке?


person Simon Green    schedule 20.12.2017    source источник
comment
Какую версию TFS вы используете?   -  person Cece Dong - MSFT    schedule 21.12.2017
comment
@CeceDong-MSFT Я использую TFS 15.112.26301.0   -  person Simon Green    schedule 21.12.2017


Ответы (2)


Кажется, у вас неправильные настройки в задаче "PowerShell на целевых машинах". Выполните следующие действия:

  1. Создайте файл .ps1 на целевой машине и укажите текст ниже:

Set-ExecutionPolicy Bypass-Scope Process-Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

  1. В задаче «PowerShell на целевых машинах» укажите расположение только что созданного файла .ps1.

  2. Ставьте сборку в очередь.

Посмотрите на скриншот ниже:

введите здесь описание изображения

person Cece Dong - MSFT    schedule 21.12.2017
comment
хм, немного запутался - вы отредактировали часть Target Machines имени задачи на скриншоте. Почему? Вы на самом деле запускаете его на агенте сборки, а не на удаленной машине? - person Simon Green; 21.12.2017
comment
Я боюсь, что получаю это сообщение об ошибке: Статус развертывания для машины «KIWIINTCLM2: 5985»: «Ошибка» Сбой развертывания на машине «KIWIINTCLM2: 5985» со следующим сообщением: «Команда, которая предлагает пользователю, не удалась, потому что хост-программа или тип команды не поддерживает взаимодействие с пользователем. Попробуйте хост-программу, которая поддерживает взаимодействие с пользователем, например консоль Windows PowerShell или Windows PowerShell ISE, и удалите команды, связанные с подсказками, из типов команд, которые не поддерживают взаимодействие с пользователем, таких как рабочие процессы Windows PowerShell». - person Simon Green; 21.12.2017
comment
То, что я отредактировал, — это имя моей серверной машины, которое является частным. Вы запускаете свой агент сборки в интерактивном режиме? Попробуйте запустить configure как службу, чтобы увидеть, можно ли решить проблему: docs.microsoft.com/en-us/vsts/build-release/actions/agents/ - person Cece Dong - MSFT; 22.12.2017
comment
Можете ли вы заставить его работать, когда вы запускаете агент сборки как службу? - person Cece Dong - MSFT; 29.12.2017
comment
Привет, Сеси... извините за медленный ответ. Агент сборки работает как служба, да... хотя я не вижу, как свойства агента сборки имеют значение. Powershell работает на удаленной машине, а не агент сборки. Это должно быть как-то связано с тем, как работает Execute Powershell на удаленной машине, как настроен прослушиватель на удаленной машине... - person Simon Green; 29.12.2017
comment
Вы указываете масштаб? Что получится, если запустить простой скрипт? - person starian chen-MSFT; 01.01.2018
comment
@SimonGreen Вы попробуете мои шаги? Если вы запустите скрипт непосредственно на целевой машине, какой результат вы получите? - person Cece Dong - MSFT; 02.01.2018
comment
Когда я исправил эту ошибку (пришлось выполнить локальную установку, используя загруженную копию пакета шоколадного .nuget), она работала, как и ожидалось (в VSTS, используя HTTPS для шага «Запуск PowerShell на целевых машинах»): github.com/chocolatey/choco/issues/1560 - person meastp; 04.05.2018

Что я делаю неправильно? Кажется странным, что шоколадный установщик требовал взаимодействия с пользователем, я думаю, что весь смысл шоколадного был в бесшумной установке?

Обычно он полностью отключается, если нет чего-то (например, прокси), требующего ввода. Было бы лучше определить, что может быть причиной проблемы, запустив установку непосредственно на машине и посмотрев, что произойдет.

Подробности

install.ps1 переходит на chocolateyInstall.ps1, который вызывает chocolateySetup.psm1.

Когда вы просматриваете этот сценарий, вы можете заметить, что в install.ps1 используется Write-Output, а в psm1 в некоторых местах используется Write-Host. Это может вызвать или не вызвать проблемы, но маловероятно, учитывая, что сценарий нормально работает с PowerShell DSC.

Так что это может быть несколько вещей:

  • Убедитесь, что все, что запускает этот скрипт, имеет права администратора, иначе вы получите ошибку отказа в доступе (если вы не укажете другое место установки Chocolatey).
  • Убедитесь, что вам не нужно вводить учетные данные прокси-сервера (что исправлено в приведенной ниже рекомендации для автономного режима).
  • Убедитесь, что вы не сталкиваетесь с невозможностью доступа к интернет-ресурсам (что также устраняется с помощью автономных ресурсов).
  • Это может быть что-то еще, вызывающее всплывающее окно, например, необходимость установки .NET 4.x. Перед установкой Chocolatey рекомендуется установить последнюю версию .NET Framework из серии 4.x.

Офлайн-рекомендация

Лучшая рекомендация, которую мы можем дать - не использовать Интернет ни для какой части этого скрипта. Если вы хотите надежности, у вас должно быть все внутри. Это включает в себя сценарий install.ps1, который вы собираетесь использовать для Chocolatey, и сам Chocolatey.nupkg.

Прочитайте на https://chocolatey.org/install#completely-offline-install понять наши рекомендации.

person ferventcoder    schedule 01.01.2018