Azure Functions 的持續部署

Azure Functions 讓你能持續將變更從原始碼控制儲存庫部署到函式應用程式。 在這個工作流程中,程式碼更新會觸發從專案到Azure的建置、打包和部署。 支援的部署提供者與發布策略依主機計畫而定。

主機方案 推薦的CI/CD提供者 部署與釋放指引
彈性使用量 GitHub Actions 或 Azure Pipelines 使用 套件部署。 不支援部署插槽。 使用 CI/CD 發布控制,並考慮 滾動更新 以實現零停機部署。
彈性進階版、專用與使用量 GitHub Actions 或 Azure Pipelines 使用 ZIP 部署。 如果您的應用程式支援此功能,請部署至預備位置、驗證更新,然後將該位置交換到生產環境。
Azure 容器應用程式 容器建置與部署工作流程 部署容器映像。 如需詳細資訊,請參閱 Azure 容器應用程式上的 Azure Functions 概觀。

請在本文章頂部選擇您的主機計畫,以查看適用於您功能應用程式的持續部署指引。

對於支援部署時段的託管計畫,請將持續部署設定為暫存時段,而非生產時段。 在預備環境中驗證更新,然後將預備環境插槽切換至到實際執行環境。 如果您直接連接至生產插槽,請確保只有達到生產品質的程式碼才會進入整合分支。

對於 Flex Consumption 的話,請設定 GitHub Actions 或 Azure Pipelines。 因為 Flex Consumption 不支援部署位置,請在原始碼控制和 CI/CD 系統中保留部署歷程,以便您能從 錯誤的部署中復原。

對於 Azure 容器應用程式 上的函數,請建置並部署一個容器映像。 部署名額沒有空缺。 使用 修訂版本,並考慮採用 藍綠部署策略 來實現零停機發佈。

本文中的部署中心步驟適用於支援 App Service 原始碼控制整合的函式應用程式。 在取用量方案中,這項整合僅在 Windows 上受支援。 你也可以使用 Azure CLI 來設定版本控制整合。

Azure Functions 支援以下來源,用於持續部署至您的應用程式:

在 Azure Repos 中維護您的專案程式碼,這是 Azure DevOps 中的其中一項服務。 同時支援 Git 和 Team Foundation 版本控制。 與 Azure Pipelines 組建提供者搭配使用。 如需詳細資訊,請參閱 什麼是 Azure Repos?

你也可以將函式應用程式連接到外部的 Git 倉庫,但這個選項需要手動同步。 如需部署選項的詳細資訊,請參閱 Azure Functions 中的部署技術。

附註

本文所涵蓋的持續部署選項專屬於僅限程式碼部署。 關於Azure Functions on Azure 容器應用程式,請參閱Azure Functions on Azure 容器應用程式 overview。 若是針對在 Premium 或 Dedicated 方案中託管於 Azure Functions 的自訂容器,請參閱 「使用容器和 Azure Functions」 中的 「啟用將容器持續部署至 Azure」 一節。

Flex Consumption 支援透過 Azure Pipelines 從 Azure Repos 進行持續部署,並透過 GitHub Actions 從 GitHub 進行持續部署。 不支援 App Service 的原始碼控制整合,包括 Bitbucket 和本地 Git 部署。

在 Azure 容器應用程式 上使用函數時,請將原始碼維持在你偏好的儲存庫,並使用 CI/CD 工作流程來建立並推送容器映像。 然後更新你的函式應用程式,使其使用新的映像。 更多資訊請參閱 Azure 容器應用程式 上的 Functions 部署與設定。

需求

在 Azure 中,函式的部署單位是函數應用程式。 若要讓持續部署成功,您專案的目錄結構必須與 Azure Functions 預期的基本資料夾結構相容。 當你使用 Azure Functions Core Tools、Visual Studio Code 或 Visual Studio 建立程式碼專案時,Azure Functions 範本會建立具有正確目錄結構的程式碼專案。 你可以在同一個函式應用程式中同時部署所有函式,並放在同一個套件中。

啟用持續部署後,Azure 入口網站中對函式程式碼的存取會被設定為唯讀,因為真實來源在其他地方。

附註

部署中心不支援針對具有輸入網路限制的函數應用程式啟用持續部署。 相反地,請直接在 GitHub 或 Azure Pipelines 中設定建置提供者的工作流程。 執行者或代理必須能在設定的存取限制下存取應用程式的部署端點。 當端點為私有時,執行者或代理也需要私有 DNS 解析。 對於 Azure Pipelines,請使用已連線網路中的自我裝載代理程式,或具備網路功能的受控 DevOps 代理程式集區。 對於 GitHub Actions,請使用連接網路上的自架運行器,或是搭配 Azure 私有網路的 GitHub 托管執行器。

當你的功能應用程式有 入站網路限制時,工作流程執行者或代理程式必須能夠在設定的存取限制下存取應用程式的部署端點。 當端點為私有時,執行者或代理也需要私有 DNS 解析。 對於 Azure Pipelines,請使用已連接網路上的自裝載 Agent,或有網路功能的受控 DevOps Agent 集區。 對於 GitHub Actions,請使用連接網路上的自架運行器,或是搭配 Azure 私有網路的 GitHub 托管執行器。

你的 CI/CD 工作流程必須建立一個有效的 Azure Functions 容器映像,將映像推送到容器應用程式能存取的登錄檔,並更新函式應用程式從該映像建立一個版本。 欲了解更多資訊,請參閱 Azure 容器應用程式 上的「建立函式應用程式」。

選取組建提供者

建置程式碼專案是部署程序的一部分。 特定建置程序取決於您的特定語言堆疊、作業系統和主控方案。 你可以在本地或遠端建造,視你的主機而定。 如需詳細資訊,請參閱遠端組建。

重要事項

為了提升安全性,建議使用支援受管理身份的建置服務提供者,例如 Azure Pipelines 和 GitHub Actions。 App Service 建置服務要求你 啟用基本認證 並使用文字憑證。

Azure Functions 支援以下建置提供者:

Azure Pipelines 是 Azure DevOps 中的其中一項服務,也是 Azure Repos 專案的預設建置提供者。 您也可以使用 Azure Pipelines 從 GitHub 建置專案。 在 Azure Pipelines 中,有一個 AzureFunctionApp 任務,專門為部署到 Azure Functions 設計。 此工作可讓您控制專案如何進行建置、封裝及部署。 Azure Pipelines 支援受管理身份。

啟用原始檔控制整合時,請記住這些提供者的優點和限制。 您可能需要變更存放庫來源類型,才能利用特定提供者。

使用 Azure Pipelines 或 GitHub Actions 來建置並部署你的專案。 這些提供者支援 Microsoft Entra 身份,並使用 Flex Consumption 套件部署流程。

App Service 建置服務不適用於 Flex Consumption。

使用容器建置服務提供者,能建立你的 Azure Functions 映像檔,推送到容器登錄檔,然後更新函式應用程式,從新映像檔建立一個版本。 關於端對端的 GitHub Actions 工作流程,請參見「使用 GitHub Actions 部署到 Azure 容器應用程式」。

設定連續部署

Azure 入口網站提供功能應用的部署中心,讓你更容易配置持續部署。 您設定持續部署的特定方式取決於程式碼所在的原始檔控制存放庫類型,以及您選擇的組建提供者。

在 Azure 入口網站中,流覽至您的函式應用程式頁面,然後選取左窗格中 [部署] 底下的 [部署中心]。

Azure 入口網站中函式應用程式的部署中心螢幕擷取畫面,您可在其中選擇來源存放庫。

從下列其中一個支援選項中,選取要維護專案程式碼的來源存放庫類型:

在 Azure DevOps portal 中,定義來自 Azure Repos 且使用 Azure Pipelines 的部署。 不要在你的函式應用程式中定義這些部署。 關於如何從 Azure Repos 建立基於 Azure Pipelines 的部署的逐步指南,請參見「持續交付與 Azure Pipelines」。

部署完成後,服務會從指定來源部署所有程式碼到你的應用程式。 此時,部署來源中的變更會觸發在 Azure 中對這些函數應用程式變更的部署。

請使用以下提供者之一配置您的儲存庫中的持續部署:

每次成功執行工作流程都會部署一個新的應用程式套件。 部署中心的原始檔控制整合不適用於 Flex Consumption。

設定你的 CI/CD 工作流程,建立並推送容器映像,然後部署到你的函式應用程式。 每次影像更新都會產生一個容器應用程式的版本。 欲了解更多資訊,請參閱「使用 GitHub Actions 部署到 Azure 容器應用程式」。

啟用應用程式建立期間的持續部署

當你在 Azure 入口網站建立函式應用程式時,可以透過 GitHub Actions 從 GitHub 設定持續部署。 在「建立函式應用程式」頁面的部署標籤中配置 GitHub Actions。

若要使用不同的部署來源或建置工具進行持續整合,請先建立你的函式應用程式。 然後回到入口網站,在 部署中心設定持續整合。

對於 Azure Pipelines,先建立你的函式應用程式,然後在 Azure DevOps 中設定管線。

從容器映像建立函式應用程式,然後設定你的 CI/CD 工作流程來發布更新的映像檔並建立修訂版。 欲了解更多資訊,請參閱 Azure 容器應用程式 上的「建立函式應用程式」。

啟用部署的基本驗證

本節僅適用於使用 App Service 部署端點的部署方法。

在某些情況下,系統建立你的函式應用程式時,會停用對部署端點的基本驗證存取。 此條件會阻止所有無法使用 Microsoft Entra 身份存取部署端點的方法發佈。 關閉部署端點基本認證的發布影響,詳述於 「無基本認證部署」中。

重要事項

當您使用基本驗證時,認證會以純文字傳送。 為了保護這些憑證,使用基本認證時,你必須透過加密連線(HTTPS)存取部署端點。 如需詳細資訊,請參閱安全部署。

為了啟用部署端點的基本認證:

  1. 在 Azure 入口網站中,移至您的函式應用程式。

  2. 在應用程式的左側功能表上,選取 設定>設定> 一般設定。

  3. 將 SCM 基本驗證發佈認證設定為 [開啟],然後選取 [儲存]。

SCM 基本認證不適用於 Flex Consumption 套件部署。 根據預設,Azure Pipelines 會使用其必要 Azure 服務連線中的 Microsoft Entra 持有人權杖;建議使用工作負載身分同盟。 對於 GitHub Actions,請使用建議的 OpenID Connect (OIDC) 認證。 這些方法避免了 SCM 發布憑證,且比基本認證更安全。

這個基本的認證設定不適用於 Azure 容器應用程式 上的 Functions。 改為設定你的 CI/CD 提供者、容器登錄檔和容器應用程式之間的認證。

後續步驟