Distribuzione dell'archivio Git locale nel servizio app di Azure

Questa guida pratica illustra come distribuire l'app in app Azure Servizio da un repository Git nel computer locale.

Nota

Quando l'autenticazione di base di 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 che si vuole 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 compilazioni automatizzate dal server di compilazione del servizio app 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 processi Web continui o App_Data/jobs/triggered per processi Web 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, consentire a Visual Studio di creare automaticamente un repository. Il progetto sarà immediatamente pronto per la distribuzione tramite Git.

Configurare un utente della distribuzione

Vedere Configurare le credenziali di distribuzione per app Azure Servizio. È 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 servizio app 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 a : 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 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 a : 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 usare invece 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 è stata creata un'app abilitata per Git in PowerShell usando New-AzWebApp, il computer remoto è già stato creato automaticamente.

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

  3. Nella finestra Git Credential Manager immettere le credenziali dell'ambito utente o dell'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 l'automazione specifica del 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 di distribuzione

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

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

    git push azure main:master
    
  • Modificare il ramo di distribuzione impostando 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 nella portale di Azure selezionando Configurazione in Impostazioni e aggiungendo una nuova impostazione dell'applicazione con il nome DEPLOYMENT_BRANCH e il valore .main

Risolvere i problemi di distribuzione

È possibile che vengano visualizzati i seguenti messaggi di errore comuni quando si usa Git per pubblicare in un'app servizio app in Azure:

Message Causa Risoluzione
Unable to access '[siteURL]': Failed to connect to [scmAddress] L'app non è operativa. avviare l'app nel portale di Azure. La distribuzione Git non è disponibile quando l'app Web viene arrestata.
Couldn't resolve host 'hostname' Le informazioni sull'indirizzo per il azure telecomando non sono corrette. usare il comando git remote -v per elencare tutti i repository remoti, insieme agli URL associati. Verificare che l'URL per il azure telecomando 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 pusho non è stato impostato il push.default valore in .gitconfig. Eseguire git push di nuovo, 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 Current Branch sia master. Per modificare il ramo predefinito, usare l'impostazione DEPLOYMENT_BRANCH 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 da main nel azure remoto. Eseguire git push di nuovo, 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 ingrandire.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 moduli aggiuntivi obbligatori. Esaminare i npm ERR! messaggi di errore prima di questo errore per un maggiore contesto sull'errore. Di seguito sono riportate le cause note di questo errore e i messaggi corrispondenti npm ERR! :

File di 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
O
npm ERR! [modulename@version] preinstall: \make || gmake\

Altre risorse