持續部署至 Azure App Service

Azure App 服務 藉由提取最新的更新,從 GitHubBitbucketAzure Repos 存放庫啟用持續部署。

準備存放庫

若要從 Azure App 服務 組建伺服器取得自動化組建,請確定您的存放庫根目錄中有正確的檔案。

執行階段 根目錄檔案
ASP.NET (僅限 Windows) *.sln*.csprojdefault.aspx
ASP.NET Core *.sln*.csproj
PHP index.php
Ruby (僅限 Linux) Gemfile
Node.js 使用啟動腳本server.jsapp.js或package.json
Python *.pyrequirements.txtruntime.txt
HTML default.htm、default.htmldefault.asp、index.htmindex.htmliisstart.htm
WebJobs <>job_name/執行。<連續 WebJobs App_Data/jobs/continuous 下的擴充>功能,或針對觸發的 WebJobs 觸發App_Data/jobs/triggered 如需詳細資訊,請參閱 Kudu WebJobs 檔
函式 請參閱 Azure Functions 的持續部署。

若要自定義您的部署,請在存放庫根目錄中包含 .deployment 檔案。 如需詳細資訊,請參閱 自定義部署自定義部署腳本

注意

如果您使用 Visual Studio,請讓 Visual Studio 為您建立存放庫。 您的專案會立即準備好透過 Git 進行部署。

設定部署來源

  1. Azure 入口網站 中,移至 App Service 應用程式的管理頁面。

  2. 在左窗格中,選取 [部署中心]。 然後選取 [設定]。

  3. 在 [ 來源] 方塊中,選取其中一個 CI/CD 選項:

    Screenshot that shows how to choose the deployment source.

選取對應至組建提供者的索引標籤以繼續。

  1. GitHub Actions 是預設的組建提供者。 若要變更提供者,請選取 [變更提供者>App Service 建置服務>確定]。

  2. 如果您是第一次從 GitHub 部署,請選取 [ 授權 ],然後遵循授權提示。 如果您想要從不同的使用者存放庫部署,請選取 [ 變更帳戶]。

  3. 使用 GitHub 授權 Azure 帳戶之後,請選取您想要的組織、存放庫分支

    如果您找不到組織或存放庫,您可能需要在 GitHub 上啟用更多許可權。 如需詳細資訊,請參閱 管理組織存放庫的存取權。

  4. [驗證類型] 底下,選取 [使用者指派的身 分識別] 以提升安全性。 如需詳細資訊,請參閱 常見問題

    注意

    如果您的 Azure 帳戶具有 [使用者指派的身分識別] 選項的必要許可權,Azure 會為您建立使用者指派的受控識別。 如果您不這麼做,請與您的 Azure 系統管理員合作,以 在應用程式上建立具有必要角色的身分識別,然後在下拉式清單中選取它。

  5. (選擇性)若要查看儲存變更前的檔案,請選取 [預覽檔案]。 App Service 會根據 應用程式的語言堆疊設定 來選取工作流程範本,並將它認可至您選取的 GitHub 存放庫。

  6. 選取 [儲存]。

    所選存放庫和分支中的新認可現在會持續部署到 App Service 應用程式。 您可以在 [記錄] 索引標籤上追蹤認可和部署。

停用持續部署

  1. Azure 入口網站 中,移至 App Service 應用程式的管理頁面。

  2. 在左窗格中,選取 [部署中心]。 然後選取 [設定> Disconnect:

    Screenshot that shows how to disconnect your cloud folder sync with your App Service app in the Azure portal.

  3. 根據預設,GitHub Actions 工作流程檔案會保留在您的存放庫中,但它會繼續觸發對應用程式的部署。 若要從存放庫刪除檔案,請選取 [ 刪除工作流程檔案]。

  4. 選取 [確定]。

什麼是組建提供者?

視部署中心中的部署來源而定,您可能會看到幾個選項可供建置提供者選取。 建置提供者可透過自動化建置、測試和部署,透過 Azure App 服務 來協助您建置 CI/CD 解決方案。

您不限於部署中心中找到的組建提供者選項,但 App Service 可讓您快速設定這些選項,並提供整合式部署記錄體驗。

GitHub Actions 組建提供者僅適用於 GitHub 部署。 從應用程式的部署中心進行設定時,它會完成這些動作來設定 CI/CD:

  • 將 GitHub Actions 工作流程檔案儲存至 GitHub 存放庫,以處理建置和部署工作至 App Service。
  • 針對基本身份驗證,將應用程式的發佈配置檔新增為 GitHub 秘密。 工作流程檔案會使用此秘密向 App Service 進行驗證。
  • 如需使用者指派的身分識別,請參閱 GitHub Actions 的使用者指派身分識別選項有何用途?
  • 工作流程執行記錄擷取資訊,並將其顯示在部署中心的 [記錄] 索引標籤上

您可以透過下列方式自訂 GitHub Actions 建置提供者:

  • 在 GitHub 存放庫中產生工作流程檔案之後,自定義該檔案。 如需詳細資訊,請參閱 GitHub Actions 的工作流程語法。 只要確定工作流程會使用 azure/webapps-deploy 動作部署至 App Service。
  • 如果選取的分支受到保護,您仍然可以預覽工作流程檔案,而不儲存組態,然後手動將它新增至您的存放庫。 此方法不會提供您與 Azure 入口網站 的記錄整合。
  • 除了使用基本身份驗證或使用者指派的身分識別,您也可以在 Microsoft Entra ID 中使用 服務主體 進行部署。 這無法在入口網站中設定。

部署期間我的應用程式會發生什麼事?

所有官方支援的部署方法都會對應用程式 /home/site/wwwroot 資料夾中的檔案進行變更。 這些檔案用來執行您的應用程式。 因此,部署可能會由於鎖定的檔案而失敗。 應用程式也可能在部署期間發生無法預期的行為,因為檔案不會全部同時更新。 這不是客戶面向應用程式所想要的行為。 有幾種方式可以避免這些問題:

常見問題集

如果停用基本身份驗證,GitHub Actions 建置提供者是否可與基本身份驗證搭配運作?

否。 嘗試搭配 使用者指派的 身分識別選項使用 GitHub Actions。

如需詳細資訊,請參閱 不使用基本身份驗證進行部署。

使用者指派的身分識別選項對 GitHub Actions 有何用途?

當您在 GitHub Actions 來源下選取使用者指派的身分識別時,App Service 會在 Azure 和 GitHub 中設定所有必要的資源,以使用 GitHub Actions 啟用建議的 OpenID 連線 驗證。

具體來說,App Service 會執行下列作業:

在 GitHub 存放庫中的 GitHub Actions 工作流程中,您可以使用 Azure/登入動作,使用 OpenID 連線 向您的應用程式進行驗證。 如需範例,請參閱 將工作流程檔案新增至 GitHub 存放庫

如果您的 Azure 帳戶具有 必要的許可權,App Service 會建立使用者指派的受控識別,並為您進行設定。 此身分識別不會顯示在 您應用程式的 [身分 識別] 頁面中。 如果您的 Azure 帳戶沒有必要的許可權,您必須選取 具有必要角色的現有身分識別。

為什麼我看到錯誤:「您在此應用程式上沒有足夠的許可權可指派角色型存取權給受控識別並設定同盟認證」?

訊息指出您的 Azure 帳戶沒有為 GitHub Actions 建立使用者指派的受控識別所需的許可權。 所需的權限(範圍設定為您的應用程式) 為:

  • Microsoft.Authorization/roleAssignments/write
  • Microsoft.ManagedIdentity/userAssignedIdentities/write

根據預設,使用者存取 管理員 istrator 角色和擁有者角色已有這些許可權,但參與者角色則沒有。 如果您沒有必要的許可權,請與您的 Azure 系統管理員合作,以使用 網站參與者角色建立使用者指派的受控識別。 在 [部署中心] 中,您可以接著在 [GitHub>身分識別] 下拉式清單中選取身分識別。

如需替代步驟的詳細資訊,請參閱 使用 GitHub Actions 部署至 App Service。

為什麼我會看到錯誤:「此身分識別在此應用程式上沒有寫入許可權。 請選取不同的身分識別,或與您的系統管理員合作,將此應用程式的身分識別授與網站參與者角色」?

訊息指出選取的使用者指派受控識別沒有啟用 GitHub 存放庫與 App Service 應用程式之間 OpenID 連線 的必要角色。 身分識別在應用程式上必須具有下列其中一個角色: 擁有者參與者網站參與者。 身分識別所需的最低許可權角色是 網站參與者

更多資源