Oktatóanyag: A GitHub Actions használata egyéni App Service-tárolóban való üzembe helyezéshez és adatbázishoz való csatlakozáshoz
Ez az oktatóanyag végigvezeti egy GitHub Actions-munkafolyamat beállításán egy tárolóalapú ASP.NET Core-alkalmazás üzembe helyezéséhez egy Azure SQL Database-háttérrendszerrel . Ha végzett, egy ASP.NET alkalmazás fut az Azure-ban, és csatlakozik az SQL Database-hez. Először egy ARM-sablon gitHub Actions-munkafolyamattal fog Azure-erőforrásokat létrehozni.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- GitHub Actions-munkafolyamat használata erőforrások Azure Resource Manager-sablonnal (ARM-sablonnal) való hozzáadásához az Azure-hoz
- Egy GitHub Actions-munkafolyamat használatával hozzon létre egy tárolót a legújabb webalkalmazás-módosításokkal
If you don't have an Azure subscription, create an Azure free account before you begin.
Előfeltételek
Az oktatóanyag elvégzéséhez a következőkre lesz szüksége:
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Egy GitHub-fiók. Ha nincs fiókja, ingyenesen regisztrálhat egyet.
- Egy GitHub-adattár a Resource Manager-sablonok és a munkafolyamat-fájlok tárolására. A létrehozásról az Új adattár létrehozása című témakörben olvashat.
A minta letöltése
A mintaprojekt elágazása az Azure-minták adattárában.
https://github.com/Azure-Samples/dotnetcore-containerized-sqldb-ghactions/
Az erőforráscsoport létrehozása
Nyissa meg az Azure Cloud Shellt a következő helyen https://shell.azure.com: . Alternatív megoldásként használhatja az Azure CLI-t, ha helyileg telepítette. (A Cloud Shellről további információt a Cloud Shell áttekintésében talál.)
az group create --name {resource-group-name} --location {resource-group-location}
Üzembehelyezési hitelesítő adatok létrehozása
Az OpenID Csatlakozás egy olyan hitelesítési módszer, amely rövid élettartamú jogkivonatokat használ. Az OpenID Csatlakozás beállítása a GitHub Actions használatával összetettebb folyamat, amely fokozott biztonságot nyújt.
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 jSON-t
appId
ad ki az Ön által.client-id
Mentse később GitHub-titkos kódkéntAZURE_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
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 újobjectId
aassignee-object-id
.Másolja ki a
appOwnerTenantId
gitHub-titkos kódként való használathoz későbbi használatraAZURE_TENANT_ID
.az ad sp create --id $appId
Hozzon létre egy új szerepkör-hozzárendelést előfizetés és objektum szerint. A szerepkör-hozzárendelés alapértelmezés szerint az alapértelmezett előfizetéshez lesz kötve. Cserélje le
$subscriptionId
az előfizetés azonosítóját,$resourceGroupName
az erőforráscsoport nevét és$assigneeObjectId
a létrehozottassignee-object-id
nevet. Megtudhatja , hogyan kezelheti az Azure-előfizetéseket az Azure CLI-vel.az role assignment create --role contributor --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName --subscription $subscriptionId --assignee-object-id $assigneeObjectId --assignee-principal-type ServicePrincipal
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ás objectId azonosítójá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
. Ennek é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
vagyrepo: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
.
- Feladatok a GitHub Actions-környezetben:
az rest --method POST --uri 'https://graph.microsoft.com/beta/applications/<APPLICATION-OBJECT-ID>/federatedIdentityCredentials' --body '{"name":"<CREDENTIAL-NAME>","issuer":"https://token.actions.githubusercontent.com","subject":"repo:organization/repository:ref:refs/heads/main","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
- Cserélje le
Az Active Directory-alkalmazás, szolgáltatásnév és összevont hitelesítő adatok létrehozása az Azure Portalon a GitHub és az Azure Csatlakozás című témakörben talál további információt.
A GitHub-titkos kód konfigurálása hitelesítéshez
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 a bejelentkezési 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.
A GitHubon nyissa meg az adattárat.
Nyissa meg a Gépház a navigációs menüben.
Válassza ki a Biztonsági > titkos kulcsok és változók > műveletek lehetőséget.
Válassza az Új tárház titkos kódját.
Titkos kulcsok létrehozása a következőhöz
AZURE_CLIENT_ID
: ,AZURE_TENANT_ID
ésAZURE_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 Subscription ID Mentse az egyes titkos kulcsokat a Titkos kód hozzáadása gombra kattintva.
SQL Server-titkos kód hozzáadása
Hozzon létre egy új titkos kulcsot az adattárban a következőhöz SQL_SERVER_ADMIN_PASSWORD
: . Ez a titkos kód bármilyen jelszó lehet, amely megfelel az Azure jelszóbiztonságra vonatkozó szabványainak. Nem fogja tudni újból elérni ezt a jelszót, ezért külön mentse.
Azure-erőforrások létrehozása
Az Azure-erőforrások létrehozása munkafolyamat egy ARM-sablont futtat az erőforrások Azure-ban való üzembe helyezéséhez. A munkafolyamat:
- A forráskód kivétele a Checkout művelettel.
- Az Azure Bejelentkezési művelettel bejelentkezik az Azure-ba, és összegyűjti a környezetet és az Azure-erőforrások adatait.
- Erőforrások üzembe helyezése az Azure Resource Manager üzembe helyezési műveletével.
Az Azure-erőforrások létrehozása munkafolyamat futtatása:
Nyissa meg a
azuredeploy.yaml
fájlt az adattárban.github/workflows
.Frissítse az erőforráscsoport nevének értékét
AZURE_RESOURCE_GROUP
.Frissítse a webalkalmazás és az SQL Server nevét, illetve
SQL_SERVER_NAME
értékeitWEB_APP_NAME
.Nyissa meg a Műveletek lehetőséget, és válassza a Munkafolyamat futtatása lehetőséget.
Ellenőrizze, hogy a művelet sikeresen futott-e, ha zöld pipát keres a Műveletek lapon.
Tárolóregisztrációs adatbázis és SQL-titkos kódok hozzáadása
Az Azure Portalon nyissa meg az újonnan létrehozott Azure Container Registryt az erőforráscsoportban.
Nyissa meg az Access-kulcsokat , és másolja ki a felhasználónevet és a jelszóértékeket.
Hozzon létre új GitHub-titkos kulcsokat
ACR_USERNAME
ésACR_PASSWORD
jelszót az adattárban.Nyissa meg az Azure SQL-adatbázist az Azure Portalon. Nyissa meg Csatlakozás ion sztringeket, és másolja ki az értéket.
Hozzon létre egy új titkos kulcsot a következőhöz
SQL_CONNECTION_STRING
: . Cserélje le{your_password}
aSQL_SERVER_ADMIN_PASSWORD
.
Rendszerkép létrehozása, leküldése és üzembe helyezése
A buildelési, leküldési és üzembe helyezési munkafolyamat létrehoz egy tárolót a legújabb alkalmazásmódosításokkal, leküldi a tárolót az Azure Container Registrybe, és frissíti a webalkalmazás átmeneti pontját, hogy a legújabb leküldéses tárolóra mutasson. A munkafolyamat egy buildelési és üzembe helyezési feladatot tároló tároló:
- A buildelési feladat a Kivétel művelettel ellenőrzi a forráskódot. A feladat ezután a Docker bejelentkezési művelettel és egy egyéni szkripttel hitelesíti az Azure Container Registryt, létrehoz egy tárolórendszerképet, és üzembe helyezi azt az Azure Container Registryben.
- Az üzembe helyezési feladat az Azure Bejelentkezési művelettel jelentkezik be az Azure-ba, és összegyűjti a környezetet és az Azure-erőforrások adatait. A feladat ezután frissíti a Web App Gépház a Azure-alkalmazás Szolgáltatás Gépház művelettel, és az Azure Web Deploy művelettel üzembe helyez egy App Service-előkészítési ponton. Végül a feladat egy egyéni szkriptet futtat az SQL-adatbázis frissítéséhez, és felcseréli az előkészítési pontot az éles környezetbe.
A buildelési, leküldéses és üzembe helyezési munkafolyamat futtatása:
Nyissa meg a
build-deploy.yaml
fájlt az adattárban.github/workflows
.Ellenőrizze, hogy a környezeti változók
AZURE_RESOURCE_GROUP
WEB_APP_NAME
megegyeznek-e a következőben szereplőkkelazuredeploy.yaml
: .Frissítse az
ACR_LOGIN_SERVER
Azure Container Registry bejelentkezési kiszolgáló értékét.