Kontinuerlig distribution till Azure App Service

Azure App Service kontinuerlig distribution från lagringsplatsen GitHub, Bitbucket och 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 (Windows endast) *.sln, *.csproj eller default.aspx
ASP.NET Core *.sln eller *.csproj
PHP Index.php
Ruby (endast Linux) Gemfile
Node.js server.js, app.jseller package.json med ett startskript
Python *.py, requirements.txteller runtime.txt
HTML default.htm, default.html, default.asp, index.htm, index.htmleller iisstart.htm
WebJobs <>job_name/kör.< under> App_Data/jobs/continuous för kontinuerliga webbjobb eller App_Data/jobb/utlöses 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 ochAnpassat distributionsskript.

Anteckning

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

Konfigurera distributionskällan

  1. I Azure Portal du till hanteringssidan för din App Service app.

  2. Välj Distributionscenter i den vänstra rutan. Välj sedan Inställningar.

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

    Screenshot that shows how to choose the deployment source.

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 Skapa tjänst (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 Actions har valts som versionsprovider kan du välja den arbetsflödesfil som du vill använda med hjälp av listlistorna 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 Portal du till hanteringssidan för din App Service app.

  2. Välj Distributionscenter i den vänstra rutan. Välj sedan Inställningar>Disconnect:

    Screenshot that shows how to disconnect your cloud folder sync with your App Service app in the 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 för 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 GitHub Actions-byggarprovidern

Den 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 i 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 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 tjänstens huvudnamn i 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 du <subscription-id>, <group-name> och <app-name> med dina egna 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 GitHub du på lagringsplatsen och väljer Inställningar>Secrets>Lägg till en ny hemlighet.

  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 azure/webapps-deploy distributionscentret ändrar du steget så att det ser ut som i följande exempel (som ändras från en 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 stöder direkt, till exempel GitLab. Det gör du genom att välja Extern Giti listrutan Källa. Mer information finns i Konfigurera kontinuerlig distribution med manuella steg.

Fler resurser