次の方法で共有


ローカル Git を使用して Azure App Service にデプロイする

コードを展開する最も簡単な方法の 1 つは、ローカル コンピューターからの方法です。 この記事では、ローカル コンピューター上の Git リポジトリから Azure App Service にアプリをデプロイする方法について説明します。

ローカル Git デプロイでは 、Source Control Manager (SCM) 基本認証が必要です。 これは、他のデプロイ方法よりも安全性が低くなります。 基本認証が無効になっている場合、アプリのデプロイ センターでローカル Git デプロイを構成することはできません。

前提条件

この記事の手順を完了するには、次のものが必要です。

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

  • Git がインストールされ、デプロイするアプリ コードを含むローカル Git リポジトリ。

    ローカルの Bash ターミナル ウィンドウで次のコマンドを実行して、アプリ リポジトリ Node.js サンプルを複製できます。

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    
  • Azure CLI コマンドを使用する場合は、最新バージョンの Azure CLI が ローカル コンピューターにインストールされています。 az login を使用して Azure にサインインします。

  • Azure PowerShell コマンドを実行する場合は、最新バージョンの Azure PowerShell がインストールされていますConnect-AzAccount を使用して Azure にサインインします。

リポジトリを準備する

App Service ビルド サーバーから自動ビルドを取得するには、リポジトリ ルートにプロジェクトに正しいファイルがあることを確認します。

ランタイム ルート ディレクトリのファイル
ASP.NET (Windows のみ) *.sln*.csproj または default.aspx
ASP.NET コア *.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 継続的 WebJobs の場合は App_Data/jobs/continuous の下、トリガーされた WebJobs の場合は App_Data/jobs/triggered の下にある <job_name>/run.<extension>。 詳細については、Kudu WebJobs のドキュメントをご覧ください。
関数 Azure Functions の継続的なデプロイに関するページをご覧ください。

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

ヒント

Visual Studio では、リポジトリを作成できます。 この方法を使用すると、プロジェクトは Git を使用してすぐにデプロイする準備が整います。

デプロイ ユーザーの資格情報

アプリを認証してデプロイするには、デプロイ ユーザーの資格情報が必要です。 これらは Azure サブスクリプションの資格情報とは異なり、 ユーザー スコープ または アプリケーション スコープ の資格情報を使用できます。

ローカル Git デプロイのユーザー スコープデプロイ ユーザーには、パスワードではなくユーザー名のみが必要です。 ユーザー スコープのユーザー名は、Azure CLI コマンド az webapp deployment user set --user-name <username>を実行するか、アプリのデプロイ センターの [ローカル Git/FTPS 資格情報] タブの [ユーザー スコープ] で設定できます。

ユーザー スコープのデプロイ ユーザーを作成したら、アクセス権を持つすべての App Service アプリで使用できます。 詳細については、「 ユーザー スコープの資格情報を構成する」を参照してください。

アプリケーション スコープのデプロイ ユーザーはアプリ固有であり、アプリの作成時に自動的に作成されます。 デプロイに使用するアプリケーション スコープのユーザー資格情報は、アプリのデプロイ センター[ローカル Git/FTPS 資格情報] タブから取得できます。

Git 対応アプリを作成して構成する

Azure CLI、Azure PowerShell、または Azure portal を使用して、Git 対応アプリを作成して構成したり、既存のアプリのローカル Git デプロイを構成したりできます。

  • ローカル Git デプロイ用に構成された新しい Web アプリを作成するには、--deployment-local-git オプションを使用して az webapp create を実行します。 次に例を示します。

    az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name myApp --runtime "NODE:20-lts" --deployment-local-git
    
  • 既存のアプリのローカル Git デプロイを構成するには、 az webapp deployment source config-local-git を実行します。 次に例を示します。

    az webapp deployment source config-local-git --name myApp --resource-group myResourceGroup
    

どちらのコマンドでも、次のような URL を含む出力が生成されます。

Local git is configured with url of 'https://contoso-user@myapp.scm.azurewebsites.net/myApp.git'

上記の URL には、 ユーザー スコープの展開ユーザー名contoso-userが含まれています。 ユーザー スコープの展開ユーザー名がない場合、URL は アプリケーション スコープのユーザー名 (たとえば、 https://$myApp@myApp.scm.azurewebsites.net/myApp.git) を使用します。

この Git クローン URL を使用して、次の手順でアプリをデプロイします。

Web アプリのデプロイ

アプリを Azure にデプロイするには、必要に応じてリモート ブランチを作成し、正しいブランチにデプロイしていることを確認してから、コードをリモートにプッシュします。

リモート ブランチを作成する

Azure PowerShell New-AzWebApp を使用してサンプル コードからアプリを作成した場合、 azure リモートは既に作成されています。 それ以外の場合は、次の手順に従ってリモートを作成します。

  1. ローカル ターミナルで、複製した Git リポジトリのルートにディレクトリを変更します。

  2. Git クローン URL を使用して、 azure という名前の Git リモートを追加します。 Git クローン URL がわからない場合は、 https://<app-name>.scm.azurewebsites.net/<app-name>.gitを使用します。

    git remote add azure <git-clone-url>
    

正しいブランチにプッシュする

App Service リポジトリは、既定でファイルを master ブランチにデプロイします。 既存のローカル ファイルがリポジトリの master ブランチにある場合は、 git push azure masterを実行してアプリをデプロイできるようになりました。

ただし、この記事のサンプル コード リポジトリを含む多くの Git リポジトリでは、 main または別の既定のブランチ名を使用します。 正しいブランチにデプロイするには、リモート master ブランチに明示的にデプロイするか、展開ブランチを main またはその他のブランチ名に変更し、そのブランチにデプロイする必要があります。

次のpush コマンドを使用して、main ブランチからmasterに明示的にデプロイします。

git push azure main:master

または、次のように、アプリの DEPLOYMENT_BRANCH アプリ設定を main に変更し、 mainに直接プッシュします。

  • Azure CLI:

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

    1. アプリのポータル ページで、左側のナビゲーション メニューの [設定][環境変数] を選択します。
    2. [ 追加] を選択し、DEPLOYMENT_BRANCH と値main という名前のアプリケーション設定を追加して、[ 適用] を選択します。
    3. ターミナル ウィンドウで、 git push azure mainを実行します。

デプロイを完了して確認する

コードをプッシュした後に Git Credential Manager ダイアログが表示される場合は、ユーザー スコープのデプロイ ユーザー名またはアプリケーション スコープのユーザー名とパスワードを入力します。 Git リモート URL にサインイン情報が既に含まれている場合、入力を求めるメッセージは表示されません。

push コマンドからの出力を確認します。 Node.jsの npm install 、ASP.NET の MSBuild 、Python の pip install など、ランタイム固有の自動化が表示される場合があります。 エラーが発生した場合は、「 デプロイのトラブルシューティング」を参照してください。

Azure portal に移動し、アプリの [概要] ページで [既定のドメイン] リンクを選択して、アプリが正常にデプロイされたことを確認します。 アプリがブラウザー タブで開き、 Hello World! が表示されます。

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

ローカル 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 が正しいことを確認します。 必要に応じて、 git remote remove を使用して正しくない 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 <branch>で正しいブランチを指定します。
Error - Changes committed to remote repository but deployment to website failed. azure のアプリ デプロイ ブランチと一致しないローカル ブランチをプッシュしました。 現在のブランチが masterされていることを確認するか、「 正しいブランチにプッシュする」の手順に従ってデプロイ ブランチを変更します。
src refspec [branchname] does not match any. main以外のブランチにazureリモートでプッシュしようとしました。 git pushをもう一度実行し、git push azure mainを使用して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\