Kontinuerlig distribution till Azure App Service
Kommentar
Från och med den 1 juni 2024 har alla nyligen skapade App Service-appar möjlighet att generera ett unikt standardvärdnamn med hjälp av namngivningskonventionen <app-name>-<random-hash>.<region>.azurewebsites.net
. Befintliga appnamn förblir oförändrade.
Exempel: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Mer information finns i Unikt standardvärdnamn för App Service-resurs.
Azure App Service möjliggör kontinuerlig distribution från GitHub-, Bitbucket- och Azure Repos-lagringsplatser genom att hämta de senaste uppdateringarna.
Förbereda lagringsplatsen
Om du vill hämta automatiserade versioner från Azure App Service-byggservern kontrollerar du att lagringsplatsens rot har rätt filer i projektet.
Körmiljö | Rotkatalogfiler |
---|---|
ASP.NET (endast Windows) | *.sln , *.csproj eller default.aspx |
ASP.NET Core | *.sln eller *.csproj |
PHP | index.php |
Ruby (endast Linux) | Gemfile |
Node.js | server.js , app.js eller package.json med ett startskript |
Python | *.py , requirements.txt eller runtime.txt |
HTML | default.htm , default.html , default.asp , index.htm , index.html , eller iisstart.htm |
WebJobs | <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 tar du med en .distributionsfil i lagringsplatsens rot. Mer information finns i Anpassa distributioner och Anpassat distributionsskript.
Kommentar
Om du använder Visual Studio kan du låta Visual Studio skapa en lagringsplats åt dig. Projektet är omedelbart redo för distribution via Git.
Konfigurera distributionskällan
I Azure Portal går du till hanteringssidan för din App Service-app.
I den vänstra rutan väljer du Distributionscenter. Välj sedan Inställningar.
I rutan Källa väljer du något av CI/CD-alternativen:
Välj den flik som motsvarar din byggleverantör för att fortsätta.
GitHub Actions är standardversionsprovidern. Om du vill ändra providern väljer du Ändra provider>App Service Build Service>OK.
Om du distribuerar från GitHub för första gången väljer du Auktorisera och följer auktoriseringsanvisningarna. Om du vill distribuera från en annan användares lagringsplats väljer du Ändra konto.
När du har auktorisera ditt Azure-konto med GitHub väljer du den organisation, lagringsplats och gren som du vill använda.
Om du inte hittar en organisation eller lagringsplats kan du behöva aktivera fler behörigheter på GitHub. Mer information finns i Hantera åtkomst till organisationens lagringsplatser.
Under Autentiseringstyp väljer du Användartilldelad identitet för bättre säkerhet. Mer information finns i vanliga frågor och svar.
Kommentar
Om ditt Azure-konto har de behörigheter som krävs för alternativet Användartilldelad identitet skapar Azure en användartilldelad hanterad identitet åt dig. Om du inte gör det kan du samarbeta med Azure-administratören för att skapa en identitet med den roll som krävs för din app och sedan välja den här i listrutan.
(Valfritt) Om du vill se filen innan du sparar ändringarna väljer du Förhandsgranska fil. App Service väljer en arbetsflödesmall baserat på språkstackens inställning för din app och checkar in den i din valda GitHub-lagringsplats.
Välj Spara.
Nya incheckningar i den valda lagringsplatsen och grenen distribueras nu kontinuerligt till din App Service-app. Du kan spåra incheckningar och distributioner på fliken Loggar .
Inaktivera kontinuerlig distribution
I Azure Portal går du till hanteringssidan för din App Service-app.
I den vänstra rutan väljer du Distributionscenter. Välj sedan Inställningar>Koppla från:
Som standard bevaras GitHub Actions-arbetsflödesfilen på lagringsplatsen, men den fortsätter att utlösa distributionen till din app. Om du vill ta bort filen från lagringsplatsen väljer du Ta bort arbetsflödesfil.
Välj OK.
Vilka är byggleverantörerna?
Beroende på distributionskällan i Distributionscenter kan du se några alternativ att välja för byggleverantörer. Byggleverantörer hjälper dig att skapa en CI/CD-lösning med Azure App Service genom att automatisera kompilering, testning och distribution.
Du är inte begränsad till de alternativ för byggprovider som finns i Distributionscenter, men Med App Service kan du konfigurera dem snabbt och erbjuder en del integrerad distributionsloggning.
GitHub Actions-byggprovidern är endast tillgänglig för GitHub-distribution. När den konfigureras från appens distributionscenter slutför den dessa åtgärder för att konfigurera CI/CD:
- Sätter in en GitHub Actions-arbetsflödesfil på din GitHub-lagringsplats för att hantera bygg- och distributionsuppgifter till App Service.
- För grundläggande autentisering lägger du till publiceringsprofilen för din app som en GitHub-hemlighet. Arbetsflödesfilen använder den här hemligheten för att autentisera med App Service.
- Information om användartilldelad identitet finns i Vad gör det användartilldelade identitetsalternativet för GitHub Actions?
- Samlar in information från arbetsflödets körningsloggar och visar den på fliken Loggar i Distributionscenter.
Du kan anpassa GitHub Actions-byggprovidern på följande sätt:
- Anpassa arbetsflödesfilen när den har genererats på din GitHub-lagringsplats. Mer information finns i Arbetsflödessyntax för GitHub Actions. Se bara till att arbetsflödet distribueras till App Service med åtgärden azure/webapps-deploy .
- Om den valda grenen är skyddad kan du fortfarande förhandsgranska arbetsflödesfilen utan att spara konfigurationen och sedan lägga till den manuellt i lagringsplatsen. Den här metoden ger dig inte loggintegrering med Azure Portal.
- I stället för att använda grundläggande autentisering eller en användartilldelad identitet kan du även distribuera med hjälp av tjänstens huvudnamn i Microsoft Entra-ID. Detta kan inte konfigureras i portalen.
Vad händer med min app under distributionen?
Alla distributionsmetoder som stöds officiellt gör ändringar i filerna i mappen /home/site/wwwroot i din mapp. De här filerna används för att köra din app. Distributionen kan därför misslyckas på grund av låsta filer. Appen kan även bete sig oförutsägbart under distributionen eftersom alla filer inte uppdateras samtidigt. Det här beteendet är inte önskvärt för en app riktad till kunder. Det finns några sätt att undvika problemen:
- Kör appen direkt från ZIP-paketet utan att packa upp den.
- Stoppa eller aktivera offlineläge för appen under distributionen. Mer information finns i Hantera låsta filer under distributionen.
- Distribuera till en mellanlagringsplats med automatisk växling aktiverat.
Vanliga frågor och svar
- Fungerar GitHub Actions-byggprovidern med grundläggande autentisering om grundläggande autentisering är inaktiverad?
- Vad gör det användartilldelade identitetsalternativet för GitHub Actions?
- Varför ser jag felet "Den här identiteten har inte skrivbehörighet för den här appen. Välj en annan identitet eller samarbeta med administratören för att bevilja rollen Webbplatsdeltagare till din identitet i den här appen"?
- Varför ser jag felet "Den här identiteten har inte skrivbehörighet för den här appen. Välj en annan identitet eller samarbeta med administratören för att bevilja rollen Webbplatsdeltagare till din identitet i den här appen"?
Fungerar GitHub Actions-byggprovidern med grundläggande autentisering om grundläggande autentisering är inaktiverad?
Nej. Prova att använda GitHub Actions med det användartilldelade identitetsalternativet .
Mer information finns i Distribution utan grundläggande autentisering.
Vad gör det användartilldelade identitetsalternativet för GitHub Actions?
När du väljer användartilldelad identitet under GitHub Actions-källan konfigurerar App Service alla nödvändiga resurser i Azure och i GitHub för att aktivera den rekommenderade OpenID Connect-autentiseringen med GitHub Actions.
Mer specifikt utför App Service följande åtgärder:
- Skapar en federerad autentiseringsuppgift mellan en användartilldelad hanterad identitet i Azure och den valda lagringsplatsen och grenen i GitHub.
- Skapar hemligheterna
AZURE_CLIENT_ID
,AZURE_TENANT_ID
ochAZURE_SUBSCRIPTION_ID
från de federerade autentiseringsuppgifterna i din valda GitHub-lagringsplats. - Tilldelar identiteten till din app.
I ett GitHub Actions-arbetsflöde på din GitHub-lagringsplats kan du sedan använda azure-/inloggningsåtgärden för att autentisera med din app med hjälp av OpenID Connect. Exempel finns i Lägga till arbetsflödesfilen till din GitHub-lagringsplats.
Om ditt Azure-konto har de behörigheter som krävs skapar App Service en användartilldelad hanterad identitet och konfigurerar den åt dig. Den här identiteten visas inte på sidan Identiteter i din app. Om ditt Azure-konto inte har de behörigheter som krävs måste du välja en befintlig identitet med den nödvändiga rollen.
Varför visas felet "Du har inte tillräcklig behörighet för den här appen för att tilldela rollbaserad åtkomst till en hanterad identitet och konfigurera federerade autentiseringsuppgifter"?
Meddelandet anger att ditt Azure-konto inte har de behörigheter som krävs för att skapa en användartilldelad hanterad identitet för GitHub Actions. De behörigheter som krävs (omfång för din app) är:
Microsoft.Authorization/roleAssignments/write
Microsoft.ManagedIdentity/userAssignedIdentities/write
Som standard har rollen Administratör för användaråtkomst och Rollen Ägare redan dessa behörigheter, men rollen Deltagare har inte det. Om du inte har de behörigheter som krävs kan du samarbeta med Azure-administratören för att skapa en användartilldelad hanterad identitet med rollen Webbplatsdeltagare. I Distributionscenter kan du sedan välja identiteten i listrutan GitHub>Identity.
Mer information om de alternativa stegen finns i Distribuera till App Service med GitHub Actions.
Varför ser jag felet "Den här identiteten har inte skrivbehörighet för den här appen. Välj en annan identitet eller samarbeta med administratören för att bevilja rollen Webbplatsdeltagare till din identitet i den här appen"?
Meddelandet anger att den valda användartilldelade hanterade identiteten inte har den roll som krävs för att aktivera OpenID Connect mellan GitHub-lagringsplatsen och App Service-appen. Identiteten måste ha någon av följande roller i appen: Ägare, Deltagare, Webbplatsdeltagare. Den minst privilegierade roll som identiteten behöver är Websites-deltagare.