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.
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 clientId
is, 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
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.
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
- A GitHub felhasználói felületén válassza a Műveletek lehetőséget.
- Válassza ki , hogy saját maga állítson be egy munkafolyamatot.
- 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. - 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.
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.
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