У меня возникли серьезные проблемы с получением последних частей моей конфигурации TeamCity.
У меня есть шаг powershell, который выполняет следующие команды:
& npm install
& grunt build
запись следующего вывода:
Build (Powershell) (1s)
[13:18:08]PowerShell Executable: C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
[13:18:08]Working directory: C:\BuildAgent\work\6a434ee5d01fd0d9
[13:18:08]PowerShell arguments: [-NonInteractive, -ExecutionPolicy, ByPass, -File, C:\BuildAgent\temp\buildTmp\powershell8407335260182621582.ps1]
[13:18:09]Error: ENOENT, stat 'C:\Windows\system32\config\systemprofile\AppData\Roaming\npm'
[13:18:09]
[13:18:09]grunt-cli: The grunt command line interface. (v0.1.13)
[13:18:09]Process exited with code 0
Я видел, что это известная проблема, но никто из решений работал у меня до сих пор.
Моя настройка такова: у меня есть две виртуальные машины в Azure, build
и agent
. Оба подключены к одному домену AD, domain
, в котором есть пользователь domain\teamcityuser
, который имеет "стандартный" класс (т.е. Не админ). Этот пользователь запускает как сервер сборки (в экземпляре build
), так и агент сборки (в экземпляре agent
).
Я пробовал эти вещи без успеха:
- Создание каталога в сообщении об ошибке, удостоверение, что
domain\teamcityuser
имеет полные права доступа к нему. - Создание каталога
npm
вC:\Users\teamcityuser\AppData\Roaming
- Создание файла
C:\Windows\System32\config\SystemProfile\.npmrc
с содержимымprefix=C:\npm-global
, а также создание последней папки - Запуск
npm cache clean
перед запуском сборки - Установка глобального пакета
npm
черезnpm install -g npm
Чем больше я могу попытаться заставить это работать?
И чтобы избежать проблемы XY, вот моя фактическая проблема:
У меня есть проект .NET Web API с настройкой CI через эту установку TeamCity через Octopus Deploy и на сервер хостинга. У меня также есть github repo с кодом для веб-SPA, который будет использовать API. Спа-центр построен с grunt build
, после чего есть папка dist
со всем, что мне нужно развернуть.
Я бы хотел как можно больше использовать архитектуру CI для развертывания клиента.