Condividi tramite


Eseguire la distribuzione nel servizio app di Azure usando Git locale

Uno dei modi più semplici per distribuire il codice è dal computer locale. Questo articolo illustra come distribuire l'app nel servizio app di Azure da un repository Git nel computer locale.

Note

La distribuzione Git locale richiede l'autenticazione di base di Gestione controllo del codice sorgente( SCM), che è meno sicura rispetto ad altri metodi di distribuzione. Se l'autenticazione di base è disabilitata, non è possibile configurare la distribuzione Git locale nel Centro distribuzione dell'app.

Prerequisiti

Per completare i passaggi di questo articolo sono necessari:

  • Un account e una sottoscrizione di Azure con l'autorizzazione per creare risorse di Servizi app. Se non si ha un account Azure, creare un account gratuito prima di iniziare.

  • Git installato e un repository Git locale che contiene il codice dell'app da distribuire.

    È possibile clonare un repository di app di esempio Node.js eseguendo il comando seguente nella finestra del terminale Bash locale:

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    
  • Se si vogliono usare i comandi dell'interfaccia della riga di comando di Azure, la versione più recente dell'interfaccia della riga di comando di Azure installata nel computer locale. Accedere ad Azure usando az login.

  • Per eseguire i comandi di Azure PowerShell, è installata la versione più recente di Azure PowerShell. Accedere ad Azure usando Connect-AzAccount.

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.

Runtime File della directory radice
ASP.NET (solo Windows) *.sln, *.csproj o default.aspx.
ASP.NET Core *.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.
WebJobs <job_name>/run.<extension> in App_Data/jobs/continuous per WebJobs continui o App_Data/jobs/triggered per i WebJobs attivati. Per altre informazioni, vedere la documentazione dei processi Web Kudu.
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.

Credenziali utente di distribuzione

Sono necessarie le credenziali utente di distribuzione per autenticare e distribuire l'app. Sono diversi dalle credenziali della sottoscrizione di Azure e è possibile usare le credenziali dell'ambito utente o dell'ambito dell'applicazione.

Un utente di distribuzione con ambito utente per la distribuzione Git locale richiede solo un nome utente, non una password. È possibile impostare il nome utente dell'ambito utente eseguendo il comando dell'interfaccia della riga di comando az webapp deployment user set --user-name <username>di Azure o in Ambito utente nella scheda Credenziali Git/FTPS locali del Centro distribuzione di un'app.

Dopo aver creato l'utente di distribuzione con ambito specifico utente, è possibile usarlo per tutte le app dell'App Service a cui hai accesso. Per altre informazioni, vedere Configurare le credenziali dell'ambito utente.

Un utente di distribuzione con ambito applicazione è specifico dell'app e viene creato automaticamente quando si crea un'app. È possibile ottenere le credenziali utente dell'ambito applicazione da usare per la distribuzione dalla scheda Credenziali Git/FTPS locali nel Centro distribuzione dell'app.

Creare e configurare un'app abilitata per Git

È possibile creare e configurare un'app abilitata per Git o configurare la distribuzione Git locale per un'app preesistente usando l'interfaccia della riga di comando di Azure, Azure PowerShell o il portale di Azure.

  • Per creare una nuova app Web configurata per la distribuzione Git locale, eseguire az webapp create con l'opzione --deployment-local-git . Ad esempio:

    az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name myApp --runtime "NODE:24-lts" --deployment-local-git
    
  • Per configurare la distribuzione Git locale per un'app già esistente, eseguire az webapp deployment source config-local-git. Ad esempio:

    az webapp deployment source config-local-git --name myApp --resource-group myResourceGroup
    

Uno dei due comandi genera un output che include un URL, ad esempio:

Local git is configured with url of 'https://contoso-user@myapp.scm.azurewebsites.net/myApp.git'

L'URL precedente contiene il nome dell'utente dell'ambito di distribuzione . Se non si ha un nome utente di distribuzione con ambito utente, l'URL usa il nome utente dell'ambito applicazione, ad esempio https://$myApp@myApp.scm.azurewebsites.net/myApp.git.

Usare questo Git clone URL per distribuire la tua app nel passaggio successivo.

Distribuire l'app Web

Per distribuire l'app in Azure, crea un ramo remoto, se necessario, assicurati che stai eseguendo la distribuzione nel ramo corretto e poi esegui il push del codice al ramo remoto.

Creare il ramo remoto

Se è stato usato Azure PowerShell New-AzWebApp per creare l'app dal codice di esempio, il azure telecomando è già stato creato. In caso contrario, seguire queste istruzioni per creare il telecomando:

  1. In un terminale locale impostare la directory sulla radice del repository Git clonato.

  2. Aggiungere un repository Git remoto denominato azure utilizzando l'URL di git clone. Se non si conosce l'URL clone Git, usare https://<app-name>.scm.azurewebsites.net/<app-name>.git.

    git remote add azure <git-clone-url>
    

Eseguire il push nel ramo corretto

I repository del servizio app distribuiscono i file nel ramo master per impostazione predefinita. Se i file locali preesistenti si trovano nel master ramo del repository, è ora possibile distribuire l'app eseguendo git push azure master.

Tuttavia, molti repository Git, incluso il repository di codice di esempio per questo articolo, usano main o un altro nome di ramo predefinito. Per eseguire la distribuzione nel ramo corretto, è necessario distribuire in modo esplicito nel ramo remoto master oppure modificare il ramo di distribuzione in main o in un altro nome di ramo e distribuirlo in tale ramo.

Eseguire la distribuzione in modo esplicito dal ramo master a main utilizzando il comando seguente push:

git push azure main:master

In alternativa, modificare l'impostazione dell'app DEPLOYMENT_BRANCH a main e quindi eseguire il push direttamente in main, come indicato di seguito:

  • Interfaccia della riga di comando di Azure:

    az webapp config appsettings set --name <app-name> --resource-group <group-name> --settings DEPLOYMENT_BRANCH='main'
    git push azure main
    
  • Portale di Azure:

    1. Nella pagina del portale per l'app selezionare Variabili di ambiente in Impostazioni nel menu di spostamento a sinistra.
    2. Selezionare Aggiungi, aggiungere un'impostazione dell'applicazione con il nome DEPLOYMENT_BRANCH e il valore main e selezionare Applica.
    3. Nella finestra del terminale eseguire git push azure main.

Completare e verificare la distribuzione

Se la finestra di dialogo Git Credential Manager viene visualizzata dopo aver eseguito il push del codice, immettere il nome utente e la password per la distribuzione nell'ambito utente o il nome utente e la password dell'ambito applicazione. Se l'URL remoto Git contiene già le informazioni di accesso, non viene richiesto di immetterlo.

Esaminare l'output del comando push. È possibile che venga visualizzata l'automazione specifica del runtime, ad esempio npm install per Node.js, MSBuild per ASP.NET o pip install per Python. Se si verificano errori, vedere Risolvere i problemi di distribuzione.

Passare al portale di Azure e verificare che l'app sia stata distribuita correttamente selezionando il collegamento Dominio predefinito nella pagina Panoramica dell'app. L'app dovrebbe essere aperta in una scheda del browser e visualizzare Hello World!.

Risolvere i problemi di distribuzione

Gli errori comuni seguenti possono verificarsi quando si usa Git locale per pubblicare in un'app del servizio app in Azure:

Messaggio Causa Risoluzione
Unable to access '[siteURL]': Failed to connect to [scmAddress] L'app non è in esecuzione. Nel portale di Azure avviare l'app. Se l'app Web viene arrestata, la distribuzione Git non è disponibile.
Couldn't resolve host 'hostname' Le informazioni sull'indirizzo per azure remoto non sono corrette. Usare il git remote -v comando per elencare tutti gli URL remoti e i relativi URL associati. Verificare che l'URL del file remoto azure sia corretto. Se necessario, rimuovere l'URL non corretto usando git remote remove e quindi ricreare il telecomando con l'URL corretto.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. Non hai specificato un branch quando hai eseguito git push oppure non hai impostato il valore di push.default in .gitconfig. Eseguire git push di nuovo e specificare il ramo corretto con git push azure <branch>.
Error - Changes committed to remote repository but deployment to website failed. È stato eseguito il push di un ramo locale che non corrisponde al ramo di distribuzione dell'app in azure. Verificare che il ramo corrente sia master o modificare il ramo di distribuzione seguendo le istruzioni riportate in Eseguire il push nel ramo corretto.
src refspec [branchname] does not match any. Si è tentato di eseguire il push in un ramo diverso da main nel file remoto azure. Eseguire git push di nuovo e specificare il main ramo con git push azure main.
RPC failed; result=22, HTTP code = 5xx. Hai provato a eseguire il push di un grande repository Git su HTTPS. Modificare la configurazione git nel computer locale per impostare un valore superiore per postBuffer. Ad esempio git config --global http.postBuffer 524288000.
Error - Changes committed to remote repository but your web app not updated. È stata distribuita un'app Node.js con un file package.json che specifica i moduli necessari aggiunti. Esaminare i npm ERR! messaggi di errore visualizzati prima di questo errore per un maggiore contesto. Le cause note seguenti di questo errore generano i messaggi corrispondenti npm ERR! :
file package.json non valido: npm ERR! Couldn't read dependencies.
Il modulo nativo non ha una distribuzione binaria per Windows: npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
oppure npm ERR! [modulename@version] preinstall: \make \|\| gmake\