Не удается заставить 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.

Другие вопросы по тегам