Condividi tramite


Eseguire la distribuzione nel servizio app di Azure usando Git in locale

Questo articolo illustra come distribuire l'app nel servizio app di Azure da un repository Git nel computer locale.

Nota

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

Prerequisiti

Per completare i passaggi descritti in questo articolo:

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

  • Installare Git.

  • Disporre di un repository Git locale con 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 compilazioni automatizzate dal server di compilazione di App Service, assicurarsi che la radice del repository contenga i file corretti nel tuo progetto.

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.
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 .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.

Configurare un utente della distribuzione

Informazioni su come configurare le credenziali di distribuzione per il servizio app di Azure. È possibile usare le informazioni di accesso dell'ambito utente o le informazioni di accesso nell'ambito dell'applicazione.

Creare un'app abilitata per Git

Se si ha già un'app del servizio app e si vuole configurare una distribuzione Git locale per l'app, 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 come l'esempio 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, iniziare a 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 come l'esempio 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. È invece possibile usare le informazioni di accesso all'ambito dell'applicazione .

Distribuire l'app Web

  1. In una finestra del terminale locale, cambia la directory alla radice del tuo repository Git. Aggiungere un git remoto usando l'URL dell'app. Se il metodo usato non fornisce un URL, usare https://<app-name>.scm.azurewebsites.net/<app-name>.git con il nome dell'app.

    git remote add azure <url>
    

    Nota

    Se hai creato un'app con supporto Git in PowerShell usando New-AzWebApp, il repository remoto è già stato creato.

  2. Eseguire il push nel ramo remoto di Azure utilizzando git push azure master.

    Per altre informazioni, vedere Modificare il ramo di distribuzione.

  3. Nella finestra di dialogo Git Credential Manager immettere le informazioni di accesso dell'ambito utente o dell'ambito dell'applicazione, non le informazioni di accesso di Azure.

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

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

  5. Nel portale di Azure, vai alla tua app per verificare che il contenuto sia distribuito.

Modificare il ramo di 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 passano da master a main, assicurarsi di eseguire il push nel ramo corretto nel repository del servizio app in uno dei due modi seguenti:

  • Distribuire esplicitamente su master eseguendo un comando come mostrato nell'esempio 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 nel portale di Azure:

    1. In Impostazioni selezionare Variabili di ambiente.
    2. Aggiungere un'impostazione dell'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:

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 di azure remoto sia corretto. Se necessario, rimuovere e quindi ricreare questo 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 quando è stato eseguito git push o non è stato impostato il valore push.default in .gitconfig. Eseguire git push di nuovo e specificare 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 ramo corrente sia master. Per modificare il ramo predefinito, usare l'impostazione dell'applicazione DEPLOYMENT_BRANCH . Per altre informazioni, vedere Modificare il ramo di distribuzione.
src refspec [branchname] does not match any. Hai tentato di eseguire il push su un ramo diverso da main sul remoto azure. Eseguire git push di nuovo e specificare 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 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 moduli aggiuntivi obbligatori. Esaminare i npm ERR! messaggi di errore visualizzati prima di questo errore per un maggiore contesto. Le cause seguenti sono cause note di questo errore e dei messaggi corrispondenti 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\