Konfigurera program och virtuella datorer

Slutförd

Det är vanligt att skapa appar och annan anpassad kod för din Azure-lösning. Anpassade appar kan innehålla webbplatser, API:er och bakgrundsappar som körs utan mänsklig interaktion. I den här lektionen får du lära dig hur du utformar ett arbetsflöde för att skapa och distribuera en app tillsammans med dess infrastruktur.

Skapa program

Många typer av appar måste kompileras eller skapas innan du kan använda dem. Byggprocessen tar källkoden för appen, utför en sekvens med aktiviteter på den och skapar sedan en uppsättning distribuerade filer.

Byggprocessen kompilerar källkoden till binära filer eller körbara filer. En byggprocess omfattar vanligtvis andra aktiviteter, inklusive komprimering av avbildningsfiler som ska hanteras till webbplatsens användare, lintning av koden för att verifiera att den följer bra kodningsmetoder och köra enhetstester som verifierar beteendet för enskilda delar av din app. Du kan också utföra steg som att signera filerna digitalt för att säkerställa att de inte kan ändras.

Oavsett vilken serie steg som kan vara är utdata från byggprocessen en distribuerbar artefakt. Artefakten sparas vanligtvis i arbetsflödeslöparens filsystem. Senare delar av arbetsflödet måste arbeta med artefakten för att distribuera den via dina miljöer och testa den när den utvecklas genom de kvalitetsgrindar som du definierar i arbetsflödesdefinitionen.

Kommentar

Du kanske har hört talas om termerna kontinuerlig integrering och kontinuerlig distribution, eller CI/CD. En byggprocess finns i den kontinuerliga integreringsdelen av arbetsflödet.

Arbetsflödesartefakter

Artefakterna som genereras i arbetsflödet lagras inte på Git-lagringsplatsen. De härleds från källkoden men är inte själva kod, så de hör inte hemma i en källkontrolllagringsplats. De skapas i arbetsflödeslöparens filsystem. En ny löpare skapas för varje arbetsflödesjobb, så du behöver ett sätt att dela filerna mellan jobb och löpare.

Arbetsflödesartefakter är ett sätt att lagra filer i GitHub Actions och de är associerade med arbetsflödets specifika körning. Du använder arbetsflödesåtgärden actions/upload-artifact för att instruera GitHub Actions att ladda upp en fil eller mapp från löparens filsystem som en arbetsflödesartefakt:

- name: Upload folder as a workflow artifact
  uses: actions/upload-artifact@v3
  with:
    name: my-artifact-name
    path: ./my-folder

Egenskapen path är den plats som innehåller din kompilerade kod eller utdatafiler i jobbkörens filsystem. Innehållet på den här platsen laddas upp till artefakten. Du kan ange en enskild fil, flera filer eller en mapp.

Varje artefakt har ett namn som du anger med hjälp name av egenskapen . Du använder artefaktnamnet för att referera till det senare i arbetsflödet. Efterföljande arbetsflödesjobb kan ladda ned artefakten så att de kan arbeta med den för att till exempel distribuera webbplatsen till den server som är värd för den:

Diagram som visar ett arbetsflödesuppladdning och som sedan refererar till en artefakt med namnet

Använd åtgärden actions/download-artifact för att ladda ned alla arbetsflödesartefakter:

- uses: actions/download-artifact@v3

Eller ange ett artefaktnamn för att ladda ned en specifik artefakt:

- uses: actions/download-artifact@v3
  with:
    name: my-artifact-name

Distribuera appar

Byggprocessen för en app genererar och laddar upp en distribuerbar artefakt. Senare jobb i arbetsflödet distribuerar artefakten. Hur du distribuerar en app beror på vilken tjänst du använder för att vara värd för den.

Distribuera till Azure App Service

Leksaksföretaget använder Azure App Service som värd för sin webbplats. Du kan skapa och konfigurera en App Service-app med hjälp av Bicep, men när det är dags att distribuera appen har du flera alternativ för att hämta den kompilerade appen till värdinfrastrukturen. De här alternativen hanteras som en del av App Service-dataplanet.

Den vanligaste metoden är att använda azure/webapps-deploy åtgärden:

- uses: azure/webapps-deploy@v2
  with:
    app-name: my-app-service
    package: my-artifact-name/website.zip

Du måste ange flera informationsdelar för att distribuera din app till App Service. Den här informationen innehåller App Service-appens resursnamn, som du anger med hjälp app-name av egenskapen . Som du lärde dig i föregående lektion bör du lägga till utdata i Bicep-filen och använda en arbetsflödesvariabel för att sprida appnamnet via arbetsflödet. Du måste också ange en .zip fil med appen som ska distribueras med hjälp package av egenskapen . Det här är vanligtvis sökvägen till en arbetsflödesartefakt.

App Service har ett eget autentiseringssystem för dataplanet som används för distributioner. Åtgärden azure/webapps-deploy hanterar autentiseringsprocessen automatiskt åt dig:

Diagram som illustrerar utbytesprocessen för autentiseringsuppgifter.

Åtgärden azure/webapps-deploy använder den identitet som är associerad med jobbets aktiva Azure-session, som du loggade in med hjälp av en arbetsbelastningsidentitet . Åtgärden skapar och laddar ned nödvändiga autentiseringsuppgifter för distributionen . Den använder sedan autentiseringsuppgifterna för distributionen när den kommunicerar med Api:et för App Service-dataplanet .

App Service innehåller också några andra distributionsrelaterade funktioner, inklusive distributionsfack. Slots hjälper dig att distribuera nya versioner av dina appar utan driftstopp på ett säkert sätt. De hjälper dig också att förbereda och värma upp den nya versionen av ditt program innan du skickar produktionstrafik till det. Vi använder inte platser i den här modulen, men vi tillhandahåller en länk till mer information om dem på modulens sammanfattningssida.

Distribuera appar till andra Azure-tjänster

Azure erbjuder många andra alternativ för att vara värd för dina appar, som var och en har sin egen metod för distribution.

Azure Functions bygger på App Service och använder en distributionsprocess som liknar den som vi beskrev tidigare.

Om du distribuerar till en virtuell dator måste du vanligtvis ansluta till den virtuella datorinstansen för att installera din app. Du behöver ofta använda specialiserade verktyg, till exempel Chef, Puppet eller Ansible för att orkestrera en distribution till virtuella datorer.

Om du använder Kubernetes eller Azure Kubernetes Service (AKS) använder du vanligtvis en något annorlunda metod för att skapa och distribuera din lösning. När appen har skapats skapar arbetsflödet en containeravbildning och publicerar den till ett containerregister, som Kubernetes-klustret sedan läser från. Eftersom containerregistret behåller det kompilerade programmet använder du vanligtvis inte en arbetsflödesartefakt.

I den här modulen fokuserar vi på Azure App Service för att illustrera de arbetsflödesbegrepp som ingår. På sidan Sammanfattning i slutet av modulen tillhandahåller vi länkar till mer information om hur du distribuerar till andra värdtjänster.

Testa appar i arbetsflödet

I en tidigare modul lärde du dig om värdet och vikten av att köra automatiserade tester från arbetsflödet. När du distribuerar en app är det bra att arbetsflödet kör några tester som anropar appens kod. Sådana tester minskar risken för att ett app- eller distributionsfel kan orsaka driftstopp. I mer avancerade scenarier kan du till och med utföra en uppsättning testfall mot din app, till exempel anropa API:er eller skicka och övervaka en syntetisk transaktion.

Många appar implementerar slutpunkter för hälsokontroll. När en slutpunkt för hälsokontroll tar emot en begäran utför den en rad kontroller mot webbplatsen, till exempel att säkerställa att databaser och nätverkstjänster kan nås från appmiljön. Svaret som webbplatsen returnerar anger om appen är felfri. Utvecklare kan skriva och anpassa sina egna hälsokontroller efter appens krav. Om din app har en slutpunkt för hälsokontroll är det ofta klokt att övervaka den från arbetsflödet när distributionsjobbet har slutförts.

Ditt distributionsarbetsflöde

I nästa övning uppdaterar du distributionsarbetsflödet för att lägga till nya jobb för att skapa webbplatsens program och distribuera det till varje miljö:

Diagram som visar det reviderade arbetsflödet, inklusive ett nytt byggjobb och ett programdistributionsjobb.