7

我正在尝试使用 Azure 的 Git 部署来构建和打包我的项目。

我创建了以下文件

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

我的.deployment文件调用deploy.cmd. deploy.cmd通过将路径设置为包含已签入的 Node.js 和 npm 副本来设置环境。我可以打电话npm install就好了。当我调用时grunt,它似乎执行到第一个标准输出消息,然后它返回并设置错误返回代码。除此之外,我没有收到任何其他信息。其他命令似乎运行得很好。

我试过用管道输出 STDERR,没有运气。我尝试在远程执行控制台下运行,那里没有运气。我Gruntfile.js在本地跑得很好。

有没有我想念的魔法酱?

4

1 回答 1

15

这有点老了,但无论如何我都会回答,以防万一有人遇到这个问题。


首先,在禁用颜色的情况下运行 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才能使其可靠地执行 Grunt。其中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. (注意:用你需要运行的任何 Grunt 任务替换 'clean common dist'。)

您可能会遇到其他一些问题。我在我的个人博客上写了这篇文章,其中包括您可能遇到的一些问题。

于 2013-12-03T14:07:12.077 回答