7

Azure の Git デプロイを使用してプロジェクトをビルドおよびパッケージ化しようとしています。

以下のファイルを作成しました

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

私の.deploymentファイルは を呼び出しますdeploy.cmddeploy.cmdNode.js と npm のチェックイン コピーを含むようにパスを設定して、環境をセットアップします。ちゃんと呼べますnpm install。を呼び出すとgrunt、最初の標準出力メッセージまで実行されたようで、その後返され、エラー リターン コードが設定されます。それ以外のメッセージは受け取りません。他のコマンドは問題なく動作するようです。

STDERR をパイプアウトしようとしましたが、うまくいきませんでした。リモート実行コンソールで実行してみましたが、うまくいきませんでした。私のGruntfile.js実行はローカルで問題なく実行されます。

私が見逃している魔法のソースはありますか?

4

1 に答える 1

15

これは少し古いですが、誰かがこの質問に出くわした場合に備えて、とにかく答えます。


まず、診断コンソールと展開ログの両方が ANSI コードで苦労するため、色を無効にして grunt を実行すると便利です。これを行うには、実行しますgrunt --no-color。これにより、STDOUT 情報がコンソールとデプロイ ログに戻されます。

次に、Node または NPM のチェックイン バージョンの使用はお勧めしません。Windows Azure には既にこれらの機能が環境に組み込まれており、最適な状態で両方を実行するために必要な特別な一時パスとキャッシュ パスが既に構成されています。

Project Kuduは Azure Deployments を強化するデプロイ エンジンですが、.deployment ファイルがあるので、これは既にご存じでしょう。ただし、Azure コマンド ライン ツール [ npm install azure-cli --global] は、Azure のプリインストールされたノードと NPM のセットアップを使用する、より優れたデプロイ スクリプトの足場を構築するのに役立ちます。

azure site deploymentscript –-node

そのベースノードスクリプトを取得します。

そこから、deploy.shGrunt を確実に実行できるようにするには、いくつかの変更が必要です。その中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 タスクに置き換えてください。)

他にもいくつかの問題が発生する可能性があります。これについては、個人のブログの投稿に書きます。これには、遭遇する可能性のある問題の一部が含まれています。

于 2013-12-03T14:07:12.077 に答える