Distribuzione continua per Funzioni di Azure

Funzioni di Azure ti permette di distribuire continuamente modifiche da un repository di controllo del codice a un'app di funzione. In questo flusso di lavoro, un aggiornamento del codice attiva la compilazione, il packaging e il deployment dal tuo progetto su Azure. I provider di deployment supportati e le strategie di rilascio dipendono dal piano di hosting.

Piano di hosting Fornitore raccomandato di CI/CD Guida per il dispiegamento e il rilascio
Flex Consumption GitHub Actions o Azure Pipelines Utilizza la distribuzione dei pacchetti. Gli slot di dispiegamento non sono supportati. Usa i controlli di rilascio CI/CD e considera aggiornamenti continui per implementazioni senza tempo di inattività.
Elastic Premium, Dedicata e Consumo GitHub Actions o Azure Pipelines Utilizza la distribuzione ZIP. Se la tua app lo supporta, distribuisci in uno slot di staging, verifica l'aggiornamento e quindi scambia lo slot con quello di produzione.
App contenitore di Azure Flusso di lavoro di costruzione e distribuzione dei container Distribuisce un'immagine container. Per altre informazioni, vedere Panoramica di Funzioni di Azure in App Azure Container.

Seleziona il tuo piano di hosting in cima a questo articolo per visualizzare le linee guida per il deployment continuo che si applicano alla tua app di funzione.

Per i piani di hosting che supportano gli slot di distribuzione, configura la distribuzione continua per uno slot di gestione temporanea anziché per lo slot di produzione. Verifica gli aggiornamenti nell'ambiente di staging e poi scambia lo slot di staging con quello di produzione. Se ti connetti direttamente a uno slot di produzione, assicurati che solo codice di qualità adeguata alla produzione raggiunga il branch di integrazione.

Per il consumo Flex, configura GitHub Actions o Azure Pipelines. Poiché Flex Consumption non supporta slot di distribuzione, conserva la cronologia di distribuzione nel controllo versione e nel sistema CI/CD così da poter recuperare da una cattiva distribuzione.

Per le funzioni su App contenitore di Azure, costruisci e distribuisci un'immagine container. Gli slot di dispiegamento non sono disponibili. Usa revisioni e considera una strategia di distribuzione blue-green per rilasci senza tempi di inattività.

I passaggi del Centro di Distribuzione in questo articolo si applicano alle app funzionali che supportano l'integrazione del controllo del codice del sorgente App Service. Nel piano Consumo, questa integrazione è supportata solo su Windows. Puoi anche configurare l'integrazione del controllo del servizio utilizzando interfaccia della riga di comando di Azure.

Funzioni di Azure supporta queste origini per la distribuzione continua nell'app:

Gestire il codice del progetto in Azure Repos, uno dei servizi in Azure DevOps. Supporta sia Git che il controllo della versione di Team Foundation. Usato con il provider di compilazione Azure Pipelines. Per altre informazioni, vedere Cos’è Azure Repos?.

Puoi anche collegare la tua app di funzioni a un repository Git esterno, ma questa opzione richiede la sincronizzazione manuale. Per altre informazioni sulle opzioni di distribuzione, vedere Tecnologie di distribuzione in Funzioni di Azure.

Note

Le opzioni di distribuzione continua descritte in questo articolo sono specifiche per le distribuzioni di solo codice. Per informazioni su Funzioni di Azure in App contenitore di Azure, consulta Funzioni di Azure on App contenitore di Azure overview. Per un container personalizzato ospitato da Funzioni di Azure in un piano Premium o dedicato, consulta la sezione Abilita distribuzione continua dei container su Azure in Work with containers and Funzioni di Azure.

Flex Consumption supporta il deployment continuo da Azure Repos utilizzando Azure Pipelines e da GitHub tramite GitHub Actions. L'integrazione del controllo del codice sorgente degli App Service, inclusi i deployment di Bitbucket e Local Git, non è supportata.

Per le Funzioni su App contenitore di Azure, mantieni il tuo codice sorgente nel repository preferito e usa un workflow CI/CD per costruire e spingere un'immagine container. Poi aggiorna la tua app per le funzioni per utilizzare la nuova immagine. Per maggiori informazioni, consulta Distribuzione e configurazione di Functions in App contenitore di Azure.

Requisiti

L'unità di distribuzione per le funzioni in Azure è l'app per le funzioni. Affinché la distribuzione continua abbia esito positivo, la struttura di directory del progetto deve essere compatibile con la struttura di cartelle di base prevista da Funzioni di Azure. Quando crei il tuo progetto di codice utilizzando Funzioni di Azure Core Tools, Visual Studio Code o Visual Studio, i template di Funzioni di Azure creano progetti di codice con la corretta struttura di directory. Distribuisci tutte le funzioni in un'app per le funzioni allo stesso tempo e nello stesso pacchetto.

Dopo aver abilitato il deployment continuo, l'accesso al codice di funzione nel portale Azure viene configurato come solo lettura perché la fonte della verità si trova altrove.

Note

Il Centro distribuzione non supporta l'abilitazione della distribuzione continua per un'app per le funzioni con restrizioni di rete in ingresso. Invece, configura il flusso di lavoro del provider di build direttamente su GitHub o Azure Pipelines. Il runner o l'agente deve essere in grado di raggiungere l'endpoint di distribuzione dell'app con le restrizioni di accesso configurate. Quando l'endpoint è privato, anche il runner o l'agente necessita di una risoluzione DNS privata. Per Azure Pipelines, usa un agente self-hosted su una rete connessa o un pool di agenti DevOps gestito con networking. Per GitHub Actions, usa un runner self-hosted su una rete connessa o un runner ospitato su GitHub con rete privata Azure.

Quando la tua function app ha restrizioni di rete in entrata, il workflow runner o l'agente deve essere in grado di raggiungere l'endpoint di distribuzione dell'app con le restrizioni di accesso configurate. Quando l'endpoint è privato, anche il runner o l'agente necessita di una risoluzione DNS privata. Per Azure Pipelines, usa un agente self-hosted su una rete connessa o un pool di agenti DevOps gestito con networking. Per GitHub Actions, usa un runner self-hosted su una rete connessa o un runner ospitato su GitHub con rete privata Azure.

Il tuo flusso di lavoro CI/CD deve generare un'immagine del contenitore valida per Funzioni di Azure, pubblicarla in un registro a cui la tua app contenitore può accedere e aggiornare l'app per le funzioni per creare una revisione da tale immagine. Per maggiori informazioni, vedi Create a function app su App contenitore di Azure.

Selezione di un provider di compilazione

La compilazione del progetto di codice fa parte del processo di distribuzione. Il processo di compilazione specifico dipende dallo stack di linguaggio, dal sistema operativo e dal piano di hosting specifico. Puoi costruire localmente o da remoto, a seconda del tuo hosting. Per ulteriori informazioni, vedere Compilazione remota.

Importante

Per una maggiore sicurezza, utilizza un provider di build che supporti identità gestite, come Azure Pipelines e GitHub Actions. Il servizio di build App richiede di abilitare l'autenticazione di base e di utilizzare credenziali basate su testo.

Le Funzioni di Azure supportano questi provider di build:

Azure Pipelines è uno dei servizi in Azure DevOps e il provider di compilazione predefinito per i progetti Azure Repos. È anche possibile usare Azure Pipelines per compilare progetti da GitHub. In Azure Pipelines è disponibile un'attività AzureFunctionApp progettata in modo specifico per la distribuzione in Funzioni di Azure. Questa attività consente di controllare la modalità di compilazione, creazione di pacchetti e distribuzione del progetto. Azure Pipelines supporta le identità gestite.

Tenere presenti i punti di forza e le limitazioni di questi provider quando si abilita l'integrazione del controllo del codice sorgente. Potrebbe essere necessario modificare il tipo di origine del repository per sfruttare i vantaggi di un provider specifico.

Usa Azure Pipelines o GitHub Actions per costruire e distribuire il tuo progetto. Questi fornitori supportano le identità Microsoft Entra e utilizzano il processo di distribuzione del pacchetto Flex Consumption.

Il servizio di build App Service non si applica a Flex Consumption.

Usa un provider di build container che possa creare la tua immagine Funzioni di Azure, spingerla in un registro container e aggiornare la tua function app per creare una revisione dalla nuova immagine. Per un flusso di lavoro end-to-end su GitHub Actions, vedi Deploy to App contenitore di Azure with GitHub Actions.

Configurare la distribuzione continua

Il portale Azure offre un Centro di Distribuzione per le tue app di funzione, che facilita la configurazione del deployment continuo. Il modo specifico in cui si configura la distribuzione continua dipende sia dal tipo di repository del controllo del codice sorgente in cui risiede il codice che dal provider di compilazione scelto.

Nel portale di Azure passare alla pagina dell'app per le funzioni e selezionare Centro distribuzione in Distribuzione nel riquadro sinistro.

Schermata del Centro distribuzione dell'app per le funzioni nel portale di Azure in cui si sceglie il repository di origine.

Selezionare il tipo di repository origine in cui viene mantenuto il codice del progetto da una di queste opzioni supportate:

Definisci le distribuzioni da Azure Repos che utilizzano Azure Pipelines nel portale Azure DevOps. Non definire queste implementazioni dalla tua app di funzione. Per una guida passo dopo passo per creare una distribuzione basata su Azure Pipelines da Azure Repos, vedi Continuous delivery with Azure Pipelines.

Al termine del deployment, il servizio distribuisce tutto il codice dalla sorgente specificata alla tua app. A questo punto, le modifiche nell'origine di distribuzione attivano una distribuzione di tali modifiche all'app per le funzioni in Azure.

Configura il deployment continuo nel tuo repository utilizzando uno di questi provider:

Ogni esecuzione di workflow riuscita rilascia un nuovo pacchetto applicativo. L'integrazione del controllo del sorgente del Deployment Center non è disponibile per Flex Consumption.

Configura il tuo flusso di lavoro CI/CD per creare e pubblicare l'immagine del contenitore e quindi distribuire l'immagine nella tua app per le funzioni. Ogni aggiornamento dell'immagine crea una revisione delle Container App. Per ulteriori informazioni, consulta Deploy to App contenitore di Azure with GitHub Actions.

Abilitare la distribuzione continua durante la creazione dell'app

Quando crei un'app di funzioni nel portale Azure, puoi configurare il deployment continuo da GitHub usando GitHub Actions. Configura GitHub Actions nella scheda Deployment della pagina Crea Funzione App.

Per utilizzare una sorgente di distribuzione o un provider build diverso per l'integrazione continua, crea prima la tua app di funzione. Poi torna al portale e imposta l'integrazione continua nel Centro di Deployment.

Per Azure Pipelines, prima crea la tua function app e poi configura la pipeline in Azure DevOps.

Crea l'app funzione da un'immagine container, poi configura il tuo flusso di lavoro CI/CD per pubblicare immagini aggiornate e creare revisioni. Per maggiori informazioni, vedi Create a function app su App contenitore di Azure.

Abilitare l'autenticazione di base per le distribuzioni

Questa sezione si applica solo ai metodi di distribuzione che utilizzano l'endpoint di distribuzione App Service.

In alcuni casi, la tua app per le funzioni viene creata con l'accesso con autenticazione di base all'endpoint di distribuzione disabilitato. Questa condizione blocca la pubblicazione con tutti i metodi che non possono utilizzare le identità Microsoft Entra per accedere all'endpoint di distribuzione. Gli effetti di pubblicazione della disabilitazione dell'autenticazione di base per l'endpoint di distribuzione sono dettagliati in Deploy senza autenticazione di base.

Importante

Quando si usa l'autenticazione di base, le credenziali vengono inviate in testo non crittografato. Per proteggere queste credenziali, è necessario accedere all'endpoint di distribuzione tramite una connessione criptata (HTTPS) solo quando si utilizza l'autenticazione di base. Per altre informazioni, vedere Distribuzione sicura.

Per abilitare l'autenticazione di base per l'endpoint di distribuzione:

  1. Nel portale di Azure passare all'app per le funzioni.

  2. Nel menu a sinistra dell'app selezionare Impostazioni>Configurazione>generale.

  3. Impostare SCM Basic Auth Publishing Credentials (Credenziali di pubblicazione dell'autenticazione di base) su e quindi selezionare Salva.

L'autenticazione SCM di base non si applica alle implementazioni di pacchetti Flex Consumption. Per impostazione predefinita, Azure Pipelines usa un token Bearer di Microsoft Entra dalla connessione al servizio Azure richiesta; è consigliata la federazione delle identità del carico di lavoro. Per GitHub Actions, utilizza l'autenticazione consigliata OpenID Connect (OIDC). Questi metodi evitano che SCM pubblichi le credenziali e sono più sicuri rispetto all'autenticazione di base.

Questa impostazione di autenticazione di base non si applica alle Funzioni su App contenitore di Azure. Configura invece l'autenticazione tra il tuo provider CI/CD, il registro container e l'app container.

Passaggi successivi