Condividi tramite


Distribuzione dell'archivio Git locale nel servizio app di Azure

Questa guida dettagliata illustra come distribuire il codice nel Servizio app di Azure da un repository Git nel computer locale.

Nota

Quando l’autenticazione di base SCM è disabilitata, la distribuzione Git locale non funziona e non è possibile configurare la distribuzione Git locale nel Centro distribuzione dell'app.

Prerequisiti

Per seguire la procedura illustrata in questa guida dettagliata:

  • Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

  • Installare Git.

  • Avere un repository Git locale con il codice da distribuire. Per scaricare un repository di esempio, eseguire il comando seguente nella finestra del terminale locale:

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    

Preparare il repository

Per ottenere build automatizzate dal server di Servizio app di Azure, assicurarsi che la radice del repository contenga i file corretti nel progetto.

esecuzione File della directory radice
ASP.NET (solo Windows) *.sln, *.csproj o default.aspx
ASP.NET Core *.sln oppure *.csproj
PHP index.php
Ruby (solo Linux) Gemfile
Node.js server.js, app.jso package.json con uno script di avvio
Python *.py, requirements.txt o runtime.txt
HTML default.htm, default.html, default.asp, index.htm, index.html o iisstart.htm
Processi Web <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 file .deployment nella radice del repository. Per altre informazioni, vedere Personalizzare le distribuzioni e Script di distribuzione personalizzato.

Nota

Se si usa Visual Studio, lasciare che Visual Studio crei automaticamente un repository. Il progetto sarà immediatamente pronto per la distribuzione tramite Git.

Configurare un utente della distribuzione

Vedere: Configurazione delle credenziali per la distribuzione del Servizio app di Azure. È possibile usare le credenziali dell'ambito utente o le credenziali dell'ambito applicazione.

Creare un'app abilitata per Git

Se si ha già un'app del Servizio app di Azure e si vuole configurare la distribuzione Git locale, vedere Configurare invece un'app esistente.

Eseguire az webapp create con l'opzione --deployment-local-git. Ad esempio:

az webapp create --resource-group <group-name> --plan <plan-name> --name <app-name> --runtime "<runtime-flag>" --deployment-local-git

L'output contiene un URL simile al seguente: https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Usare questo URL per distribuire l'app nel passaggio successivo.

Configurare un'app esistente

Se non si ha ancora un'app, vedere invece Creare un'app abilitata per Git.

Eseguire az webapp deployment source config-local-git. Ad esempio:

az webapp deployment source config-local-git --name <app-name> --resource-group <group-name>

L'output contiene un URL simile al seguente: https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Usare questo URL per distribuire l'app nel passaggio successivo.

Suggerimento

Questo URL contiene il nome utente della distribuzione dell'ambito utente. Se si preferisce, è possibile invece usare le credenziali dell'ambito dell'applicazione.

Distribuire l'app Web

  1. In una finestra del terminale locale, modificare la directory nella radice del repository Git e aggiungere un repository Git remoto usando l'URL ottenuto dall'app. Se il metodo scelto non restituisce un URL, usare https://<app-name>.scm.azurewebsites.net/<app-name>.git con il nome dell'app in <app-name>.

    git remote add azure <url>
    

    Nota

    Se hai creato un'app abilitata per Git in PowerShell utilizzando New-AzWebApp, il file remoto è già stato creato per te.

  2. Eseguire il push nel database remoto di Azure con git push azure master (vedere Modificare il ramo di distribuzione).

  3. Nella finestra Gestione credenziali Git, immettere le credenziali ambito utente o ambito applicazione, non le credenziali di accesso di Azure.

    Se l'URL remoto Git contiene già il nome utente e la password, non verrà richiesto.

  4. Esaminare l'output. È possibile che venga visualizzata un'automazione specifica di runtime, ad esempio MSBuild per ASP.NET, npm install per Node.js e pip install per Python.

  5. Passare all'app nel portale di Azure per verificare che il contenuto sia distribuito.

Modificare il ramo della distribuzione

Quando si esegue il push dei commit nel repository del Servizio app di Azure, il Servizio app di Azure distribuisce i file nel ramo master per impostazione predefinita. Poiché molti repository Git si spostano da master a main, è necessario assicurarsi di eseguire il push nel ramo corretto nel repository del Servizio app di Azure in uno dei due modi seguenti:

  • Eseguire la distribuzione master in modo esplicito con un comando simile al seguente:

    git push azure main:master
    
  • Modificare il ramo di distribuzione tramite l'impostazione dell'app DEPLOYMENT_BRANCH, quindi eseguire il push dei commit nel ramo personalizzato. A tale scopo, usare l'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
    

    È anche possibile modificare l'impostazione dell'app DEPLOYMENT_BRANCH nel portale di Azure selezionando Variabili di ambiente in Impostazioni e aggiungendo una nuova impostazione App con il nome DEPLOYMENT_BRANCH e il valore main.

Risolvere i problemi di distribuzione

Quando si usa Git per pubblicare in un'app del Servizio app di Azure, potrebbero essere visualizzati i messaggi di errore comuni seguenti:

Message Causa Risoluzione
Unable to access '[siteURL]': Failed to connect to [scmAddress] L'app non è operativa. avviare l'app nel portale di Azure. 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 comando git remote -v per elencare tutti i repository remoti, insieme agli URL associati. Verificare che l'URL di azure remoto sia corretto. Se necessario, rimuovere e ricreare questo repository remoto usando l'URL corretto.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. Non è stato specificato un ramo durante git push oppure non è stato impostato il valore push.default in .gitconfig. Eseguire di nuovo git push specificando il ramo principale: git push azure main.
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 Canale corrente sia master. Per modificare il ramo predefinito, usare l’DEPLOYMENT_BRANCHimpostazione dell'applicazione (vedere Modificare il ramo di distribuzione).
src refspec [branchname] does not match any. Si è tentato di eseguire il push in un ramo diverso dal principale in azure remoto. Eseguire di nuovo git push specificando il ramo principale: git push azure main.
RPC failed; result=22, HTTP code = 5xx. questo errore può verificarsi se si tenta di eseguire il push di un repository Git di grandi dimensioni tramite HTTPS. Modificare la configurazione git nel computer locale per rendere postBuffer più grande. 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 moduli aggiuntivi obbligatori. Esaminare i messaggi di errore npm ERR! prima di questo errore per un maggiore contesto sull'errore. Di seguito sono riportate le cause note di questo errore e del corrispondente messaggio npm ERR!:

file package.json non valido: npm ERR! Couldn't read dependencies.

Modulo nativo senza una distribuzione binaria per Windows:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
o
npm ERR! [modulename@version] preinstall: \make \|\| gmake\

Altre risorse