Löpande distribution för Azure Functions

Azure Functions gör det möjligt att kontinuerligt distribuera ändringar från ett versionshanteringsarkiv till en funktionsapp. I detta arbetsflöde triggar en koduppdatering byggande, paketering och distribution från ditt projekt till Azure. De stödda distributionsleverantörerna och lanseringsstrategierna beror på värdplanen.

Webbhotellspaket Rekommenderad CI/CD-leverantör Utplacering och utsläppsvägledning
Flex Consumption GitHub Actions eller Azure-pipelines Använder paketdistribution. Utplaceringsplatser stöds inte. Använd CI/CD-releasekontroller och överväg rullande uppdateringar för driftsättningar utan driftstopp.
Elastisk premie, dedikerad och konsumtion GitHub Actions eller Azure-pipelines Använder ZIP-distribution. Om appen har stöd för det distribuerar du till en mellanlagringsplats, verifierar uppdateringen och växlar sedan platsen till produktion.
Azure Container-applikationer Arbetsflöde för containerbyggande och distribution Driftsätter en containeravbildning. Mer information finns i Översikt över Azure Functions i Azure Container Apps.

Välj din hostingplan högst upp i denna artikel för att se riktlinjerna för kontinuerlig distribution som gäller för din funktionsapp.

För värdplaner som har stöd för distributionsplatser konfigurerar du kontinuerlig distribution för en mellanlagringsplats i stället för produktionsplatsen. Verifiera uppdateringarna i mellanlagringsmiljön och växla sedan mellanlagringsplatsen till produktion. Om du ansluter direkt till en produktionsslot, se till att endast kod av produktionskvalitet når integreringsgrenen.

För Flex Consumption, konfigurera GitHub Actions eller Azure-pipelines. Eftersom Flex Consumption inte stödjer distributionsplatser, behåll din distributionshistorik i versionshanteringen och ditt CI/CD-system så att du kan återhämta dig från en dålig distribution.

För Functions på Azure Container Apps, bygg och distribuera en containerimage. Utplaceringsplatser är inte tillgängliga. Använd versioner och överväg en blågrön distributionsstrategi för släpp utan driftstopp.

Stegen för Deployment Center i den här artikeln gäller funktionsappar som stöder integrering med App Service-källkodshantering. På Consumption-planen stöds denna integration endast på Windows. Du kan också konfigurera versionshanteringsintegration genom att använda Azure CLI.

Azure Functions stöder dessa källor för kontinuerlig distribution till din app:

Behåll projektkoden i Azure-lagringsplatser, en av tjänsterna i Azure DevOps. Stöder både Versionskontroll för Git och Team Foundation. Används med Azure-pipelines-byggprovidern. Mer information finns i Vad är Azure-lagringsplatser?

Du kan också koppla din funktionsapp till ett externt Git-repository, men detta alternativ kräver manuell synkronisering. Mer information om distributionsalternativ finns i Distributionstekniker i Azure Functions.

Anteckning

Alternativ för kontinuerlig distribution som beskrivs i den här artikeln är specifika för distributioner med endast kod. För Azure Functions i Azure Container Apps, se Översikt över Azure Functions i Azure Container Apps. För en anpassad container som hostas av Azure Functions i en Premium- eller Dedikerad plan, se avsnittet Aktivera kontinuerlig distribution av containrar till Azure i Work with containers and Azure Functions.

Flex Consumption stödjer kontinuerlig distribution från Azure-lagringsplatser genom att använda Azure-pipelines och från GitHub genom att använda GitHub Actions. App Service versionshanteringsintegration, inklusive Bitbucket- och Local Git-distributioner, stöds inte.

För Functions på Azure Container Apps, underhåll din källkod i ditt föredragna repository och använd ett CI/CD-arbetsflöde för att bygga och pusha en containerimage. Uppdatera sedan din funktionsapp för att använda den nya bilden. För mer information, se Distribution och installation för Functions på Azure Container Apps.

Krav

Distributionsenheten för funktioner i Azure är funktionsappen. För att kontinuerlig distribution ska lyckas måste katalogstrukturen i projektet vara kompatibel med den grundläggande mappstrukturen som Azure Functions förväntar sig. När du skapar ditt kodprojekt med Azure Functions Core Tools, Visual Studio Code eller Visual Studio, skapar Azure Functions-mallarna kodprojekt med rätt katalogstruktur. Du distribuerar alla funktioner i en funktionsapp samtidigt och i samma paket.

Efter att du aktiverat kontinuerlig distribution konfigureras åtkomsten till funktionskoden i Azure-portalen som skrivskyddad eftersom sanningskällan finns någon annanstans.

Anteckning

Distributionscentret stöder inte aktivering av kontinuerlig distribution för en funktionsapp med begränsningar för inkommande nätverk. Konfigurera istället byggleverantörens arbetsflöde direkt i GitHub eller Azure-pipelines. Runnern eller agenten måste kunna nå appens distributionsendpoint under de konfigurerade åtkomstbegränsningarna. När slutpunkten är privat behöver runnern eller agenten också privat DNS-lösning. För Azure-pipelines, använd en självhostad agent på ett anslutet nätverk eller en hanterad DevOps-agentpool med nätverk. För GitHub Actions, använd en självhostad runner på ett anslutet nätverk eller en GitHub-hostad runner med Azure privat nätverk.

När din funktionsapp har inkommande nätverksbegränsningar måste arbetsflödeslöparen eller agenten kunna nå appens distributionspunkt under de konfigurerade åtkomstbegränsningarna. När slutpunkten är privat behöver runnern eller agenten också privat DNS-lösning. För Azure-pipelines, använd en självhostad agent på ett anslutet nätverk eller en hanterad DevOps-agentpool med nätverk. För GitHub Actions, använd en självhostad runner på ett anslutet nätverk eller en GitHub-hostad runner med Azure privat nätverk.

Ditt CI/CD-arbetsflöde måste bygga en giltig Azure Functions-containerimage, skicka bilden till ett register som din containerapp kan komma åt, och uppdatera funktionsappen för att skapa en version från den bilden. För mer information, se Skapa en funktionsapp i Azure Container Apps.

Välj en byggprovider

Att skapa kodprojektet är en del av distributionsprocessen. Den specifika byggprocessen beror på din specifika språkstack, operativsystem och värdplan. Du kan bygga lokalt eller på distans, beroende på din hosting. Mer information finns i Fjärrbygge.

Viktigt!

För ökad säkerhet, använd en byggleverantör som stödjer hanterade identiteter, såsom Azure-pipelines och GitHub Actions. App Service-byggtjänsten kräver att du aktiverar grundläggande autentisering och använder textbaserade inloggningsuppgifter.

Azure Functions har stöd för följande byggleverantörer:

Azure-pipelines är en av tjänsterna i Azure DevOps och standardleverantör för Azure-lagringsplatser-projekt. Du kan också använda Azure-pipelines för att skapa projekt från GitHub. I Azure-pipelines finns det en AzureFunctionApp uppgift som är särskilt utformad för att distribuera till Azure Functions. Den här uppgiften ger dig kontroll över hur projektet skapas, paketeras och distribueras. Azure-pipelines stöder hanterade identiteter.

Tänk på dessa leverantörers styrkor och begränsningar när du aktiverar källkontrollintegrering. Du kan behöva ändra källtypen för lagringsplatsen för att dra nytta av en viss provider.

Använd Azure-pipelines eller GitHub Actions för att bygga och distribuera ditt projekt. Dessa leverantörer stödjer Microsoft Entra-identiteter och använder Flex Consumption-paketets distributionsprocess.

App Service-byggtjänsten gäller inte för Flex Consumption.

Använd en containerbyggarleverantör som kan bygga din Azure Functions-image, skicka den till ett container-register och uppdatera din Function-app för att skapa en revision från den nya imagen. För ett end-to-end GitHub Actions-arbetsflöde, se Deploy to Azure Container Apps with GitHub Actions.

Konfigurera kontinuerlig distribution

Azure-portalen tillhandahåller ett distributionscenter för dina funktionsappar, vilket gör det enklare att konfigurera kontinuerlig distribution. Det specifika sättet du konfigurerar kontinuerlig distribution på beror både på vilken typ av lagringsplats för källkontroll som koden finns i och vilken byggprovider du väljer.

I Azure-portalen bläddrar du till funktionsappsidan och väljer Distributionscenter under Distribution i den vänstra rutan.

Skärmdump av funktionsappens Deployment Center i Azure-portalen där du väljer ditt källarkiv.

Välj den källlagringsplatstyp där projektkoden underhålls från något av följande alternativ som stöds:

Definiera distributioner från Azure-lagringsplatser som använder Azure-pipelines i Azure DevOps-portalen. Definiera inte dessa distributioner från din funktionsapp. För en steg-för-steg-guide till att skapa en Azure-pipelines-baserad distribution från Azure-lagringsplatser, se Continuous delivery with Azure-pipelines.

Efter att distributionen är klar distribuerar tjänsten all kod från den angivna källkoden till din app. Vid den tidpunkten utlöser ändringar i distributionskällan en distribution av dessa ändringar i funktionsappen i Azure.

Konfigurera kontinuerlig distribution i ditt repository genom att använda en av dessa leverantörer:

Varje lyckad arbetsflödeskörning distribuerar ett nytt applikationspaket. Integrering av källkontroll i Distributionscenter är inte tillgänglig för Flex Consumption.

Konfigurera ditt CI/CD-arbetsflöde för att bygga och pusha containerimagen, och distribuera sedan bilden till din funktionsapp. Varje bilduppdatering skapar en version av Container Apps. För mer information, se Deploy to Azure Container Apps with GitHub Actions.

Aktivera kontinuerlig distribution när appen skapas

När du skapar en funktionsapp i Azure-portalen kan du konfigurera kontinuerlig distribution från GitHub genom att använda GitHub Actions. Konfigurera GitHub Actions på fliken Deployment på sidan Skapa Funktionsapp.

För att använda en annan distributionskälla eller byggleverantör för kontinuerlig integration, skapa först din funktionsapp. Gå sedan tillbaka till portalen och sätt upp kontinuerlig integration i Deployment Center.

För Azure-pipelines, skapa först din funktionsapp och konfigurera sedan pipelinen i Azure DevOps.

Skapa funktionsappen från en containerimage och konfigurera sedan ditt CI/CD-arbetsflöde för att publicera uppdaterade bilder och skapa revisioner. För mer information, se Skapa en funktionsapp i Azure Container Apps.

Aktivera grundläggande autentisering för distributioner

Detta avsnitt gäller endast för distributionsmetoder som använder App Service-distributionsendpointen.

I vissa fall skapas din funktionsapp med grundläggande autentiseringsåtkomst till distributionsendpointen inaktiverad. Detta villkor blockerar publicering med alla metoder som inte kan använda Microsoft Entra-identiteter för att komma åt distributions-endpointen. Publiceringseffekterna av att inaktivera grundläggande autentisering för distributionsändpunkten beskrivs i Deploy utan grundläggande autentisering.

Viktigt!

När du använder grundläggande autentisering skickas autentiseringsuppgifterna i klartext. För att skydda dessa inloggningsuppgifter måste du endast komma åt distributionsändpunkten via en krypterad anslutning (HTTPS) när du använder grundläggande autentisering. Mer information finns i Säker distribution.

För att aktivera grundläggande autentisering för distributionsändpunkten:

  1. Gå till funktionsappen i Azure Portal.

  2. På appens vänstra meny väljer du Inställningar>Konfiguration>Allmänna inställningar.

  3. Ange autentiseringsuppgifter för SCM Basic Auth Publishing till På och välj sedan Spara.

SCM:s grundläggande autentisering gäller inte för Flex Consumption-paketdistributioner. Som standard använder Azure-pipelines en Microsoft Entra-bearertoken från den Azure-tjänstanslutning som krävs; federation av arbetsbelastningsidentiteter rekommenderas. För GitHub Actions, använd den rekommenderade OpenID Connect (OIDC)-autentiseringen. Dessa metoder undviker att SCM-publiceringsuppgifter publiceras och är säkrare än grundläggande autentisering.

Denna grundläggande autentiseringsinställning gäller inte för Functions i Azure Container Apps. Konfigurera autentisering mellan din CI/CD-leverantör, container-register och container-app istället.

Nästa steg