Condividi tramite


Configurare la distribuzione continua nel servizio app di Azure

Questo articolo illustra come configurare la distribuzione continua (CD) nel servizio app di Azure eseguendo il pull degli aggiornamenti da GitHub, Bitbucket, Azure Repos o altri repository.

Prerequisiti

Autorizzazioni di scrittura per l'app Azure App Service nel repository di controllo del codice sorgente.

Preparare il repository

Per ottenere compilazioni automatizzate dal server di compilazione di App Service, assicurarsi che la radice del repository contenga i file corretti nel tuo progetto.

tempo di esecuzione File della directory radice
ASP.NET (solo Windows) *.sln, *.csproj o default.aspx.
ASP.NET Nucleo *.sln o *.csproj.
PHP index.php.
Ruby (solo Linux) Gemfile.
Node.js server.js, app.js o package.json con uno script iniziale.
Pitone *.py, requirements.txt o runtime.txt.
HTML default.htm, default.html, default.asp, index.htmindex.html, o iisstart.htm.
Attività Web <job_name>/run.<extension> in App_Data/jobs/continuous per WebJobs continui o App_Data/jobs/triggered per i WebJobs attivati. Per ulteriori informazioni, consultare la documentazione di Kudu WebJobs.
Funzioni Vedere Distribuzione continua per Funzioni di Azure.

Per personalizzare la distribuzione, includere un .deployment file nella radice del repository. Per altre informazioni, vedere Personalizzare le distribuzioni e Script di distribuzione personalizzato.

Suggerimento

Visual Studio può creare automaticamente un repository. Con questo metodo, il progetto è immediatamente pronto per la distribuzione tramite Git.

Abilitare la distribuzione continua

  1. Nel portale di Azure, passare alla pagina per l'app di App Service e selezionare Centro distribuzione dal menu di navigazione a sinistra.

  2. Nella scheda Impostazioni sotto Origine, selezionare il tipo di repository del controllo del codice sorgente.

    Screenshot che mostra come scegliere l'origine della distribuzione.

  3. Seguire le istruzioni per il tipo di origine per configurare la distribuzione.

    Screenshot che mostra come configurare l'origine della distribuzione.

Tutte le fonti elencate possono essere create con il Servizio di compilazione di App Service. Alcune fonti possono anche essere create con GitHub Actions o Azure Pipelines. Per ulteriori informazioni, vedere Provider di build.

GitHub Actions è il provider di compilazione GitHub predefinito. Per modificare il provider, selezionare Cambia provider, selezionare Servizio di compilazione del servizio app o Azure Pipelines e quindi selezionare OK.

Se necessario, selezionare Autorizza e seguire le richieste di autorizzazione per GitHub. Per eseguire la distribuzione dal repository di un altro utente, selezionare Cambia account.

  1. Selezionare l'organizzazione, il repository e il ramo di GitHub appropriati.

    Se non è possibile trovare un'organizzazione o un repository, potrebbe essere necessario abilitare altre autorizzazioni in GitHub. Per altre informazioni, vedere Gestione dell'accesso ai repository dell'organizzazione.

  2. In Tipo di autenticazione, selezionare Identità assegnata dall'utente per una maggiore sicurezza.

    Se l'account Azure dispone delle autorizzazioni necessarie, il servizio app crea automaticamente un'identità gestita assegnata dall'utente oppure è possibile scegliere un'identità gestita esistente. Se non si hanno le autorizzazioni necessarie, rivolgersi all'amministratore di Azure per creare un'identità con il ruolo richiesto nell'app e quindi selezionarla nell'elenco a discesa.

  3. Il servizio app seleziona un modello di flusso di lavoro in base all'impostazione dello stack di linguaggio dell'app ed esegue il commit nel repository GitHub selezionato. Facoltativamente, è possibile selezionare Anteprima file per visualizzare il file del flusso di lavoro prima di salvare le modifiche.

  4. Seleziona Salva.

I nuovi commit nel repository e nel ramo selezionati vengono distribuiti in modo continuo nell'app del servizio app. È possibile tenere traccia dei commit e delle distribuzioni nella scheda Log.

Disabilitare la distribuzione continua

Per disabilitare la distribuzione continua per un'origine connessa:

  1. Nel portale di Azure, passare alla pagina per l'app di App Service e selezionare Centro distribuzione dal menu di navigazione a sinistra.

  2. Nella scheda Impostazioni selezionare Disconnetti.

    Screenshot che mostra come disconnettere la sincronizzazione delle cartelle cloud con l'app del servizio app nel portale di Azure.

  3. Seleziona OK.

Per GitHub, il file del flusso di lavoro rimane nel repository per impostazione predefinita, ma non viene più visualizzato lo stato integrato nella scheda Log del Centro distribuzione.

Quali sono i provider di compilazione?

I provider di compilazione consentono di creare una soluzione di integrazione continua e recapito continuo (CI/CD) con il servizio app di Azure automatizzando compilazione, test e distribuzione. Alcune origini di distribuzione offrono diverse opzioni del fornitore di build. Tutte le fonti elencate possono essere create con il Servizio di compilazione di App Service.

Non sei limitato alle opzioni elencate del provider di compilazione, ma il Service App ti aiuta a configurare rapidamente le opzioni elencate e a iniziare a ricevere la registrazione della distribuzione integrata.

Azioni di GitHub

Il provider di compilazione GitHub Actions è disponibile solo per l'origine GitHub ed è l'impostazione predefinita per le distribuzioni GitHub. Il provider di compilazione configura CI/CD depositando un file del flusso di lavoro di GitHub Actions nel repository GitHub che gestisce le attività di compilazione e distribuzione del servizio app.

Per l'autenticazione di base, il sistema di compilazione delle GitHub Actions aggiunge il profilo di pubblicazione della tua app come segreto di GitHub. Il file del flusso di lavoro usa questo segreto per l'autenticazione con il servizio app.

Per l'identità assegnata dall'utente, il servizio app abilita l'autenticazione Microsoft OpenID Connect consigliata e configura le risorse necessarie in Azure e GitHub. Per altre informazioni, vedere Che cosa fa l'opzione di identità assegnata dall'utente per GitHub Actions?

Il provider di compilazione GitHub Actions acquisisce informazioni dai log di esecuzione del flusso di lavoro e lo visualizza nella scheda Log del Centro distribuzione dell'app.

È possibile personalizzare il provider di compilazione GitHub Actions in diversi modi:

  • Personalizzare il file del flusso di lavoro dopo che viene generato nel repository GitHub. Per altre informazioni, vedi Sintassi del flusso di lavoro per GitHub Actions. Distribuire il flusso di lavoro personalizzato in App Service usando l'azione azure/webapps-deploy.
  • Se il ramo selezionato è protetto, visualizzare in anteprima il file del flusso di lavoro senza salvare la configurazione. Personalizzare il file e quindi aggiungerlo manualmente al repository. Questo metodo non offre l'integrazione dei log con il portale di Azure.
  • Eseguire la distribuzione usando un'entità servizio Microsoft Entra ID anziché usare l'autenticazione di base o un'identità assegnata dall'utente. Non è possibile configurare questo metodo nel portale.

Servizio di compilazione delle app

Il servizio di build di App Service è il motore nativo di distribuzione e compilazione di App Service. Quando si seleziona questa opzione, App Service aggiunge un webhook nel repository che hai autorizzato. Qualsiasi push di codice nel repository attiva il webhook e il servizio app esegue il pull delle modifiche ed esegue tutte le attività di distribuzione. Per altre informazioni, vedere Distribuzione da GitHub (Kudu).

Il servizio di compilazione di App Service richiede l'autenticazione di base del Manager di controllo del codice sorgente (SCM) per il funzionamento del webhook. L'autenticazione di base è meno sicura rispetto ad altri metodi di autenticazione. Per altre informazioni, vedere:

Azure Pipelines

Azure Pipelines è il componente di compilazione di Azure DevOps. È possibile configurare una pipeline per compilare, testare e distribuire l'app nel servizio app da qualsiasi repository di origine supportato.

Per usare Azure Pipelines come provider di compilazione, selezionare l'opzione Azure Pipelines nel Centro distribuzione del servizio app, quindi passare direttamente ad Azure DevOps per configurare la pipeline. Per altre informazioni, vedere Eseguire la distribuzione al servizio app con Azure Pipelines.

Domande frequenti

Come funziona il provider di compilazione GitHub Actions se l'autenticazione di base è disabilitata?

Il provider di compilazione GitHub Actions non funziona con l'autenticazione di base se l'autenticazione di base è disabilitata. Prova a usare GitHub Actions con l'opzione di identità assegnata all'utente. Per altre informazioni, vedere Distribuire senza autenticazione di base.

Cosa accade all'app durante la distribuzione che può causare un errore o un comportamento imprevedibile?

I metodi di distribuzione ufficialmente supportati apportano modifiche ai file nella cartella /home/site/wwwroot usata per eseguire l'app. La distribuzione può non riuscire a causa di file bloccati. L'app potrebbe anche comportarsi in modo imprevedibile durante la distribuzione se i file non vengono aggiornati contemporaneamente, che è indesiderato per un'app rivolta al cliente.

Esistono alcuni modi per evitare questi problemi.

Come funziona l'opzione di identità assegnata dall'utente per GitHub Actions?

Quando si seleziona Identità assegnata dall'utente per l'origineGitHub , il servizio app configura tutte le risorse necessarie in Azure e GitHub. Il servizio app abilita l'autenticazione consigliata di Microsoft OpenID Connect con GitHub Actions.

In particolare, il servizio app esegue le operazioni seguenti:

  • Crea una credenziale federata tra un'identità gestita assegnata dall'utente in Azure e il repository e il ramo selezionati in GitHub.
  • Crea i segreti AZURE_CLIENT_ID, AZURE_TENANT_IDe AZURE_SUBSCRIPTION_ID dalle credenziali federate nel repository GitHub selezionato.
  • Assegna l'identità all'app.

È quindi possibile usare l'azione Azure/login in un flusso di lavoro di GitHub Actions nel repository GitHub per eseguire l'autenticazione con l'app usando OpenID Connect. Per esempi, vedere Aggiungere il file del flusso di lavoro al repository GitHub.

Se l'account Azure dispone delle autorizzazioni necessarie, il servizio app crea un'identità gestita assegnata dall'utente e la configura automaticamente. Questa identità non viene visualizzata nella pagina Identità dell'app. Se l'account Azure non dispone delle autorizzazioni necessarie, è necessario selezionare un'identità esistente con il ruolo necessario.

Perché viene visualizzato l'errore "Non si dispone di autorizzazioni sufficienti per questa app per assegnare l'accesso basato sui ruoli a un'identità gestita e configurare le credenziali federate"?

Il messaggio indica che l'account Azure non dispone delle autorizzazioni necessarie per creare un'identità gestita assegnata dall'utente per GitHub Actions. Sono necessarie le autorizzazioni seguenti, relative alla tua applicazione:

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

Per impostazione predefinita, i ruoli Amministratore accesso utenti di Azure e Proprietario dispongono di queste autorizzazioni, ma il ruolo Collaboratore non lo è. Se non si dispone delle autorizzazioni necessarie, rivolgersi all'amministratore di Azure per creare un'identità gestita assegnata dall'utente con il ruolo Collaboratore siti Web . È quindi possibile selezionare l'identità nell'elenco a discesa Identità per l'origine GitHub nel Centro distribuzione di App Service.

Per altre informazioni sull'uso di passaggi alternativi, vedere Distribuire nel servizio app con GitHub Actions.

Perché viene visualizzato l'errore "Questa identità non dispone delle autorizzazioni di scrittura per questa app. Selezionare un'identità diversa o collaborare con l'amministratore per concedere il ruolo di Collaboratore siti Web all'identità su questa app"?

Il messaggio indica che l'identità gestita assegnata dall'utente selezionata non ha il ruolo necessario per [abilitare OpenID Connect]((#what-does-the-user-assigned-identity-option-do-for-github-actions) tra il repository GitHub e l'app di App Service. L'identità deve avere il ruolo Proprietario, Collaboratore o Collaboratore siti Web nell'app. Il ruolo con privilegi minimi necessari per l'identità è Collaboratore siti Web.