次の方法で共有


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

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

この展開方法では 、ソース管理マネージャー (SCM) の基本認証が必要です。これは、 他の展開方法よりも安全性が低くなります。 ローカル Git デプロイが機能しない場合、アプリデプロイ センターでローカル Git デプロイを構成することはできません。

前提条件

この記事で説明されている手順を完了するには、次の手順を実行します。

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

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

  • デプロイするコードを含むローカル 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.jsapp.js、またはpackage.jsonで開始スクリプトと共に使用します。
Python(プログラミング言語) *.pyrequirements.txt または runtime.txt
HTML default.htmdefault.htmldefault.aspindex.htmindex.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 アプリのデプロイ

  1. ローカル ターミナル ウィンドウで、ディレクトリを Git リポジトリのルートに変更します。 アプリの URL を使用して Git リモートを追加します。 使用するメソッドで URL が提供されない場合は、アプリ名と共に https://<app-name>.scm.azurewebsites.net/<app-name>.git を使用します。

    git remote add azure <url>
    

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

  2. git push azure masterを実行して Azure リモート ブランチにプッシュします。

    詳細については、「 デプロイ ブランチの変更」を参照してください。

  3. [Git Credential Manager] ダイアログで、Azure サインイン情報ではなく、ユーザー スコープまたはアプリケーション スコープのサインイン情報を入力します。

    Git リモート URL にユーザー名とパスワードが既に含まれている場合、入力を求めるメッセージは表示されません。

  4. 出力結果を確認します。 msBuild for ASP.NET、npm install for Node.js、python の pip インストールなど、ランタイム固有の自動化が表示される場合があります。

  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
    

    Azure portal で DEPLOYMENT_BRANCH アプリの設定を変更することもできます。

    1. [設定] で、[環境変数] を選択します
    2. 名前 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\