Sdílet prostřednictvím


Nasazení do App Service funkcí GitHub Actions

Začněte používat GitHub Actions k automatizaci pracovního postupu a nasazení do služby Aplikace Azure Service z GitHubu.

Požadavky

Nastavení nasazení GitHub Actions při vytváření aplikace

Nasazení GitHub Actions je integrované do výchozího procesu vytvoření webové aplikace. Nastavte průběžné nasazování na kartě Nasazení a nakonfigurujte požadovanou organizaci, úložiště a větev.

Snímek obrazovky ukazuje, jak povolit nasazení GitHub Actions na kartě Nasazení vytvoření služby App Service.

Když povolíte průběžné nasazování, vytváření aplikace automaticky vybere metodu ověřování na základě základního výběru ověřování a odpovídajícím způsobem nakonfiguruje vaši aplikaci a úložiště GitHub:

Výběr základního ověřování Metoda ověřování
Zakázat Identita přiřazená uživatelem (OpenID Connect) (doporučeno)
Povolit Základní ověřování

Poznámka:

Při vytváření aplikace, ke které váš účet Azure nemá určitá oprávnění, se může zobrazit chyba. Váš účet může potřebovat požadovaná oprávnění k vytvoření a konfiguraci identity přiřazené uživatelem. Alternativu najdete v tématu Nastavení nasazení GitHub Actions z Centra nasazení.

Nastavení nasazení GitHub Actions z Centra nasazení

Pro existující aplikaci můžete rychle začít s GitHub Actions pomocí Centra nasazení služby App Service. Tato metoda turn-key vygeneruje soubor pracovního postupu GitHub Actions na základě zásobníku vaší aplikace a potvrdí ho do úložiště GitHub.

Deployment Center také umožňuje snadno nakonfigurovat bezpečnější ověřování OpenID Connect pomocí identity přiřazené uživatelem. Další informace najdete v možnosti identity přiřazené uživatelem.

Pokud má váš účet Azure potřebná oprávnění, můžete vytvořit identitu přiřazenou uživatelem. V opačném případě můžete v rozevírací nabídce Identita vybrat existující spravovanou identitu přiřazenou uživatelem. Se správcem Azure můžete vytvořit spravovanou identitu přiřazenou uživatelem s rolí Přispěvatel webu.

Další informace najdete v tématu Průběžné nasazování do služby Aplikace Azure Service.

Ruční nastavení pracovního postupu GitHub Actions

Pracovní postup můžete nasadit bez použití Centra nasazení. V takovém případě potřebujete provést tři kroky:

  1. Generování přihlašovacích údajů pro nasazení
  2. Konfigurace tajného kódu GitHubu
  3. Přidání souboru pracovního postupu do úložiště GitHub

Generování přihlašovacích údajů pro nasazení

Doporučený způsob ověřování pomocí Aplikace Azure Services pro GitHub Actions je OpenID Connect. Tento přístup je metoda ověřování, která používá krátkodobé tokeny. Nastavení OpenID Connect pomocí GitHub Actions je složitější, ale nabízí posílené zabezpečení.

Případně se můžete ověřit pomocí spravované identity přiřazené uživatelem, instančního objektu nebo profilu publikování.

Následující postup popisuje postup vytvoření aplikace active directory, instančního objektu a federovaných přihlašovacích údajů pomocí příkazů Azure CLI. Informace o vytvoření aplikace active directory, instančního objektu a federovaných přihlašovacích údajů na webu Azure Portal najdete v tématu Připojení GitHubu a Azure.

  1. Pokud nemáte existující aplikaci, zaregistrujte novou aplikaci Active Directory a instanční objekt, který má přístup k prostředkům. Vytvořte aplikaci Active Directory.

    az ad app create --display-name myApp
    

    Tento příkaz vrátí JSON s vaším client-idkódem appId . Uložte hodnotu, kterou chcete použít jako tajný kód GitHubu AZURE_CLIENT_ID později.

    Hodnotu použijete objectId při vytváření federovaných přihlašovacích údajů pomocí rozhraní Graph API a odkazujete na ni jako na APPLICATION-OBJECT-ID.

  2. Vytvořte instanční objekt. $appID Nahraďte id aplikace z výstupu JSON.

    Tento příkaz vygeneruje výstup JSON s jiným objectId příkazem, který se použije v dalším kroku. Nový objectId je assignee-object-id.

    Zkopírujte soubor, který appOwnerTenantId chcete použít jako tajný kód GitHubu pro AZURE_TENANT_ID pozdější použití.

    az ad sp create --id $appId
    
  3. Vytvořte nové přiřazení role podle předplatného a objektu. Ve výchozím nastavení je přiřazení role svázané s vaším výchozím předplatným. Nahraďte $subscriptionId ID předplatného, $resourceGroupName názvem vaší skupiny prostředků, $webappName názvem vaší webové aplikace a $assigneeObjectId vygenerovaným id. Zjistěte , jak spravovat předplatná Azure pomocí Azure CLI.

    az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id  $assigneeObjectId --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Web/sites/$webappName --assignee-principal-type ServicePrincipal
    
  4. Spuštěním následujícího příkazu vytvořte pro aplikaci služby Active Directory nové přihlašovací údaje federované identity.

    • Nahraďte APPLICATION-OBJECT-ID id aplikace (vygenerované při vytváření aplikace) pro vaši aplikaci Active Directory.

    • Nastavte hodnotu pro CREDENTIAL-NAME pozdější odkaz.

    • Nastavte .subject GitHub definuje jeho hodnotu v závislosti na vašem pracovním postupu:

      • Úlohy v prostředí GitHub Actions: repo:< Organization/Repository >:environment:< Name >
      • Pro úlohy, které nejsou svázané s prostředím, zahrňte cestu odkaz pro větev nebo značku na základě cesty odkazu použité k aktivaci pracovního postupu: repo:< Organization/Repository >:ref:< ref path>. Například repo:n-username/ node_express:ref:refs/heads/my-branch nebo repo:n-username/ node_express:ref:refs/tags/my-tag.
      • Pro pracovní postupy aktivované událostí žádosti o přijetí změn: repo:< Organization/Repository >:pull_request.
    az ad app federated-credential create --id <APPLICATION-OBJECT-ID> --parameters credential.json
    ("credential.json" contains the following content)
    {
        "name": "<CREDENTIAL-NAME>",
        "issuer": "https://token.actions.githubusercontent.com",
        "subject": "repo:organization/repository:ref:refs/heads/main",
        "description": "Testing",
        "audiences": [
            "api://AzureADTokenExchange"
        ]
    }     
    

Konfigurace tajného kódu GitHubu

K akci Azure/přihlášení musíte zadat ID klienta, ID tenanta a ID předplatného vaší aplikace. Tyto hodnoty je možné zadat buď přímo v pracovním postupu, nebo je můžete uložit v tajných kódech GitHubu a odkazovat na je ve vašem pracovním postupu. Uložením hodnot jako tajných kódů GitHubu je bezpečnější možnost.

  1. Otevřete úložiště GitHub a přejděte do části Nastavení>tajných kódů zabezpečení>a proměnných>Actions>New repository secret.

  2. Vytváření tajných kódů pro AZURE_CLIENT_ID, AZURE_TENANT_IDa AZURE_SUBSCRIPTION_ID. Pro tajné kódy GitHubu použijte tyto hodnoty z aplikace Active Directory:

    Tajný kód GitHubu Aplikace služby Active Directory
    AZURE_CLIENT_ID ID aplikace (klienta)
    AZURE_TENANT_ID ID adresáře (klienta)
    AZURE_SUBSCRIPTION_ID Subscription ID
  3. Uložte každý tajný kód výběrem možnosti Přidat tajný kód.

Přidání souboru pracovního postupu do úložiště GitHub

Soubor YAML (.yml) v /.github/workflows/ cestě v úložišti GitHub definuje pracovní postup. Tato definice obsahuje různé kroky a parametry, které tvoří pracovní postup.

Soubor pracovního postupu by měl minimálně následující různé kroky:

  1. Ověřte se pomocí služby App Service pomocí tajného kódu GitHubu, který jste vytvořili.
  2. Sestavte webovou aplikaci.
  3. Nasaďte webovou aplikaci.

Pokud chcete nasadit kód do aplikace App Service, použijte akci azure/webapps-deploy@v3 . Akce vyžaduje název vaší webové aplikace a app-name v závislosti na zásobníku jazyků, cestu *.zip, *.war, *.jar nebo složku, do packagekteré se má nasadit . Úplný seznam možných vstupů pro azure/webapps-deploy@v3 akci najdete v tématu action.yml.

Následující příklady ukazují část pracovního postupu, která vytváří webovou aplikaci v různých podporovaných jazycích.

Pokud chcete nasadit pomocí OpenID Connect pomocí spravované identity, kterou jste nakonfigurovali, použijte azure/login@v1 akci s klíči a klíči client-idtenant-id.subscription-id Odkazujte na tajné kódy GitHubu, které jste vytvořili dříve.

name: .NET Core

on: [push]

permissions:
      id-token: write
      contents: read

env:
  AZURE_WEBAPP_NAME: my-app    # set this to your application's name
  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root
  DOTNET_VERSION: '6.0.x'           # set this to the dot net version to use

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Checkout the repo
      - uses: actions/checkout@main
      - uses: azure/login@v1
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      
      # Setup .NET Core SDK
      - name: Setup .NET Core
        uses: actions/setup-dotnet@v3
        with:
          dotnet-version: ${{ env.DOTNET_VERSION }} 
      
      # Run dotnet build and publish
      - name: dotnet build and publish
        run: |
          dotnet restore
          dotnet build --configuration Release
          dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp' 
          
      # Deploy to Azure Web apps
      - name: 'Run Azure webapp deploy action using publish profile credentials'
        uses: azure/webapps-deploy@v3
        with: 
          app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
          package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
      
      - name: logout
        run: |
          az logout

Nejčastější dotazy

Návody nasazení souboru WAR prostřednictvím modulu plug-in Maven?

V případě, že jste nakonfigurovali projekt Java Tomcat s modulem plug-in Maven, můžete prostřednictvím tohoto modulu plug-in nasadit také službu Aplikace Azure Service. Pokud použijete akci GitHubu v Azure CLI, použije se vaše přihlašovací údaje Azure.

    - name: Azure CLI script file
      uses: azure/cli@v2
      with:
        inlineScript: |
          mvn package azure-webapp:deploy

Další informace o modulu plug-in Maven a o tom, jak ho používat a konfigurovat, najdete na wikiwebu modulu plug-in Maven pro Aplikace Azure Service.

Návody nasazení souboru WAR prostřednictvím Az CLI?

Pokud dáváte přednost azure CLI k nasazení do služby App Service, můžete použít akci GitHubu pro Azure CLI.

- name: Azure CLI script
  uses: azure/cli@v2
  with:
    inlineScript: |
      az webapp deploy --src-path '${{ github.workspace }}/target/yourpackage.war' --name ${{ env.AZURE_WEBAPP_NAME }} --resource-group ${{ env.RESOURCE_GROUP }}  --async true --type war

Další informace o akci GitHubu pro rozhraní příkazového řádku a jejím použití a konfiguraci najdete v tématu Akce GitHubu v Azure CLI.

Další informace o příkazu az webapp deploy, jeho použití a podrobnostech o parametrech najdete v dokumentaci az webapp deploy.

Návody nasadit spouštěcí soubor?

Použijte akci GitHubu pro rozhraní příkazového řádku. Příklad:

- name: Deploy startup script
  uses: azure/cli@v2
  with:
    inlineScript: |
      az webapp deploy --src-path ${{ github.workspace }}/src/main/azure/createPasswordlessDataSource.sh --name ${{ env.AZURE_WEBAPP_NAME }} --resource-group ${{ env.RESOURCE_GROUP }} --type startup --track-status false

Návody nasazení do kontejneru?

Pomocí akce Nasazení webu Azure můžete pracovní postup automatizovat a nasadit vlastní kontejnery do služby App Service pomocí GitHub Actions. Další informace o krocích nasazení pomocí GitHub Actions najdete v tématu Nasazení do kontejneru.

Návody po nasazení aktualizovat konfiguraci Tomcat?

Pokud chcete po nasazení aktualizovat některá nastavení webových aplikací, můžete použít akci Nastavení služby App Service.

    - uses: azure/appservice-settings@v1
      with:
        app-name: 'my-app'
        slot-name: 'staging'  # Optional and needed only if the settings have to be configured on the specific deployment slot
        app-settings-json: '[{ "name": "CATALINA_OPTS", "value": "-Dfoo=bar" }]' 
        connection-strings-json: '${{ secrets.CONNECTION_STRINGS }}'
        general-settings-json: '{"alwaysOn": "false", "webSocketsEnabled": "true"}' #'General configuration settings as Key Value pairs'
      id: settings

Další informace o této akci a jejím použití a konfiguraci najdete v úložišti Nastavení služby App Service.

Projděte si reference na Azure GitHub Actions a pracovní postupy: