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 webalkalmazás-létrehozási folyamatba. Állítsa a folyamatos üzembe helyezést engedélyezésre az Üzembe helyezés lapon, és konfigurálja 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 Üzembe helyezés létrehozása lapján.

Ha engedélyezi a folyamatos üzembe helyezést, az alkalmazás létrehozása 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

Az alkalmazás létrehozásakor hibaüzenet jelenhet meg, amely szerint az Azure-fiókja nem rendelkezik bizonyos engedélyekkel. Előfordulhat, hogy a fióknak szüksége van a felhasználó által hozzárendelt identitás létrehozásához és konfigurálásához szükséges engedélyekre. 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 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 segítségével egyszerűen konfigurálhatja a biztonságosabb OpenID Connect-hitelesítést egy felhasználó által hozzárendelt identitással. További információt a felhasználó által hozzárendelt identitásbeállításban talál.

Ha az Azure-fiókja rendelkezik a szükséges engedélyekkel, létrehozhat 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 Üzembehelyezé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

Ü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 a módszer 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ábbi eljárás ismerteti 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 olyan JSON-t ad vissza, amely appId az Öné client-id. Mentse később GitHub-titkos kódként AZURE_CLIENT_ID használni kívánt értéket.

    Az értéket összevont objectId hitelesítő adatok Graph API-val való létrehozásakor használja, és hivatkozik 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, amelyet a következő lépésben használ. 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. A GitHub a munkafolyamattól függően határozza meg az értékét:

      • A GitHub Actions-környezetben lévő feladatok esetén: 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"
        ]
    }     
    

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.

Munkafolyamat-fájl hozzáadása a GitHub-adattárhoz

A GitHub-adattár elérési /.github/workflows/ útjának egyik YAML-fájlja (.yml) definiál egy munkafolyamatot. 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.

A kód App Service-alkalmazásokban való üzembe helyezéséhez 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 című témakörben 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 , tenant-idés subscription-id a client-idkulcsokkal. 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-beli hitelesítő adatait használja.

    - 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 további információt a Maven beépülő modul wikijében talál 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

További információ a GitHub parancssori felülethez készült műveletéről, valamint annak használatáról és konfigurálásáról: Azure CLI GitHub-művelet.

Az az webapp üzembe helyezési parancsáról, használatáról és a paraméterek 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. További információ a GitHub Actions használatával történő üzembe helyezés lépéseiről: Üzembe helyezés tárolóban.

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 Settings adattárában talál további információt.

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