Megosztás a következőn keresztül:


Üzembe helyezés az App Service-ben a GitHub Actions segítségével

Ismerkedés a GitHub Actions szolgáltatással a munkafolyamat automatizálásához és Azure-alkalmazás Szolgáltatásban való üzembe helyezéshez a GitHubról.

Előfeltételek

A GitHub Actions üzembe helyezésének beállítása az alkalmazás létrehozásakor

A GitHub Actions üzembe helyezése integrálva van az alapértelmezett alkalmazáslétrehozó varázslóba. Csak be kell állítania a folyamatos üzembe helyezést az Üzembe helyezés lapon engedélyezve , és konfigurálnia kell a kívánt szervezetet, adattárat és ágat.

Képernyőkép a GitHub Actions üzembe helyezésének engedélyezéséről az App Service létrehozási varázslójában.

A folyamatos üzembe helyezés engedélyezésekor az alkalmazáslétrehozási varázsló automatikusan kiválasztja a hitelesítési módszert az alapszintű hitelesítés kiválasztása alapján, és ennek megfelelően konfigurálja az alkalmazást és a GitHub-adattárat:

Egyszerű hitelesítés kiválasztása Hitelesítési módszer
Letiltás Felhasználó által hozzárendelt identitás (OpenID Connect) (ajánlott)
Engedélyezés Alapszintű hitelesítés

Feljegyzés

Ha az alkalmazás létrehozásakor hibaüzenet jelenik meg, amely szerint az Azure-fiókja nem rendelkezik bizonyos engedélyekkel, előfordulhat, hogy nem rendelkezik a felhasználó által hozzárendelt identitás létrehozásához és konfigurálásához szükséges engedélyekkel. Másik lehetőségként tekintse meg a GitHub Actions üzembe helyezésének beállítása az üzembe helyezési központból című témakört.

A GitHub Actions üzembe helyezésének beállítása az üzembe helyezési központból

Egy meglévő alkalmazás esetében az App Service Deployment Center használatával gyorsan megkezdheti a GitHub Actions használatát. Ez a kulcsrakész módszer automatikusan létrehoz egy GitHub Actions-munkafolyamatfájlt az alkalmazásverem alapján, és véglegesíti azt a GitHub-adattárban.

Az Üzembe helyezési központ lehetővé teszi a biztonságosabb OpenID Connect-hitelesítés konfigurálását is a felhasználó által hozzárendelt identitásbeállítással.

Ha az Azure-fiókja rendelkezik a szükséges engedélyekkel, kiválaszthatja, hogy létrehoz-e egy felhasználó által hozzárendelt identitást. Ellenkező esetben kiválaszthat egy meglévő, felhasználó által hozzárendelt felügyelt identitást az Identitás legördülő menüben. Az Azure-rendszergazdával együttműködve létrehozhat egy felhasználó által hozzárendelt felügyelt identitást a webhely közreműködői szerepkörével.

További információ: Folyamatos üzembe helyezés Azure-alkalmazás szolgáltatásban.

GitHub Actions-munkafolyamat manuális beállítása

A munkafolyamatokat az Üzembe helyezési központ használata nélkül is üzembe helyezheti. Ebben az esetben három lépést kell végrehajtania:

  1. Üzembehelyezési hitelesítő adatok létrehozása
  2. A GitHub titkos kódjának konfigurálása
  3. Munkafolyamat-fájl hozzáadása a GitHub-adattárhoz

1. Üzembehelyezési hitelesítő adatok létrehozása

A GitHub Actionshez készült Azure-alkalmazás-szolgáltatásokkal való hitelesítés ajánlott módja az OpenID Connect. Ez egy olyan hitelesítési módszer, amely rövid élettartamú jogkivonatokat használ. Az OpenID Connect és a GitHub Actions beállítása összetettebb, de fokozott biztonságot nyújt.

Másik lehetőségként hitelesítést végezhet felhasználó által hozzárendelt felügyelt identitással, szolgáltatásnévvel vagy közzétételi profillal.

Az alábbiakban áttekintheti az Active Directory-alkalmazás, a szolgáltatásnév és az összevont hitelesítő adatok Azure CLI-utasítások használatával történő létrehozásának lépéseit. Az Active Directory-alkalmazás, a szolgáltatásnév és az összevont hitelesítő adatok Azure Portalon való létrehozásáról a GitHub és az Azure csatlakoztatása című témakörben olvashat.

  1. Ha nem rendelkezik meglévő alkalmazással, regisztráljon egy új Active Directory-alkalmazást és szolgáltatásnevet, amely hozzáfér az erőforrásokhoz. Hozza létre az Active Directory-alkalmazást.

    az ad app create --display-name myApp
    

    Ez a parancs egy JSON-t appId ad ki, amely az Öné client-id. Mentse később GitHub-titkos kódként AZURE_CLIENT_ID használni kívánt értéket.

    Ezt az értéket a objectId Graph API-val összevont hitelesítő adatok létrehozásakor fogja használni, és hivatkozni fog rá.APPLICATION-OBJECT-ID

  2. Hozzon létre egy szolgáltatásnevet. Cserélje le az $appID appId-et a JSON-kimenetből.

    Ez a parancs egy másik objectId JSON-kimenetet hoz létre, és a következő lépésben fogja használni. Az új objectId a assignee-object-id.

    Másolja ki a appOwnerTenantId gitHub-titkos kódként való használathoz későbbi használatra AZURE_TENANT_ID .

     az ad sp create --id $appId
    
  3. Hozzon létre egy új szerepkör-hozzárendelést előfizetés és objektum szerint. Alapértelmezés szerint a szerepkör-hozzárendelés az alapértelmezett előfizetéshez van kötve. Cserélje le $subscriptionId az előfizetés azonosítóját, $resourceGroupName az erőforráscsoport nevét, $webappName a webalkalmazás nevét és $assigneeObjectId a létrehozott idnevet. Megtudhatja , hogyan kezelheti az Azure-előfizetéseket az Azure CLI-vel.

    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. Futtassa a következő parancsot egy új összevont identitás hitelesítő adatainak létrehozásához az Active Directory-alkalmazáshoz.

    • Cserélje le APPLICATION-OBJECT-ID az Active Directory-alkalmazáshoz tartozó appId azonosítót (amely az alkalmazás létrehozásakor jön létre).
    • Adjon meg egy értéket a CREDENTIAL-NAME későbbi hivatkozáshoz.
    • Állítsa be a subject. Értékét a GitHub határozza meg a munkafolyamattól függően:
      • Feladatok a GitHub Actions-környezetben: repo:< Organization/Repository >:environment:< Name >
      • A környezethez nem kapcsolódó feladatok esetében adja meg az ág/címke hiv elérési útját a munkafolyamat aktiválásához használt hiv elérési út alapján: repo:< Organization/Repository >:ref:< ref path>. Például, repo:n-username/ node_express:ref:refs/heads/my-branch vagy repo:n-username/ node_express:ref:refs/tags/my-tag.
      • Lekéréses kérelem esemény által aktivált munkafolyamatok eseté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"
        ]
    }     
    

2. A GitHub titkos kódjának konfigurálása

Meg kell adnia az alkalmazás ügyfél-azonosítóját, bérlőazonosítóját és előfizetés-azonosítóját az Azure/login művelethez. Ezek az értékek közvetlenül a munkafolyamatban is megadhatóak, vagy a GitHub titkos kulcsaiban tárolhatók, és a munkafolyamatban hivatkozhatnak gombra. Az értékek GitHub-titkos kulcsként való mentése a biztonságosabb megoldás.

  1. Nyissa meg a GitHub-adattárat, és lépjen a Beállítások > biztonsági > titkos kulcsok és változók > Műveletek Új tárház titkos műveletei > elemre.

  2. Titkos kulcsok létrehozása a következőhöz AZURE_CLIENT_ID: , AZURE_TENANT_IDés AZURE_SUBSCRIPTION_ID. Használja ezeket az értékeket az Active Directory-alkalmazásból a GitHub-titkos kulcsokhoz:

    GitHub-titkos kód Active Directory-alkalmazás
    AZURE_CLIENT_ID Alkalmazás (ügyfél) azonosítója
    AZURE_TENANT_ID Címtár (bérlő) azonosítója
    AZURE_SUBSCRIPTION_ID Előfizetés azonosítója
  3. Mentse az egyes titkos kulcsokat a Titkos kód hozzáadása gombra kattintva.

3. Adja hozzá a munkafolyamat-fájlt a GitHub-adattárhoz

A munkafolyamatokat egy YAML-fájl (.yml) határozza meg a /.github/workflows/ GitHub-adattár elérési útján. Ez a definíció a munkafolyamatot alkotó különböző lépéseket és paramétereket tartalmazza.

A munkafolyamat-fájl legalább a következő különböző lépésekkel rendelkezik:

  1. Hitelesítés az App Service-ben a létrehozott GitHub-titkos kóddal.
  2. A webalkalmazás létrehozása.
  3. A webalkalmazás üzembe helyezése.

Ha a kódot egy App Service-alkalmazásban szeretné üzembe helyezni, használja az azure/webapps-deploy@v3 műveletet. A művelethez meg kell adni a webalkalmazás app-name nevét, és a nyelvi veremtől függően egy *.zip, *.war, *.jar vagy mappa elérési útját.package A művelet lehetséges bemeneteinek azure/webapps-deploy@v3 teljes listáját a action.yml definícióban találja.

Az alábbi példák a webalkalmazást összeállító munkafolyamat különböző támogatott nyelveken történő részét mutatják be.

Ha az OpenID Connect használatával szeretné üzembe helyezni a konfigurált felügyelt identitást, használja a azure/login@v1 műveletet a client-id, tenant-idés subscription-id a kulcsokkal, és hivatkozzon a korábban létrehozott GitHub-titkos kódokra.

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

Gyakori kérdések

Hogyan üzembe helyezni egy WAR-fájlt a Maven beépülő modulon keresztül?

Ha a Java Tomcat-projektet a Maven beépülő modullal konfigurálta, akkor ezen a beépülő modulon keresztül is üzembe helyezheti a Azure-alkalmazás szolgáltatásban. Ha az Azure CLI GitHub-műveletet használja, az az Azure bejelentkezési hitelesítő adatait fogja használni.

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

A Maven beépülő modulról és annak használatáról és konfigurálásáról a Maven beépülő modul wikijében talál további információt Azure-alkalmazás szolgáltatáshoz.

Hogyan üzembe helyezni egy WAR-fájlt az Az CLI-vel?

Ha inkább az Azure CLI-t használja az App Service-ben való üzembe helyezéshez, használhatja az Azure CLI-hez készült GitHub-műveletet.

- 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

Az Azure CLI GitHub-műveletében további információk találhatók a GitHub parancssori felülethez készült műveletéről, valamint annak használatáról és konfigurálásáról. Az az webapp deploy parancsról, a használat módjáról és a paraméter részleteiről az az webapp üzembe helyezési dokumentációjában talál további információt.

Hogyan üzembe helyezni egy indítási fájlt?

Használja a GitHub action for CLI-t. Példa:

- 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

Hogyan üzembe helyezni egy tárolóban?

Az Azure Web Deploy művelettel automatizálhatja a munkafolyamatot, hogy egyéni tárolókat helyezzen üzembe az App Service-ben a GitHub Actions használatával. A GitHub Actions használatával történő üzembe helyezés lépéseire vonatkozó részletes információk a Tárolón való üzembe helyezésben találhatók.

Hogyan frissíteni a Tomcat-konfigurációt az üzembe helyezés után?

Ha az üzembe helyezés után bármelyik webalkalmazás-beállítást frissíteni szeretné, használhatja az App Service-beállítások műveletet.

    - 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

Erről a műveletről és annak használatáról és konfigurálásáról az App Service-beállítások adattárban talál további információt.

Következő lépések

Tekintse meg az Azure GitHub Actions és munkafolyamatok hivatkozásait: