2013-07-29 8 views
7

AzureのGitデプロイメントを使用してプロジェクトをビルドしてパッケージ化しようとしています。AzureのWebサイトでGruntが実行されない

私は私の.deploymentファイルがdeploy.cmdを呼び出して、次のファイルに

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

を作成しました。 deploy.cmdは、Node.jsとnpmのチェックインされたコピーを含むようにパスを設定することによって環境を設定します。私はnpm installと呼ぶことができます。 gruntを呼び出すと、最初の標準出力メッセージまで実行されたように見えますが、それが戻ってエラー戻りコードが設定されます。それ以外のメッセージはありません。他のコマンドはうまく動いているようです。

私はSTDERRの配管を試しましたが、運はありません。私は遠隔実行コンソールの下で走ってみました。そこに運がありません。私のGruntfile.jsはローカルで正常に動作します。

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

+0

「リモート実行コンソール」と言いますと、何を指していますか? scmサービスのルート(git urlと同じホスト名)から診断コンソールを起動してください。それはそこで失敗するのですか?正確な出力を貼り付けることはできますか?また、共有できる最小のレポがある場合は、それが調査に役立つでしょう。何かがサンドボックスによってブロックされている可能性があります。 –

+0

@DavidEbboはい私は診断コンソールを参照しています。そこでは失敗します。私はちょうどCプロンプトを返す。私はファイルをコピーしています。それらをコピーした後にいくつかを削除します(必要ではありませんが、Gitサブモジュールの一部です)。いくつかのテンプレートを実行し、環境変数を解析しています。とても標準的なもの。サンドボックスでどのような分類がブロックされていますか? –

+0

サンドボックスのブロックが微妙になる可能性があります。診断ダンプ(https://github.com/projectkudu/kudu/wiki/Investigating-issues#getting-the-diagnostic-dump)を見ることもできます。詳細については、こちらをご覧ください。あなたが見ているものを正確に見ることができる最小のレポを共有できる方法があれば、何が起こっているのかを特定できるはずです。 –

答えて

15

これはちょっと古いですが、誰かがこの質問に遭遇した場合に備えて、私はとにかく答えるでしょう。診断コンソールと展開ログの両方がANSIコードと格闘として


まず、無効色でイサキを実行すると便利です。これを行うには、grunt --no-colorを実行します。これにより、STDOUT情報がコンソールと展開ログに戻されます。

第2に、ノードまたはNPMのチェックインバージョンの使用をお勧めしません。 Windows Azureは既にこれらの環境をビルドしており、両方のために必要な特殊な一時パスとキャッシュパスが既に最適に実行されるように構成されています。

Project Kuduは、Azure Deploymentsを強化するデプロイメントエンジンですが、デプロイメントファイルは.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" 

これはあなたの/wwwrootに(Gruntfile.jsが存在する場合)grunt clean common dist、続いて(bower.jsonが存在する場合)bower installに続いて、npm installを実行し、最後にKuduSyncます。 (注: 'clean common dist'を実行する必要のあるGruntタスクに置き換えてください。)

実行可能なその他の問題がいくつかあります。私はpost on my personal blogにこれを書いています。これにはあなたが遭遇する可能性のある問題のいくつかが含まれています。

+0

Jay、私はGitを使って展開した直後に、Azure Webサイトで自分のテストをカルマで実行させるためにこのメソッドを使用できますか?(Travis-CIに似ています) – pilau

+0

例を提供していただきありがとうございます。私は関連するブログ記事を見ても、私の問題に関連するものは見つけられませんでした。 bowerとgruntの手順をdeploy.shファイルにコピーしました。私がデプロイすると、展開ログのgrunt-cli:gruntコマンドラインインターフェイスにこのエラーメッセージが表示されます。 (v0.1.13) Webサイトの展開中にエラーが発生しました。 grunt failed '任意のアイデアですか? – moke

+0

紺碧のサイトdeploymentscript --nodeは私の場合にはdeploy.cmdファイルを生成します。それは、この投稿が廃止されたことを意味しますか? – Vaibhav

関連する問題