Dela via


Distribuera till Azure App Service med hjälp av lokal Git

Ett av de enklaste sätten att distribuera kod är från din lokala dator. Den här artikeln visar hur du distribuerar din app till Azure App Service- från en Git-lagringsplats på din lokala dator.

Kommentar

Lokal Git-distribution kräver grundläggande autentisering i Source Control Manager (SCM), vilket är mindre säkert än andra distributionsmetoder. Om grundläggande autentisering är inaktiverad kan du inte konfigurera lokal Git-distribution i appens distributionscenter.

Förutsättningar

För att utföra stegen i den här artikeln behöver du:

  • Ett Azure-konto och en prenumeration med behörighet att skapa App Services-resurser. Om du inte har något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.

  • Git installerat och en lokal Git-lagringsplats som innehåller appkod som ska distribueras.

    Du kan klona ett exempel Node.js applagringsplats genom att köra följande kommando i ditt lokala Bash-terminalfönster:

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    
  • Om du vill använda Azure CLI-kommandona är den senaste versionen av Azure CLI installerad på den lokala datorn. Logga in på Azure med az login.

  • Om du vill köra Azure PowerShell-kommandona installeras den senaste versionen av Azure PowerShell. Logga in på Azure med Connect-AzAccount.

Förbereda lagringsplatsen

Om du vill hämta automatiserade versioner från App Service-byggservern kontrollerar du att lagringsplatsens rot har rätt filer i projektet.

Körningstid Rotkatalogfiler
ASP.NET (endast Windows) *.sln, *.csproj, eller default.aspx.
ASP.NET Kärna *.sln eller *.csproj.
PHP index.php.
Ruby (bara Linux) Gemfile.
Node.js server.js, app.jseller package.json med ett startskript.
python *.py, requirements.txt, eller runtime.txt.
HTML default.htm, default.html, default.asp, index.htm, index.htmleller iisstart.htm.
Webbjobb <job_name>/run.<extension> under App_Data/jobs/continuous för kontinuerliga webbjobb eller App_Data/jobs/triggered för utlösta webbjobb. Mer information finns i Dokumentation om Kudu WebJobs.
Funktioner Se Kontinuerlig distribution för Azure Functions.

Om du vill anpassa distributionen, inkludera en .deployment-fil i rotkatalogen på lagringsplatsen. Mer information finns i Anpassa distributioner och Anpassat distributionsskript.

Tips

Visual Studio kan skapa en lagringsplats åt dig. Med den här metoden är projektet omedelbart redo för distribution via Git.

Autentiseringsuppgifter för distributionsanvändare

Du behöver autentiseringsuppgifter för distributionsanvändare för att autentisera och distribuera din app. Dessa skiljer sig från dina autentiseringsuppgifter för Azure-prenumerationen och du kan använda autentiseringsuppgifter för användaromfattning eller programomfattning .

En användare som arbetar med användarbaserad distribution för lokal Git-distribution behöver bara ett användarnamn, inte ett lösenord. Du kan ange användarnamnet för användaromfattningen genom att köra Azure CLI-kommandot az webapp deployment user set --user-name <username>eller under Användaromfång på fliken Lokala Git/FTPS-autentiseringsuppgifter i distributionscentret för en app.

När du har skapat distributionsanvändaren för användaromfånget kan du använda den för alla App Service-appar som du har åtkomst till. Mer information finns i Konfigurera autentiseringsuppgifter för användaromfattning.

En programomfattande distributionsanvändare är appspecifik och skapas automatiskt när du skapar en app. Du kan hämta autentiseringsuppgifterna för programomfattningen som ska användas för distribution från fliken Lokala Git/FTPS-autentiseringsuppgifter i appens distributionscenter.

Skapa och konfigurera en Git-aktiverad app

Du kan skapa och konfigurera en Git-aktiverad app eller konfigurera lokal Git-distribution för en befintlig app med hjälp av Azure CLI, Azure PowerShell eller Azure-portalen.

  • Om du vill skapa en ny webbapp som konfigurerats för lokal Git-distribution kör du az webapp create med alternativet --deployment-local-git . Till exempel:

    az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name myApp --runtime "NODE:20-lts" --deployment-local-git
    
  • Om du vill konfigurera lokal Git-distribution för en redan befintlig app kör du az webapp deployment source config-local-git. Till exempel:

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

Båda kommandona genererar utdata som innehåller en URL, till exempel:

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

Föregående URL innehåller användarområdets distributions användarnamncontoso-user. Om du inte har ett användarnamn för användaromfångsdistribution använder URL:en användarnamnet för programomfattningen, till exempel https://$myApp@myApp.scm.azurewebsites.net/myApp.git.

Använd den här Git-klon-URL:en för att distribuera din app i nästa steg.

Distribuera webbappen

Om du vill distribuera appen till Azure skapar du en fjärrgren om det behövs, ser till att du distribuerar till rätt gren och sedan push-överför koden till fjärrplatsen.

Skapa fjärrgrenen

Om du använde Azure PowerShell New-AzWebApp för att skapa appen från exempelkoden skapades fjärren azure redan. I annat fall följer du de här anvisningarna för att skapa fjärranslutningen:

  1. I en lokal terminal ändrar du katalogen till roten för din klonade Git-lagringsplats.

  2. Lägg till en Git-fjärranslutning med namnet azure med hjälp av din Git-klonings-URL. Om du inte känner till din Git-klonings-URL använder du https://<app-name>.scm.azurewebsites.net/<app-name>.git.

    git remote add azure <git-clone-url>
    

Tryck till rätt gren

App Service-lagringsplatser distribuerar filer till grenen master som standard. Om dina befintliga lokala filer finns i grenen master av lagringsplatsen kan du nu distribuera appen genom att köra git push azure master.

Men många Git-lagringsplatser, inklusive exempelkodlagringsplatsen för den här artikeln, använder main eller ett annat standardgrennamn. Om du vill distribuera till rätt gren måste du antingen uttryckligen distribuera till fjärrgrenen master eller ändra distributionsgrenen till main eller något annat grennamn och distribuera till den grenen.

Distribuera direkt till master från din main-gren med hjälp av följande push-kommando:

git push azure main:master

Eller ändra appens DEPLOYMENT_BRANCH appinställning till main och push-överför sedan direkt till main, enligt följande:

  • Azure CLI:

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

    1. På portalsidan för din app väljer du Miljövariabler under Inställningar i den vänstra navigeringsmenyn.
    2. Välj Lägg till, lägg till en programinställning med namnet DEPLOYMENT_BRANCH och värdet main och välj Använd.
    3. I terminalfönstret kör du git push azure main.

Slutför och verifiera distributionen

Om dialogrutan Git Credential Manager visas när du har push-överfört koden anger du användarnamnet och lösenordet för användaromfattningsdistributionen eller användarnamnet och lösenordet för programomfattningen. Om git-fjärr-URL:en redan innehåller inloggningsinformationen uppmanas du inte att ange den.

Granska utdata från push kommandot. Du kan se körspecifik automatisering, till exempel npm install för Node.js, MSBuild för ASP.NET eller pip install för Python. Om du får felmeddelanden, se Felsök distribution.

Gå till Azure-portalen och kontrollera att appen har distribuerats genom att välja länken Standarddomän på appens översiktssida . Appen bör öppnas på en webbläsarflik och visa Hello World!.

Felsöka driftsättning

Följande vanliga fel kan inträffa när du använder lokal Git för att publicera till en App Service-app i Azure:

Meddelande Orsak Upplösning / Beslut
Unable to access '[siteURL]': Failed to connect to [scmAddress] Appen körs inte. Starta appen i Azure-portalen. Git-distributionen är inte tillgänglig när webbappen stoppas.
Couldn't resolve host 'hostname' Adressinformationen för fjärrplatsen azure är felaktig. Använd kommandot git remote -v för att visa en lista över alla fjärranslutningar och deras associerade URL:er. Kontrollera att URL:en för fjärren azure är korrekt. Om det behövs tar du bort den felaktiga URL:en med hjälp av git remote remove och återskapar fjärrlänken med rätt URL.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. Du angav inte en gren när du körde git push eller så angav push.default du inte värdet i .gitconfig. Kör git push igen och ange rätt gren med git push azure <branch>.
Error - Changes committed to remote repository but deployment to website failed. Du push-överförde en lokal gren som inte matchar appdistributionsgrenen på azure. Kontrollera att den aktuella grenen är mastereller ändra distributionsgrenen genom att följa anvisningarna i Push till rätt gren.
src refspec [branchname] does not match any. Du försökte pusha till en annan gren än main på fjärrlagringen azure. Kör git push igen och ange grenen main med git push azure main.
RPC failed; result=22, HTTP code = 5xx. Du försökte push-överföra en stor Git-lagringsplats via HTTPS. Ändra git-konfigurationen på den lokala datorn för att ange ett högre värde för postBuffer. Exempel: git config --global http.postBuffer 524288000.
Error - Changes committed to remote repository but your web app not updated. Du har distribuerat en Node.js-app med en package.json fil som anger vilka moduler som krävs. Granska npm ERR!-felmeddelandena som visas före de här felen för mer kontext. Följande kända orsaker till det här felet genererar motsvarande npm ERR! meddelanden:
Felaktig package.json fil: npm ERR! Couldn't read dependencies.
Den inbyggda modulen har ingen binär distribution för Windows: npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
eller npm ERR! [modulename@version] preinstall: \make \|\| gmake\