Azure App Service へのローカル Git デプロイ

このハウツー ガイドでは、ローカル コンピューター上の Git リポジトリから Azure App Service にアプリをデプロイする方法を説明します。

前提条件

このハウツー ガイドの手順に従うには:

  • Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

  • Git をインストールします

  • デプロイするコードを含むローカル Git リポジトリを用意します。 サンプル リポジトリをダウンロードするには、ご利用のローカル ターミナル ウィンドウで次のコマンドを実行します。

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    

リポジトリを準備する

Azure App Service ビルド サーバーから自動ビルドを取得するには、リポジトリのルートに、プロジェクトの適切なファイルがあることを確認してください。

ランタイム ルート ディレクトリのファイル
ASP.NET (Windows のみ) *.sln*.csproj、または default.aspx
ASP.NET Core *.sln または *.csproj
PHP index.php
Ruby (Linux のみ) Gemfile
Node.js server.jsapp.js、またはスタート スクリプトを含む package.json
Python *.pyrequirements.txt、または runtime.txt
HTML default.htmdefault.htmldefault.aspindex.htmindex.html、または iisstart.htm
WebJobs <job_name>/run.<extension> これは App_Data/jobs/continuous (継続的 WebJobs の場合) または App_Data/jobs/triggered (トリガーされた WebJobs の場合) の下にあります。 詳細については、Kudu WebJobs のドキュメントをご覧ください。
関数 Azure Functions の継続的なデプロイに関するページをご覧ください。

デプロイをカスタマイズするには、 .deployment ファイルをリポジトリのルートに含めます。 詳細については、デプロイのカスタマイズに関するページおよび「Custom deployment script (カスタム デプロイ スクリプト)」を参照してください。

注意

Visual Studio を使用する場合は、Visual Studio にリポジトリを自動作成させてください。 すぐに、Git を使用してプロジェクトをデプロイできるようになります。

デプロイ ユーザーを構成する

Azure App Service のデプロイ資格情報の構成」を参照してください。 ユーザースコープの資格情報またはアプリケーションスコープの資格情報のいずれかを使用できます。

Git 対応アプリを作成する

App Service アプリを既に所有していて、そのためのローカル Git デプロイを構成する場合は、代わりに「既存のアプリを構成する」を参照してください。

--deployment-local-git オプションを指定して az webapp create を実行します。 次に例を示します。

az webapp create --resource-group <group-name> --plan <plan-name> --name <app-name> --runtime "<runtime-flag>" --deployment-local-git

出力には、https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git のような URL が含まれています。 次の手順で、この URL を使用して、ご利用になるアプリをデプロイします。

既存のアプリを構成する

まだアプリを作成していない場合は、代わりに「Git 対応アプリを作成する」を参照してください。

az webapp deployment source config-local-git を実行します。 次に例を示します。

az webapp deployment source config-local-git --name <app-name> --resource-group <group-name>

出力には、https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git のような URL が含まれています。 次の手順で、この URL を使用して、ご利用になるアプリをデプロイします。

ヒント

この URL には、ユーザースコープのデプロイのユーザー名が含まれています。 必要に応じて、アプリケーションスコープの資格情報を使用することができます。

Web アプリのデプロイ

  1. ローカル ターミナル ウィンドウで、ディレクトリを自分の Git リポジトリのルートに変更し、自分のアプリから取得した URL を使用して Git リモートを追加します。 選択した方法で URL を取得できない場合は、https://<app-name>.scm.azurewebsites.net/<app-name>.git を使用し、<app-name> にアプリの名前を指定します。

    git remote add azure <url>
    

    注意

    New-AzWebApp を使用して PowerShell で Git 対応アプリを作成した場合、既にリモートは自動的に作成されています。

  2. git push azure master を使用して Azure リモートにプッシュします (「デプロイ ブランチを変更する」を参照してください)。

  3. [Git Credential Manager](Git 資格情報マネージャー) ウィンドウには、自分の Azure サインイン資格情報ではなく、自分の ユーザースコープまたはアプリケーションスコープの資格情報を入力します。

    自分の Git リモート URL に既にユーザー名とパスワードが含まれている場合、プロンプトは表示されません。

  4. 出力結果を確認します。 MSBuild (ASP.NET 向け)、npm install (Node.js 向け)、pip install (Python 向け) など、ランタイム固有のオートメーションが表示される場合があります。

  5. Azure portal でご利用のアプリに移動して、コンテンツがデプロイされていることを確認します。

デプロイ ブランチを変更する

コミットを App Service リポジトリにプッシュすると、App Service によって既定で master ブランチにファイルがデプロイされます。 多くの Git リポジトリは master から main に移動されているので、2 つの方法のいずれかを使用して、App Service リポジトリの正しいブランチにプッシュしていることを確認する必要があります。

  • 次のようなコマンドを使用して、master に明示的にデプロイします。

    git push azure main:master
    
  • DEPLOYMENT_BRANCH アプリ設定を使用してデプロイ ブランチを変更した後、コミットをカスタム ブランチにプッシュします。 これは Azure CLI で行います。

    az webapp config appsettings set --name <app-name> --resource-group <group-name> --settings DEPLOYMENT_BRANCH='main'
    git push azure main
    

デプロイのトラブルシューティング

Git を使用して Azure の App Service アプリに発行すると、次の一般的なエラーが表示される場合があります。

Message 原因 解決方法
Unable to access '[siteURL]': Failed to connect to [scmAddress] アプリが稼働していません。 Azure portal でアプリを起動します。 Web アプリが停止しているとき、Git デプロイは利用できません。
Couldn't resolve host 'hostname' 'azure' リモートのアドレス情報が正しくありません。 git remote -v コマンドを使用して、すべてのリモートおよび関連付けられている URL を一覧表示します。 "azure" リモートの URL が正しいことを確認します。 必要に応じて、このリモートを削除し、正しい URL を使用して再作成します。
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. git push の間にブランチを指定しなかったか、または .gitconfigpush.default 値を設定していません。 メイン ブランチを指定して、もう一度 git push を実行します: git push azure main
Error - Changes committed to remote repository but deployment to website failed. "azure" のアプリ デプロイ ブランチと一致しないローカル ブランチをプッシュしました。 現在のブランチが master であることを確認してください。 既定のブランチを変更するには、DEPLOYMENT_BRANCH アプリケーション設定を使用します (「デプロイ ブランチを変更する」を参照)。
src refspec [branchname] does not match any. "azure" リモートのメイン以外のブランチにプッシュしようとしました。 メイン ブランチを指定して、もう一度 git push を実行します: git push azure main
RPC failed; result=22, HTTP code = 5xx. このエラーは、HTTPS 経由で大規模な Git リポジトリをプッシュしようとした場合に発生する可能性があります。 ローカル コンピューター上の Git 構成を変更して postBuffer を増やします。 (例: git config --global http.postBuffer 524288000)。
Error - Changes committed to remote repository but your web app not updated. 追加の必須モジュールを指定する package.json ファイルを使用して Node.js アプリをデプロイしました。 失敗に関する詳細なコンテキストについては、このエラーの前の npm ERR! エラー メッセージを確認してください。 このエラーの既知の原因と、対応する npm ERR! メッセージを以下に示します。

形式が正しくない package.json ファイル: npm ERR! Couldn't read dependencies.

Windows 用のバイナリ配布がないネイティブ モジュール:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
or
npm ERR! [modulename@version] preinstall: \make || gmake\

その他のリソース