Kontinuerlig distribution till Azure App Service

Azure App Service kontinuerlig distribution från lagringsplatsen GitHub, Bitbucketoch Azure Repos genom att hämta de senaste uppdateringarna.

Anteckning

Sidan Development Center (klassisk) i Azure Portal, en tidigare version av distributionsfunktionen, blev inaktuell i mars 2021. Den här ändringen påverkar inte befintliga distributionsinställningar i din app och du kan fortsätta att hantera appdistributionen från sidan Distributionscenter i portalen.

Förbereda din lagringsplats

Om du vill hämta automatiserade Azure App Service från en byggserver kontrollerar du att lagringsplatsens rot har rätt filer i projektet.

Körning 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 ellerpackage.js på 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 _ Appdata/jobb/kontinuerlig för kontinuerliga webbjobb eller _ Appdata/jobb/utlösta för utlösta webbjobb. Mer information finns i Kudu WebJobs-dokumentationen.
Functions Se Kontinuerlig distribution för Azure Functions.

Om du vill anpassa distributionen inkluderar du en .deployment-fil i lagringsplatsens rot. Mer information finns i Anpassa distributioner och Anpassat distributionsskript.

Anteckning

Om du använder Visual Studio kan Visual Studio skapa en lagringsplats åt dig. Projektet kommer omedelbart att vara redo för distribution via Git.

Konfigurera distributionskällan

  1. I Azure Portalgår du till hanteringssidan för din App Service appen.

  2. I den vänstra rutan väljer du Distributionscenter. Välj sedan Inställningar.

  3. I rutan Källa väljer du något av CI/CD-alternativen:

    Skärmbild som visar hur du väljer distributionskälla.

Välj den flik som motsvarar byggprovidern för att fortsätta.

  1. GitHub Actions är standardbyggprovidern. Om du vill ändra providern väljer du Ändra provider App Service > Build Service (Kudu) > OK.

    Anteckning

    Om du vill använda Azure Pipelines som byggprovider App Service din app konfigurerar du CI/CD direkt från Azure Pipelines. Konfigurera den inte i App Service. Alternativet Azure Pipelines pekar bara åt rätt håll.

  2. Om du distribuerar från GitHub första gången väljer du Auktorisera och följer anvisningarna för auktorisering. Om du vill distribuera från en annan användares lagringsplats väljer du Ändra konto.

  3. När du har auktoriserat ditt Azure-GitHub väljer du organisation, lagringsplats och gren för att konfigurera CI/CD för. Om du inte hittar en organisation eller lagringsplats kan du behöva aktivera fler behörigheter för GitHub. Mer information finns i Hantera åtkomst till din organisations lagringsplatsen.

  4. När GitHub Åtgärder har valts som versionsprovider kan du välja den arbetsflödesfil som du vill använda med hjälp av listrutan Körningsstack och Version. Azure sparar den här arbetsflödesfilen till den GitHub lagringsplatsen för att hantera bygg- och distributionsuppgifter. Om du vill se filen innan du sparar ändringarna väljer du Förhandsgranska fil.

    Anteckning

    App Service identifierar språkstackinställningen för din app och väljer den lämpligaste arbetsflödesmallen. Om du väljer en annan mall kan den distribuera en app som inte körs korrekt. Mer information finns i Så här fungerar GitHub Actions-byggarprovidern.

  5. Välj Spara.

    Nya genomföranden i den valda lagringsplatsen och grenen distribueras nu kontinuerligt till din App Service app. Du kan spåra genomföranden och distributioner på fliken Loggar.

Inaktivera kontinuerlig distribution

  1. I Azure Portalgår du till hanteringssidan för din App Service appen.

  2. I den vänstra rutan väljer du Distributionscenter. Välj sedan Inställningar > Koppla från:

    Skärmbild som visar hur du kopplar från synkroniseringen av molnmappen med App Service app i Azure Portal.

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

  4. Välj OK.

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 app. 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 också bete sig oförutsägbart under distributionen eftersom alla filer inte uppdateras samtidigt. Det här beteendet är oönskat för en kundriktad app. Det finns några sätt att undvika dessa problem:

Så här fungerar GitHub Actions-byggarprovidern

Build-providern GitHub Actions är ett alternativ för CI/CD från GitHub. De här åtgärderna slutförs för att konfigurera CI/CD:

  • Sätter in en GitHub Actions-arbetsflödesfil på din GitHub för att hantera bygg- och distributionsuppgifter till App Service.
  • Lägger 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.
  • Samlar in information från arbetsflödets körningsloggar och visar den på fliken Loggar i appens distributionscenter.

Du kan anpassa GitHub Actions-byggarprovidern på följande sätt:

  • Anpassa arbetsflödesfilen när den har genererats i 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 på din lagringsplats. Den här metoden ger dig inte loggintegrering med Azure Portal.
  • I stället för att använda en publiceringsprofil distribuerar du med hjälp av ett huvudnamn för tjänsten Azure Active Directory.

Autentisera med hjälp av ett huvudnamn för tjänsten

Den här valfria konfigurationen ersätter standardautentisering med publiceringsprofiler i den genererade arbetsflödesfilen.

  1. Generera ett huvudnamn för tjänsten med kommandot az ad sp create-for-rbac i Azure CLI. I följande exempel ersätter <subscription-id> du , och med dina egna <group-name> <app-name> värden:

    az ad sp create-for-rbac --name "myAppDeployAuth" --role contributor \
                                --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
                                --sdk-auth
    

    Viktigt

    Av säkerhetsskäl beviljar du den minsta nödvändiga åtkomsten till tjänstens huvudnamn. Omfånget i föregående exempel är begränsat till den App Service appen och inte hela resursgruppen.

  2. Spara hela JSON-utdata för nästa steg, inklusive den översta nivån {} .

  3. I GitHubpå lagringsplatsen väljer du Välj Inställningar > Lägg till en ny hemlighet i > .

  4. Klistra in hela JSON-utdata från Azure CLI-kommandot i hemlighetens värdefält. Ge hemligheten ett namn som AZURE_CREDENTIALS .

  5. I arbetsflödesfilen som genereras av distributionscentret ändrar du steget så att det ser ut som i följande exempel (som ändras från en azure/webapps-deploy Node.js arbetsflödesfil):

    - name: Sign in to Azure 
    # Use the GitHub secret you added.
    - uses: azure/login@v1
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}
    - name: Deploy to Azure Web App
    # Remove publish-profile.
    - uses: azure/webapps-deploy@v2
      with:
        app-name: '<app-name>'
        slot-name: 'production'
        package: .
    - name: Sign out of Azure.
      run: |
        az logout
    

Distribuera från andra lagringsplatsen

För Windows-appar kan du manuellt konfigurera kontinuerlig distribution från en Git- eller Mercurial-molnlagringsplats som portalen inte har direkt stöd för, till exempel GitLab. Det gör du genom att välja Extern Git i listrutan Källa. Mer information finns i Konfigurera kontinuerlig distribution med manuella steg.

Fler resurser