共用方式為


使用 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*.csprojdefault.aspx
ASP.NET Core *.sln*.csproj
PHP index.php
Ruby (僅限 Linux) Gemfile
Node.js server.jsapp.jspackage.json 搭配啟動指令碼。
Python(程式語言) *.pyrequirements.txtruntime.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 。 如需詳細資訊,請參閱自訂部署自訂部署指令碼

提示

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 認證管理員] 對話框中,輸入您的 使用者範圍或應用程式範圍登入資訊,而不是您的 Azure 登入資訊。

    如果您的 Git 遠端 URL 已經包含您的使用者名稱和密碼,則系統不會提示您輸入它們。

  4. 檢閱輸出。 您可能會看到運行時間特定的自動化,例如 MSBuild for ASP.NET、適用於 Node.js的 npm 安裝,或適用於 Python 的 pip 安裝。

  5. 在 Azure 入口網站中,移至您的應用程式,確認已部署內容。

變更部署分支

當您將認可推送至 App Service 存放庫時,App Service 預設會在 master 分支中部署檔案。 由於許多 Git 存放庫都從 master 移至 main,因此請確定您以下列兩種方式之一推送至 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 入口網站中變更 DEPLOYMENT_BRANCH 應用程式設定:

    1. [設定] 底下,選取 [ 環境變數]。
    2. 新增具有名稱和 DEPLOYMENT_BRANCHmain的應用程式設定。

針對部署進行疑難排解

當您在 Azure 中使用 Git 發佈至 App Service 應用程式時,可能會看到下列常見錯誤訊息:

訊息 原因 解決方案
Unable to access '[siteURL]': Failed to connect to [scmAddress] 應用程式未執行。 在 Azure 入口網站中,啟動應用程式。 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. 如果您嘗試透過 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

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