この記事では、ローカル コンピューター上の Git リポジトリから Azure App Service にアプリをデプロイする方法について説明します。
注
この展開方法では 、ソース管理マネージャー (SCM) の基本認証が必要です。これは、 他の展開方法よりも安全性が低くなります。 ローカル Git デプロイが機能しない場合、アプリデプロイ センターでローカル Git デプロイを構成することはできません。
前提条件
この記事で説明されている手順を完了するには、次の手順を実行します。
-
Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。
デプロイするコードを含むローカル Git リポジトリを用意します。 サンプル リポジトリをダウンロードするには、ご利用のローカル ターミナル ウィンドウで次のコマンドを実行します。
git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
リポジトリを準備する
App Service ビルド サーバーから自動ビルドを取得するには、リポジトリ ルートにプロジェクトに正しいファイルがあることを確認します。
ランタイム | ルート ディレクトリのファイル |
---|---|
ASP.NET (Windows のみ) |
*.sln 、*.csproj または default.aspx |
ASP.NET Core |
*.sln または *.csproj 。 |
PHP |
index.php 。 |
Ruby (Linux のみ) |
Gemfile 。 |
Node.js |
server.js 、app.js 、またはpackage.json で開始スクリプトと共に使用します。 |
Python(プログラミング言語) |
*.py 、requirements.txt または runtime.txt |
HTML |
default.htm 、 default.html 、 default.asp 、 index.htm 、 index.html 、または iisstart.htm 。 |
WebJobs | 継続的 Web ジョブの場合は <job_name>/run.<extension> の下で、トリガーされた Web ジョブの場合は App_Data/jobs/continuous の下で App_Data/jobs/triggered 。 詳細については、Kudu WebJobs のドキュメントをご覧ください。 |
関数 | Azure Functions の継続的なデプロイに関するページをご覧ください。 |
デプロイをカスタマイズするには、リポジトリ ルートに .deployment
ファイルを含めます。 詳細については、デプロイのカスタマイズに関するページおよび「Custom deployment script (カスタム デプロイ スクリプト)」を参照してください。
ヒント
Visual Studio では、リポジトリを作成できます。 この方法を使用すると、プロジェクトは Git を使用してすぐにデプロイする準備が整います。
デプロイ ユーザーを構成する
Azure App Service のデプロイ資格情報を構成する方法について説明します。 ユーザー スコープのサインイン情報またはアプリケーション スコープのサインイン情報を使用できます。
Git 対応アプリを作成する
App Service アプリが既にあり、アプリのローカル Git デプロイを構成する場合は、「代わりに既存の アプリを構成する」 を参照してください。
オプションを使用して --deployment-local-git
を実行します。
次に例を示します。
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 アプリのデプロイ
ローカル ターミナル ウィンドウで、ディレクトリを Git リポジトリのルートに変更します。 アプリの URL を使用して Git リモートを追加します。 使用するメソッドで URL が提供されない場合は、アプリ名と共に
https://<app-name>.scm.azurewebsites.net/<app-name>.git
を使用します。git remote add azure <url>
注
New-AzWebApp を使用して PowerShell で Git 対応アプリを作成した場合、リモートは既に作成されています。
git push azure master
を実行して Azure リモート ブランチにプッシュします。詳細については、「 デプロイ ブランチの変更」を参照してください。
[Git Credential Manager] ダイアログで、Azure サインイン情報ではなく、ユーザー スコープまたはアプリケーション スコープのサインイン情報を入力します。
Git リモート URL にユーザー名とパスワードが既に含まれている場合、入力を求めるメッセージは表示されません。
出力結果を確認します。 msBuild for ASP.NET、npm install for Node.js、python の pip インストールなど、ランタイム固有の自動化が表示される場合があります。
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
Azure portal で
DEPLOYMENT_BRANCH
アプリの設定を変更することもできます。- [設定] で、[環境変数] を選択します。
- 名前
DEPLOYMENT_BRANCH
と値main
を持つアプリ設定を追加します。
デプロイのトラブルシューティング
Git を使用して Azure の App Service アプリに発行すると、次の一般的なエラーが表示される場合があります。
メッセージ | 原因 | 解像度 |
---|---|---|
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 を実行したときに分岐を指定しなかったか、push.default で.gitconfig 値を設定していません。 |
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. |
main 以外のブランチにazure リモートでプッシュしようとしました。 |
git push をもう一度実行し、メイン ブランチ (git push azure main ) を指定します。 |
RPC failed; result=22, HTTP code = 5xx. |
このエラーは、大きな Git リポジトリを HTTPS 経由でプッシュしようとすると発生する可能性があります。 | ローカル コンピューターの 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 または npm ERR! [modulename@version] preinstall: \make \|\| gmake\ |