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

このハウツー ガイドでは、ローカル コンピューター上の Git リポジトリから Azure App Service にコードをデプロイする方法を説明します。This how-to guide shows you how to deploy your code to Azure App Service from a Git repository on your local computer.

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

前提条件Prerequisites

このハウツー ガイドの手順に従うには:To follow the steps in this how-to guide:

サンプル リポジトリを使用して手順に従うには、ローカルのターミナル ウィンドウで次のコマンドを実行します。To use a sample repository to follow along, run the following command in your local terminal window:

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

リポジトリを準備するPrepare your repository

Azure App Service Kudu ビルド サーバーから自動ビルドを取得するには、リポジトリのルートに、プロジェクトの適切なファイルがあることを確認してください。To get automatic builds from the Azure App Service Kudu build server, make sure that your repository root has the correct files in your project.

ランタイムRuntime ルート ディレクトリのファイルRoot directory files
ASP.NET (Windows のみ)ASP.NET (Windows only) *.sln*.csproj、または default.aspx*.sln, *.csproj, or default.aspx
ASP.NET CoreASP.NET Core *.sln または *.csproj*.sln or *.csproj
PHPPHP index.phpindex.php
Ruby (Linux のみ)Ruby (Linux only) GemfileGemfile
Node.jsNode.js server.jsapp.js、またはスタート スクリプトを含む package.jsonserver.js, app.js, or package.json with a start script
PythonPython *.pyrequirements.txt、または runtime.txt*.py, requirements.txt, or runtime.txt
HTMLHTML default.htmdefault.htmldefault.aspindex.htmindex.html、または iisstart.htmdefault.htm, default.html, default.asp, index.htm, index.html, or iisstart.htm
WebJobsWebJobs App_Data/jobs/continuous (継続的 WebJobs の場合) または App_Data/jobs/triggered (トリガーされた WebJobs の場合) 配下の <job_name>/run.<extension><job_name>/run.<extension> under App_Data/jobs/continuous (for continuous WebJobs) or App_Data/jobs/triggered (for triggered WebJobs). 詳細については、Kudu WebJobs のドキュメントをご覧ください。For more information, see Kudu WebJobs documentation.
FunctionsFunctions Azure Functions の継続的なデプロイに関するページをご覧ください。See Continuous deployment for Azure Functions.

デプロイをカスタマイズするには、 .deployment ファイルをリポジトリのルートに含めます。To customize your deployment, include a .deployment file in the repository root. 詳細については、デプロイのカスタマイズに関するページおよび「Custom deployment script (カスタム デプロイ スクリプト)」を参照してください。For more information, see Customize deployments and Custom deployment script.

注意

Visual Studio で開発する場合は、Visual Studio にリポジトリを自動作成させてください。If you develop in Visual Studio, let Visual Studio create a repository for you. プロジェクトは Git を使用してすぐにデプロイできます。The project is immediately ready to be deployed by using Git.

Azure Cloud Shell を使用するUse Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell では、bashPowerShell のいずれかを使用して Azure サービスを操作できます。Cloud Shell lets you use either bash or PowerShell to work with Azure services. ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell を起動するには:To launch Azure Cloud Shell:

オプションOption 例とリンクExample/Link
コード ブロックの右上隅にある [使ってみる] を選択します。Select Try It in the upper-right corner of a code block. [試してみる] を選択しても、コードは Cloud Shell に自動的にコピーされません。Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell の [使ってみる] の例
https://shell.azure.com に移動するか、 [Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. <a href="https://shell.azure.com" title="Azure Cloud Shell を起動する
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure Portal の [Cloud Shell] ボタン

Azure Cloud Shell でこの記事のコードを実行するには:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell を起動します。Launch Cloud Shell.
  2. [コピー] ボタンを選択して、コード ブロックをコードにコピーします。Select the Copy button on a code block to copy the code.
  3. Windows と Linux では Ctrl + Shift + V キー、macOS では Cmd + Shift + V キーを使用して、コードを Cloud Shell セッションに貼り付けます。Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.
  4. Enter キーを押して、コードを実行します。Press Enter to run the code.

Kudu ビルドを使用してデプロイするDeploy with Kudu builds

Kudu ビルド サーバーを使用したアプリへのローカル Git のデプロイを有効にする最も簡単な方法は、Cloud Shell を使用することです。The easiest way to enable local Git deployment for your app with the Kudu build server is to use the Cloud Shell.

デプロイ ユーザーを構成するConfigure a deployment user

Azure Cloud Shell で az webapp deployment user set コマンドを使用して、デプロイ資格情報を構成します。In the Azure Cloud Shell, configure deployment credentials with the az webapp deployment user set command. FTP とローカル Git のデプロイには、このデプロイ ユーザーを使用します。You use this deployment user for FTP and local Git deployment to a web app. ユーザー名とパスワードはアカウント レベルです。The username and password are account level. "Azure サブスクリプションの資格情報とは異なります。 "They're different from your Azure subscription credentials.

次の例では、 <username><password> を新しいユーザー名とパスワードで置き換えます (かっこも含めます)。In the following example, replace <username> and <password>, including the brackets, with a new username and password. ユーザー名は Azure 内で一意になっている必要があります。The username must be unique within Azure. パスワードは長さが 8 文字以上で、文字、数字、記号のうち 2 つを含む必要があります。The password must be at least eight characters long, with two of the following three elements: letters, numbers, and symbols.

az webapp deployment user set --user-name <username> --password <password>

パスワードが null と表示された状態で JSON 出力が返されます。You get a JSON output with the password shown as null. 'Conflict'. Details: 409 エラーが発生した場合は、ユーザー名を変更します。If you get a 'Conflict'. Details: 409 error, change the username. 'Bad Request'. Details: 400 エラーが発生した場合は、より強力なパスワードを使用します。If you get a 'Bad Request'. Details: 400 error, use a stronger password. デプロイ ユーザー名に、ローカルの Git プッシュを表す '@' 記号が含まれていてはなりません。The deployment username must not contain ‘@’ symbol for local Git pushes.

このデプロイ ユーザーの構成は、1 回だけ実行します。You configure this deployment user only once. すべての Azure デプロイでこれを使用できます。You can use it for all your Azure deployments.

注意

ユーザー名とパスワードをメモします。Record the username and password. 後で Web アプリをデプロイするときに必要になります。You need them to deploy the web app later.

Kudu を使用するローカル Git を有効にするEnable local Git with Kudu

Kudu ビルド サーバーを使用したアプリへのローカル Git のデプロイを有効にするには、Cloud Shell で az webapp deployment source config-local-git を実行します。To enable local Git deployment for your app with the Kudu build server, run az webapp deployment source config-local-git in the Cloud Shell.

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

Git 対応アプリを作成するには、Cloud Shell で --deployment-local-git パラメーターを指定して az webapp create を実行します。To create a Git-enabled app instead, run az webapp create in the Cloud Shell with the --deployment-local-git parameter.

az webapp create --name <app_name> --resource-group <group_name> --plan <plan_name> --deployment-local-git

az webapp create コマンドの出力は次のようになります。The az webapp create command should give you something similar to the following output:

Local git is configured with url of 'https://<username>@<app_name>.scm.azurewebsites.net/<app_name>.git'
{
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app_name>.azurewebsites.net",
  "deploymentLocalGitUrl": "https://<username>@<app_name>.scm.azurewebsites.net/<app_name>.git",
  "enabled": true,
  < JSON data removed for brevity. >
}

プロジェクトをデプロイするDeploy your project

"ローカル ターミナル ウィンドウ" で、ローカル Git リポジトリに Azure リモートを追加します。Back in the local terminal window, add an Azure remote to your local Git repository. <url> を、「アプリの Git を有効にする」で取得した Git リモートの URL で置き換えます。Replace <url> with the URL of the Git remote that you got from Enable Git for your app.

git remote add azure <url>

アプリをデプロイするために、次のコマンドで Azure リモートにプッシュします。Push to the Azure remote to deploy your app with the following command. パスワードの入力を求められたら、Azure Portal へのログインに使用するパスワードではなく、「デプロイ ユーザーの構成」で作成したパスワードを入力するようにしてください。When prompted for a password, make sure that you enter the password you created in Configure a deployment user, not the password you use to log in to the Azure portal.

git push azure master

出力には、MSBuild (ASP.NET 向け)、npm install (Node.js 向け)、pip install (Python 向け) など、ランタイム固有のオートメーションが表示される場合があります。You may see runtime-specific automation in the output, such as MSBuild for ASP.NET, npm install for Node.js, and pip install for Python.

アプリに移動して、コンテンツがデプロイされていることを確認します。Browse to your app to verify that the content is deployed.

Azure DevOps ビルドを使用してデプロイするDeploy with Azure DevOps builds

注意

App Service で必要な Azure Pipelines を Azure DevOps Services 組織に作成するには、Azure アカウントが Azure サブスクリプションの所有者ロールを持っている必要があります。For App Service to create the necessary Azure Pipelines in your Azure DevOps Services organization, your Azure account must have the role of Owner in your Azure subscription.

Kudu ビルド サーバーを使用したアプリへの ローカルGit のデプロイを有効にするには、Azure Portal でアプリに移動します。To enable local Git deployment for your app with the Kudu build server, navigate to your app in the Azure portal.

アプリ ページの左側のナビゲーションで、 [デプロイ センター] > [ローカル Git] > [継続] をクリックします。In the left navigation of your app page, click Deployment Center > Local Git > Continue.

[Azure Pipelines (プレビュー)] > [続行] の順にクリックします。Click Azure Pipelines (Preview) > Continue.

[構成] ページで、新しい Azure DevOps 組織を構成するか、既存の組織を指定します。In the Configure page, configure a new Azure DevOps organization, or specify an existing organization. 完了したら、 [続行] をクリックします。When finished, click Continue.

注意

一覧にない既存の Azure DevOps 組織を使用する場合、Azure DevOps Services 組織を Azure サブスクリプションにリンクする必要があります。If you want to use an existing Azure DevOps organization that is not listed, you need to link the Azure DevOps Services organization to your Azure subscription.

App Service プランの価格レベルによっては、 [ステージングへのデプロイ] ページも表示される場合があります。Depending on the pricing tier of your App Service plan, you may also see a Deploy to staging page. デプロイ スロットを有効にするかどうかを選択し、 [続行] をクリックします。Choose whether to enable deployment slots, then click Continue.

[概要] ページで、選択内容を確認し、 [完了] をクリックします。In the Summary page, verify your options and click Finish.

Azure DevOps Services 組織の準備が完了するまで数分かかります。It takes a few minutes for the Azure DevOps Services organization to be ready. 準備ができたら、デプロイ センターで Git リポジトリの URL をコピーします。When it's ready, copy the Git repository URL in the deployment center.

"ローカル ターミナル ウィンドウ" で、ローカル Git リポジトリに Azure リモートを追加します。Back in the local terminal window, add an Azure remote to your local Git repository. <url> を、最後の手順で取得した URL に置き換えます。Replace <url> with the URL you got from the last step.

git remote add vsts <url>

アプリをデプロイするために、次のコマンドで Azure リモートにプッシュします。Push to the Azure remote to deploy your app with the following command. Git Credential Manager のプロンプトが表示されたら、visualstudio.com ユーザーでサインインします。When prompted by Git Credential Manager, sign in with your visualstudio.com user. 追加の認証方法については、Azure DevOps Services 認証の概要に関する記事を参照してください。For additional authentication methods, see Azure DevOps Services authentication overview.

git push vsts master

デプロイが完了したら、https://<vsts_account>.visualstudio.com/<project_name>/_build でビルドの進行状況を、https://<vsts_account>.visualstudio.com/<project_name>/_release でデプロイの進行状況を確認できます。Once deployment is finished, you can find the build progress at https://<vsts_account>.visualstudio.com/<project_name>/_build and the deployment progress at https://<vsts_account>.visualstudio.com/<project_name>/_release.

アプリに移動して、コンテンツがデプロイされていることを確認します。Browse to your app to verify that the content is deployed.

使用しているアプリはデプロイ中にどうなりますか?What happens to my app during deployment?

正式にサポートされているすべてのデプロイ方法には、アプリの /home/site/wwwroot フォルダー内のファイルに変更を加えるという 1 つの共通点があります。All the officially supported deployment methods have one thing in common: they make changes to the files in the /home/site/wwwroot folder of your app. これらは、運用環境で実行されているのと同じファイルです。These are the same files that are run in production. そのため、ロックされたファイルが原因でデプロイが失敗する可能性があります。あるいは、すべてのファイルが同時に更新されるわけではないために、デプロイ中に運用環境のアプリが予期しない動作をする場合があります。Therefore, the deployment can fail due to locked files, or the app in production may have unpredictable behavior during deployment because not all the files are updated simultaneously. これらの問題を回避するにはいくつかの方法があります。There are a few different ways to avoid these issues:

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

Git を使用して Azure の App Service アプリに発行するときの一般的なエラーまたは問題を以下に示します。The following are common errors or problems when using Git to publish to an App Service app in Azure:


症状: Unable to access '[siteURL]': Failed to connect to [scmAddress]Symptom: Unable to access '[siteURL]': Failed to connect to [scmAddress]

原因: このエラーはアプリが実行されていない場合に発生する可能性があります。Cause: This error can happen if the app isn't up and running.

解決策: Azure portal でアプリを起動します。Resolution: Start the app in the Azure portal. Web アプリが停止している間は、Git デプロイは利用できません。Git deployment is unavailable when the Web App is stopped.


症状: Couldn't resolve host 'hostname'Symptom: Couldn't resolve host 'hostname'

原因: このエラーは、"azure" リモートを作成するときに入力したアドレス情報が間違っている場合に発生する可能性があります。Cause: This error can happen if the address information entered when creating the 'azure' remote was incorrect.

解決策: git remote -v コマンドを使用して、すべてのリモートおよび関連付けられている URL を一覧表示します。Resolution: Use the git remote -v command to list all remotes, along with the associated URL. "azure" リモートの URL が正しいことを確認します。Verify that the URL for the 'azure' remote is correct. 必要に応じて、このリモートを削除し、正しい URL を使用して再作成します。If needed, remove and recreate this remote using the correct URL.


症状: No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'master'.Symptom: No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'master'.

原因: このエラーは、git push でブランチを指定しなかった場合、または .gitconfigpush.default 値を設定しなかった場合に発生する可能性があります。Cause: This error can happen if you don't specify a branch during git push, or if you haven't set the push.default value in .gitconfig.

解決策: master ブランチを指定して、もう一度 git push を実行します。Resolution: Run git push again, specifying the master branch. 例:For example:

git push azure master

症状: src refspec [branchname] does not match any.Symptom: src refspec [branchname] does not match any.

原因: このエラーは、"azure" リモートの master 以外のブランチにプッシュしようとした場合に発生する可能性があります。Cause: This error can happen if you try to push to a branch other than master on the 'azure' remote.

解決策: master ブランチを指定して、もう一度 git push を実行します。Resolution: Run git push again, specifying the master branch. 例:For example:

git push azure master

症状: RPC failed; result=22, HTTP code = 5xx.Symptom: RPC failed; result=22, HTTP code = 5xx.

原因: このエラーは、HTTPS 経由で大規模な Git リポジトリをプッシュしようとした場合に発生する可能性があります。Cause: This error can happen if you try to push a large git repository over HTTPS.

解決策: ローカル コンピューター上の Git 構成を変更して postBuffer を増やします。Resolution: Change the git configuration on the local machine to make the postBuffer bigger

git config --global http.postBuffer 524288000

症状: Error - Changes committed to remote repository but your web app not updated.Symptom: Error - Changes committed to remote repository but your web app not updated.

原因: このエラーは、追加の必須モジュールを指定する package.json ファイルを含む Node.js アプリをデプロイする場合に発生する可能性があります。Cause: This error can happen if you deploy a Node.js app with a package.json file that specifies additional required modules.

解決策: "npm ERR!" を含む追加のメッセージが、Resolution: Additional messages with 'npm ERR!' このエラーの前に、ログに記録されます。このメッセージによって、このエラーに関する追加のコンテキストが提供される場合があります。should be logged before this error, and can provide additional context on the failure. このエラーの既知の原因と、対応する "npm ERR!" メッセージを以下に示します。The following are known causes of this error and the corresponding 'npm ERR!' メッセージ:message:

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

  • Windows 用のバイナリ配布がないネイティブ モジュール:Native module that doesn't have a binary distribution for Windows:

    • npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1

      またはOR

    • npm ERR! [modulename@version] preinstall: \make || gmake\

その他のリソースAdditional Resources