Grunt не запускается на веб-сайте Azure

Я пытаюсь собрать и упаковать свой проект с помощью развертывания Git в Azure.

Я создал следующие файлы

  • .deployment
  • deploy.cmd
  • Gruntfile.js
  • package.json

мой .deployment файловые вызовы deploy.cmd, deploy.cmd устанавливает среду, устанавливая путь для включения проверенной копии Node.js и npm. я могу позвонить npm install просто хорошо. Когда я звоню gruntКажется, он выполняется до первого стандартного сообщения out, затем возвращается и устанавливается код возврата ошибки. Я не получаю никакого другого сообщения, кроме этого. Другие команды работают нормально.

Я пытался вывести из строя STDERR, не повезло. Я попытался запустить под консолью удаленного выполнения, не повезло. мой Gruntfile.js работает локально просто отлично.

Есть ли какой-то волшебный соус, которого мне не хватает?

1 ответ

Это немного устарело, но я все равно отвечу на всякий случай, если кто-нибудь столкнется с этим вопросом.


Во-первых, полезно запускать grunt с отключенными цветами, поскольку как диагностическая консоль, так и журналы развертывания борются с кодами ANSI. Для этого запустите grunt --no-color, Это должно вернуть информацию о STDOUT обратно в консоль и в журнал развертывания.

Во-вторых, я не рекомендую использовать зарегистрированные версии Node или NPM. В Windows Azure они уже встроены в среду и уже настроены на специальные временные пути и пути кеша, необходимые для их наилучшего выполнения.

Project Kudu - это механизм развертывания, обеспечивающий развертывание Azure, но вы уже знаете это, поскольку у вас есть файл.deployment. Тем не менее, инструменты командной строки Azure [npm install azure-cli --global] поможет вам подготовить несколько лучших сценариев развертывания, которые будут использовать предустановленный узел Azure и настройку NPM.

azure site deploymentscript –-node

получит вам сценарий базового узла.

Оттуда, несколько модификаций необходимы для deploy.sh чтобы заставить его казнить Гранта, надежно. В deploy.sh это раздел #Deployment. Замените его содержимое следующим:

# Deployment
# ----------

echo Handling node.js grunt deployment.

# 1. Select node version
selectNodeVersion

# 2. Install npm packages
if [ -e "$DEPLOYMENT_SOURCE/package.json" ]; then
  eval $NPM_CMD install
  exitWithMessageOnError "npm failed"
fi

# 3. Install bower packages
if [ -e "$DEPLOYMENT_SOURCE/bower.json" ]; then
  eval $NPM_CMD install bower
  exitWithMessageOnError "installing bower failed"
  ./node_modules/.bin/bower install
  exitWithMessageOnError "bower failed"
fi

# 4. Run grunt
if [ -e "$DEPLOYMENT_SOURCE/Gruntfile.js" ]; then
  eval $NPM_CMD install grunt-cli
  exitWithMessageOnError "installing grunt failed"
  ./node_modules/.bin/grunt --no-color clean common dist
  exitWithMessageOnError "grunt failed"
fi

# 5. KuduSync to Target
"$KUDU_SYNC_CMD" -v 500 -f "$DEPLOYMENT_SOURCE/dist" -t "$DEPLOYMENT_TARGET" -n "$NEXT_MANIFEST_PATH" -p "$PREVIOUS_MANIFEST_PATH" -i ".git;.hg;.deployment;deploy.sh"
exitWithMessageOnError "Kudu Sync to Target failed"

Это будет работать npm install, с последующим bower install (если bower.json существует), затем grunt clean common dist (если Gruntfile.js существует) и, наконец, KuduSync в ваш /wwwroot, (Примечание: замените "clean common dist" на любые задачи Grunt, которые вам нужно выполнить.)

Есть несколько других проблем, с которыми вы можете столкнуться. Я пишу об этом в своем личном блоге, в котором описаны некоторые проблемы, с которыми вы можете столкнуться.

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