Не удается заставить TeamCity Build Step выполнить grunt-cli
Я пытаюсь автоматизировать сборку моего проекта на сервере TeamCity. я использую grunt
определить и настроить мои задачи. Это прекрасно работает на местном уровне. Тем не менее у меня возникают проблемы с распознаванием TeamCity (работающим на Windows Server 2008) grunt
как исполняемый файл, сборка завершится неудачно, когда grunt
называется как недоступно.
я должен grunt-cli
установлен на сервере и может выполнить его при входе через ssh (скрипт сборки также успешно выполняется, когда я запускаю его таким образом).
я бегу npm install
прежде чем я вызову grunt, а также попытался принудительно установить grunt-cli
используя preinstall
инструкция в моем package.json
лайк:
{
"name": "someName",
"version": "0.0.1",
"private": true,
"scripts" : {
"preinstall" : "npm install grunt-cli -g"
},
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-jshint": "~0.6.3",
"grunt-contrib-less": "~0.8.1",
"grunt-contrib-watch": "~0.5.3",
"grunt-contrib-requirejs": "~0.4.1",
"grunt-strip": "~0.2.1",
"grunt-bump": "0.0.11"
}
}
Я вижу, как npm устанавливает grunt-cli, но grunt недоступна на следующем шаге.
Я также попытался обернуть это в bat
файл или использование нескольких шагов сборки для установки зависимостей и запуска задачи grunt.
У кого-нибудь есть какие-либо материалы по этому вопросу?
2 ответа
У меня была такая же проблема, когда я пытался заставить наших агентов TFS Build запускать grunt-cli. В конце я просто изменил процесс сборки, чтобы использовать полный путь к исполняемому файлу grunt-cli.
Поэтому я перестал использовать это:
grunt deploy
чтобы использовать это:
"C:\Users\tfsservice\AppData\Roaming\npm\grunt.cmd" deploy
Я знаю, что это всего лишь обходной путь, а не верное решение, но оно должно быть достаточно хорошим, чтобы вы начали. Надеюсь, это поможет.
-- Обновить --
Я смог заставить его работать должным образом, просто добавив "C:\Users\tfsservice\AppData\Roaming\npm" (где находится файл grunt.cmd) в системный путь, а затем перезагрузив сервер сборки. Перезагрузка потребовалась, так как tfsservice является и пользователем, и запущенной службой; простого перезапуска службы может быть достаточно, но я этого не проверял.
После этого хруста развертывание работало в наших сборках, как и ожидалось.
Вы используете агент Teamcity на Widnows Server? Существует плагин для Node.js/Grunt для Teamcity: https://github.com/jonnyzzz/TeamCity.Node Насколько я использовал, у него не было проблем с запуском grunt с Teamcity.