Share via


GitHub-művelet konfigurálása tárolópéldány létrehozásához

A GitHub Actions a GitHub szolgáltatáscsomagja, amely automatizálja a szoftverfejlesztési munkafolyamatokat ugyanazon a helyen, ahol a kódot tárolja, és együttműködik a lekéréses kérelmeken és problémákon.

Az Üzembe helyezés az Azure Container Instances GitHub Actions használatával automatizálhatja egyetlen tároló üzembe helyezését az Azure Container Instancesben. A művelettel az az container create parancshoz hasonló tárolópéldány tulajdonságait állíthatja be .

Ez a cikk bemutatja, hogyan állíthat be munkafolyamatot egy GitHub-adattárban, amely a következő műveleteket hajtja végre:

  • Rendszerkép létrehozása Docker-fájlból
  • A rendszerkép leküldése egy Azure-tárolóregisztrációs adatbázisba
  • A tárolórendszerkép üzembe helyezése egy Azure-tárolópéldányon

Ez a cikk a munkafolyamat beállításának két módját mutatja be:

  • GitHub-munkafolyamat konfigurálása – Munkafolyamat létrehozása GitHub-adattárban az Üzembe helyezés az Azure Container Instancesben művelet és egyéb műveletek használatával.
  • CLI-bővítmény használata – Használja az az container app up Üzembe helyezés az Azure-ban bővítmény parancsát az Azure CLI-ben. Ez a parancs leegyszerűsíti a GitHub-munkafolyamat és az üzembe helyezés lépéseinek létrehozását.

Fontos

Az Azure Container Instanceshez készült GitHub Actions jelenleg előzetes verzióban érhető el. Az előzetes verziók azzal a feltétellel érhetők el, hogy Ön beleegyezik a kiegészítő használati feltételekbe. A szolgáltatás néhány eleme megváltozhat a nyilvános rendelkezésre állás előtt.

Előfeltételek

  • GitHub-fiók – Hozzon https://github.com létre egy fiókot, ha még nem rendelkezik ilyen fiókkal.
  • Azure CLI – Az Azure Cli lépéseinek végrehajtásához használhatja az Azure Cloud Shellt vagy az Azure CLI helyi telepítését. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.
  • Azure-tárolóregisztrációs adatbázis – Ha nem rendelkezik ilyen beállításjegyzékkel, hozzon létre egy Azure-tárolóregisztrációs adatbázist az Alapszinten az Azure CLI, az Azure Portal vagy más módszerek használatával. Jegyezze fel az üzembe helyezéshez használt erőforráscsoportot, amelyet a GitHub-munkafolyamathoz használnak.

Adattár beállítása

  • A cikkben szereplő példákhoz használja a GitHubot a következő adattár elágazásához: https://github.com/Azure-Samples/acr-build-helloworld-node

    Ez az adattár egy Dockerfile-t és forrásfájlokat tartalmaz egy kis webalkalmazás tárolórendszerképének létrehozásához.

    A GitHub Fork (Leágaztatás) gombjának (kiemelve) képernyőképe

  • Győződjön meg arról, hogy a műveletek engedélyezve vannak az adattárban. Lépjen az elágazott adattárra, és válassza a Gépház> Actions lehetőséget. A Műveletek engedélyekben győződjön meg arról, hogy az Összes művelet engedélyezése lehetőség van kiválasztva.

GitHub-munkafolyamat konfigurálása

Hitelesítő adatok létrehozása az Azure-hitelesítéshez

A GitHub-munkafolyamatban azure-beli hitelesítő adatokat kell megadnia az Azure CLI-hitelesítéshez. Az alábbi példa létrehoz egy szolgáltatásnevet a tárolóregisztrációs adatbázis erőforráscsoportjára hatókörrel rendelkező közreműködői szerepkörrel.

Először kérje le az erőforráscsoport erőforrás-azonosítóját. Írja be a csoport nevét az alábbi az group show parancsba:

groupId=$(az group show \
  --name <resource-group-name> \
  --query id --output tsv)

A szolgáltatásnév létrehozásához használja az az ad sp create-for-rbac szolgáltatást:

az ad sp create-for-rbac \
  --scope $groupId \
  --role Contributor \
  --sdk-auth

A kimenet a következőhöz hasonló:

{
  "clientId": "xxxx6ddc-xxxx-xxxx-xxx-ef78a99dxxxx",
  "clientSecret": "xxxx79dc-xxxx-xxxx-xxxx-aaaaaec5xxxx",
  "subscriptionId": "xxxx251c-xxxx-xxxx-xxxx-bf99a306xxxx",
  "tenantId": "xxxx88bf-xxxx-xxxx-xxxx-2d7cd011xxxx",
  "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
  "resourceManagerEndpointUrl": "https://management.azure.com/",
  "activeDirectoryGraphResourceId": "https://graph.windows.net/",
  "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
  "galleryEndpointUrl": "https://gallery.azure.com/",
  "managementEndpointUrl": "https://management.core.windows.net/"
}

Mentse a JSON-kimenetet, mert egy későbbi lépésben használja. Jegyezze fel azt clientIdis, amelyet a következő szakaszban frissítenie kell a szolgáltatásnévvel.

Frissítés a beállításjegyzék-hitelesítéshez

Frissítse az Azure szolgáltatásnév hitelesítő adatait, hogy leküldéses és lekéréses hozzáférést biztosíthasson a tárolóregisztrációs adatbázishoz. Ez a lépés lehetővé teszi, hogy a GitHub-munkafolyamat a szolgáltatásnév használatával hitelesítse magát a tárolóregisztrációs adatbázissal , és leküldjön és lekérjen egy Docker-lemezképet.

Kérje le a tárolóregisztrációs adatbázis erőforrás-azonosítóját. Cserélje le a beállításjegyzék nevét az alábbi az acr show parancsra:

registryId=$(az acr show \
  --name <registry-name> \
  --resource-group <resource-group-name> \
  --query id --output tsv)

Az az role assignment create használatával rendelje hozzá az AcrPush szerepkört, amely leküldéses és lekéréses hozzáférést biztosít a beállításjegyzékhez. Cserélje le a szolgáltatásnév ügyfél-azonosítóját:

az role assignment create \
  --assignee <ClientId> \
  --scope $registryId \
  --role AcrPush

Hitelesítő adatok mentése a GitHub-adattárba

  1. A GitHub felhasználói felületén lépjen az elágaztatott adattárra, és válassza a Biztonsági > titkos kulcsok és változók > műveletek lehetőséget.

  2. Válassza az Új tárház titkos kód lehetőséget a következő titkos kódok hozzáadásához:

Titkos Érték
AZURE_CREDENTIALS A szolgáltatásnév létrehozási lépésének teljes JSON-kimenete
REGISTRY_LOGIN_SERVER A regisztrációs adatbázis bejelentkezési kiszolgálójának neve (mind kisbetűs). Példa: myregistry.azurecr.io
REGISTRY_USERNAME A clientId szolgáltatásnév létrehozásának JSON-kimenetéből származó érték
REGISTRY_PASSWORD A clientSecret szolgáltatásnév létrehozásának JSON-kimenetéből származó érték
RESOURCE_GROUP A szolgáltatásnév hatókörének hatóköréhez használt erőforráscsoport neve

Munkafolyamat-fájl létrehozása

  1. A GitHub felhasználói felületén válassza a Műveletek lehetőséget.
  2. Válassza ki , hogy saját maga állítson be egy munkafolyamatot.
  3. Az Új fájl szerkesztése területen illessze be a következő YAML-tartalmat a mintakód felülírásához. Fogadja el az alapértelmezett fájlnevet main.yml, vagy adjon meg egy választott fájlnevet.
  4. Válassza a Véglegesítés indítása lehetőséget, opcionálisan adja meg a véglegesítés rövid és bővített leírását, majd válassza az Új fájl véglegesítése lehetőséget.
on: [push]
name: Linux_Container_Workflow

jobs:
    build-and-deploy:
        runs-on: ubuntu-latest
        steps:
        # checkout the repo
        - name: 'Checkout GitHub Action'
          uses: actions/checkout@main
          
        - name: 'Login via Azure CLI'
          uses: azure/login@v1
          with:
            creds: ${{ secrets.AZURE_CREDENTIALS }}
        
        - name: 'Build and push image'
          uses: azure/docker-login@v1
          with:
            login-server: ${{ secrets.REGISTRY_LOGIN_SERVER }}
            username: ${{ secrets.REGISTRY_USERNAME }}
            password: ${{ secrets.REGISTRY_PASSWORD }}
        - run: |
            docker build . -t ${{ secrets.REGISTRY_LOGIN_SERVER }}/sampleapp:${{ github.sha }}
            docker push ${{ secrets.REGISTRY_LOGIN_SERVER }}/sampleapp:${{ github.sha }}

        - name: 'Deploy to Azure Container Instances'
          uses: 'azure/aci-deploy@v1'
          with:
            resource-group: ${{ secrets.RESOURCE_GROUP }}
            dns-name-label: ${{ secrets.RESOURCE_GROUP }}${{ github.run_number }}
            image: ${{ secrets.REGISTRY_LOGIN_SERVER }}/sampleapp:${{ github.sha }}
            registry-login-server: ${{ secrets.REGISTRY_LOGIN_SERVER }}
            registry-username: ${{ secrets.REGISTRY_USERNAME }}
            registry-password: ${{ secrets.REGISTRY_PASSWORD }}
            name: aci-sampleapp
            location: 'west us'

Munkafolyamat ellenőrzése

A munkafolyamat-fájl véglegesítése után a rendszer elindítja a munkafolyamatot. A munkafolyamat előrehaladásának áttekintéséhez lépjen az Actions Workflows (Műveletek>munkafolyamatai) lapra.

Munkafolyamat előrehaladásának megtekintése

A munkafolyamat futtatási előzményeinek megtekintésével kapcsolatos információkért tekintse meg a munkafolyamat egyes lépéseinek állapotát és eredményeit. Ha a munkafolyamat nem fejeződik be, a hibák diagnosztizálásához tekintse meg a naplók megtekintését.

Ha a munkafolyamat sikeresen befejeződött, az az container show parancs futtatásával szerezze be az aci-sampleapp nevű tárolópéldány adatait. Cserélje le az erőforráscsoport nevét:

az container show \
  --resource-group <resource-group-name> \
  --name aci-sampleapp \
  --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" \
  --output table

A kimenet a következőhöz hasonló:

FQDN                                   ProvisioningState
---------------------------------      -------------------
aci-action01.westus.azurecontainer.io  Succeeded

A példány üzembe helyezése után keresse meg a tároló teljes tartománynevét a böngészőben a futó webalkalmazás megtekintéséhez.

Webalkalmazás futtatása böngészőben

Az Üzembe helyezés az Azure-ban bővítmény használata

Másik lehetőségként a munkafolyamat konfigurálásához használja a Deploy to Azure bővítményt az Azure CLI-ben. A az container app up bővítmény parancsa bemeneti paramétereket vesz fel, hogy beállítson egy munkafolyamatot az Azure Container Instancesben való üzembe helyezéshez.

Az Azure CLI által létrehozott munkafolyamat hasonló ahhoz a munkafolyamathoz, amelyet manuálisan hozhat létre a GitHub használatával.

További előfeltételek

A forgatókönyv előfeltételei és adattárbeállításai mellett telepítenie kell az Üzembe helyezés az Azure-ban bővítményt az Azure CLI-hez.

Futtassa az az extension add parancsot a bővítmény telepítéséhez:

az extension add \
  --name deploy-to-azure

A bővítmények keresésével, telepítésével és kezelésével kapcsolatos információkért lásd : Bővítmények használata az Azure CLI-vel.

Az az container app up parancs futtatása

Az az container app up parancs futtatásához adja meg legalább a következőt:

  • Az Azure Container Registry neve, például myregistry
  • A GitHub-adattár URL-címe, például: https://github.com/<your-GitHub-Id>/acr-build-helloworld-node

Mintaparancs:

az container app up \
  --acr myregistry \
  --repository https://github.com/myID/acr-build-helloworld-node

Parancsállapot

  • Amikor a rendszer kéri, adja meg a GitHub hitelesítő adatait, vagy adjon meg egy GitHub személyes hozzáférési jogkivonatot (PAT), amely adattárral és felhasználói hatókörökkel rendelkezik a GitHub-fiókkal való hitelesítéshez. Ha megadja a GitHub hitelesítő adatait, a parancs létrehoz egy PAT-t az Ön számára. A munkafolyamat konfigurálásához kövesse a további utasításokat.

  • A parancs adattárkulcsokat hoz létre a munkafolyamathoz:

    • Szolgáltatásnév hitelesítő adatai az Azure CLI-hez
    • Hitelesítő adatok az Azure-tárolóregisztrációs adatbázis eléréséhez
  • Miután a parancs véglegesíti a munkafolyamat-fájlt az adattárban, a rendszer elindítja a munkafolyamatot.

A kimenet a következőhöz hasonló:

[...]
Checking in file github/workflows/main.yml in the GitHub repository myid/acr-build-helloworld-node
Creating workflow...
GitHub Action Workflow has been created - https://github.com/myid/acr-build-helloworld-node/runs/515192398
GitHub workflow completed.
Workflow succeeded
Your app is deployed at:  http://acr-build-helloworld-node.eastus.azurecontainer.io:8080/

A GitHub felhasználói felületén található egyes lépések munkafolyamat-állapotának és eredményeinek megtekintéséhez tekintse meg a munkafolyamat-futtatási előzmények megtekintése című témakört.

Munkafolyamat ellenőrzése

A munkafolyamat üzembe helyez egy Azure-tárolópéldányt a GitHub-adattár alapnevével, ebben az esetben az acr-build-helloworld-node névvel. Ha a munkafolyamat sikeresen befejeződött, az az container show parancs futtatásával szerezze be az acr-build-helloworld-node nevű tárolópéldány adatait. Cserélje le az erőforráscsoport nevét:

az container show \
  --resource-group <resource-group-name> \
  --name acr-build-helloworld-node \
  --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" \
  --output table

A kimenet a következőhöz hasonló:

FQDN                                                   ProvisioningState
---------------------------------                      -------------------
acr-build-helloworld-node.westus.azurecontainer.io     Succeeded

A példány üzembe helyezése után keresse meg a tároló teljes tartománynevét a böngészőben a futó webalkalmazás megtekintéséhez.

Az erőforrások eltávolítása

Állítsa le a tárolópéldányt az az container delete paranccsal:

az container delete \
  --name <instance-name>
  --resource-group <resource-group-name>

Az erőforráscsoport és az abban lévő összes erőforrás törléséhez futtassa az az csoporttörlés parancsot:

az group delete \
  --name <resource-group-name>

Következő lépések

A GitHub Marketplace-en további műveleteket kereshet a fejlesztési munkafolyamat automatizálásához