Kurz: Nasazení do služby App Service pomocí GitHub Actions a připojení k databázi
Zjistěte, jak nastavit pracovní postup GitHub Actions pro nasazení aplikace ASP.NET Core s back-endem služby Azure SQL Database . Až budete hotovi, máte spuštěnou ASP.NET aplikaci v Azure a připojenou k SQL Database. Nejprve použijete šablonu ARM k vytvoření prostředků.
Tento kurz nepoužívá kontejnery. Pokud chcete nasadit do kontejnerizované aplikace ASP.NET Core, přečtěte si téma Použití GitHub Actions k nasazení do služby App Service for Containers a připojení k databázi.
V tomto kurzu se naučíte:
- Použití pracovního postupu GitHub Actions k přidání prostředků do Azure pomocí šablony Azure Resource Manageru (šablona ARM)
- Vytvoření aplikace ASP.NET Core pomocí pracovního postupu GitHub Actions
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
Požadavky
K dokončení tohoto kurzu budete potřebovat:
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Účet GitHub. Pokud ho nemáte, zdarma se zaregistrujte.
- Úložiště GitHub pro ukládání šablon Resource Manageru a souborů pracovního postupu. Pokud ho chcete vytvořit, přečtěte si téma Vytvoření nového úložiště.
Stažení ukázky
Vytvoření forku ukázkového projektu v úložišti Ukázek Azure
https://github.com/Azure-Samples/dotnetcore-sqldb-ghactions
Vytvoření skupiny prostředků
Otevřete Azure Cloud Shell na adrese https://shell.azure.com. Pokud jste ho nainstalovali místně, můžete alternativně použít Azure CLI. (Další informace o Cloud Shellu najdete v tématu Přehled Cloud Shellu.)
az group create --name {resource-group-name} --location {resource-group-location}
Generování přihlašovacích údajů pro nasazení
OpenID Připojení je metoda ověřování, která používá krátkodobé tokeny. Nastavení OpenID Připojení pomocí GitHub Actions je složitější proces, který nabízí posílené zabezpečení.
Pokud nemáte existující aplikaci, zaregistrujte novou aplikaci Microsoft Entra a instanční objekt, který má přístup k prostředkům.
az ad app create --display-name myApp
Tento příkaz vypíše JSON s vaším kódem
appId
client-id
.APPLICATION-OBJECT-ID
SloužíobjectId
k vytváření federovaných přihlašovacích údajů s voláními rozhraní Graph API. Uložte hodnotu, kterou chcete použít jako tajný kód GitHubuAZURE_CLIENT_ID
později.Vytvořte instanční objekt.
$appID
Nahraďte id aplikace z výstupu JSON. Tento příkaz vygeneruje výstup JSON s jinýmobjectId
příkazem, který se použije v dalším kroku. NovýobjectId
jeassignee-object-id
.Tento příkaz vygeneruje výstup JSON s jiným
objectId
kódem a použije se v dalším kroku. NovýobjectId
jeassignee-object-id
.Zkopírujte soubor, který
appOwnerTenantId
chcete použít jako tajný kód GitHubu proAZURE_TENANT_ID
pozdější použití.az ad sp create --id $appId
Vytvořte nové přiřazení role podle předplatného a objektu. Ve výchozím nastavení bude přiřazení role svázané s vaším výchozím předplatným. Nahraďte
$subscriptionId
ID předplatného,$resourceGroupName
názvem vaší skupiny prostředků a$assigneeObjectId
vygenerovanýmiassignee-object-id
(id nově vytvořeného objektu instančního objektu).az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id $assigneeObjectId --assignee-principal-type ServicePrincipal --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName
Spuštěním následujícího příkazu vytvořte nové přihlašovací údaje federované identity pro vaši aplikaci Microsoft Entra.
- Nahraďte
APPLICATION-OBJECT-ID
objectId (vygenerovaný při vytváření aplikace) pro vaši aplikaci Microsoft Entra. - Nastavte hodnotu pro
CREDENTIAL-NAME
pozdější odkaz. - Nastavte .
subject
Hodnota je definována GitHubem v závislosti na vašem pracovním postupu:- Úlohy v prostředí GitHub Actions:
repo:< Organization/Repository >:environment:< Name >
- Pro úlohy, které nejsou svázané s prostředím, zahrňte cestu odkaz pro větev nebo značku na základě cesty odkazu použité k aktivaci pracovního postupu:
repo:< Organization/Repository >:ref:< ref path>
. Napříkladrepo:n-username/ node_express:ref:refs/heads/my-branch
neborepo:n-username/ node_express:ref:refs/tags/my-tag
. - Pro pracovní postupy aktivované událostí žádosti o přijetí změn:
repo:< Organization/Repository >:pull_request
.
- Úlohy v prostředí GitHub Actions:
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:octo-org/octo-repo:environment:Production", "description": "Testing", "audiences": [ "api://AzureADTokenExchange" ] }
- Nahraďte
Informace o vytvoření aplikace active directory, instančního objektu a federovaných přihlašovacích údajů na webu Azure Portal najdete v tématu Připojení GitHubu a Azure.
Konfigurace tajného kódu GitHubu pro ověřování
K akci přihlášení musíte zadat ID klienta, ID tenanta a ID předplatného vaší aplikace. Tyto hodnoty je možné zadat buď přímo v pracovním postupu, nebo je můžete uložit v tajných kódech GitHubu a odkazovat na je ve vašem pracovním postupu. Uložením hodnot jako tajných kódů GitHubu je bezpečnější možnost.
Na GitHubu přejděte do svého úložiště.
V navigační nabídce přejděte na Nastavení.
Vyberte Akce tajných kódů zabezpečení > a proměnných>.
Vyberte Nový tajný klíč úložiště.
Vytváření tajných kódů pro
AZURE_CLIENT_ID
,AZURE_TENANT_ID
aAZURE_SUBSCRIPTION_ID
. Pro tajné kódy GitHubu použijte tyto hodnoty z vaší aplikace Microsoft Entra:Tajný kód GitHubu Aplikace Microsoft Entra AZURE_CLIENT_ID ID aplikace (klienta) AZURE_TENANT_ID ID adresáře (klienta) AZURE_SUBSCRIPTION_ID Subscription ID Uložte každý tajný kód výběrem možnosti Přidat tajný kód.
Přidání tajných kódů GitHubu pro sestavení
Vytvořte ve svém úložišti GitHub dva nové tajné kódy pro
SQLADMIN_PASS
aSQLADMIN_LOGIN
. Ujistěte se, že jste zvolili složité heslo, jinak krok vytvoření pro databázový server SQL selže. K tomuto heslu nebudete moct znovu přistupovat, takže ho uložte samostatně.Vytvořte
AZURE_SUBSCRIPTION_ID
tajný kód pro ID předplatného Azure. Pokud neznáte ID předplatného, pomocí tohoto příkazu v Azure Shellu ho vyhledejte. Zkopírujte hodnotu ve sloupciSubscriptionId
.az account list -o table
Vytvoření zdrojů Azure
Pracovní postup vytvoření prostředků Azure spustí šablonu ARM pro nasazení prostředků do Azure. Pracovní postup:
- Zkontroluje zdrojový kód pomocí akce Rezervace.
- Přihlásí se k Azure pomocí akce Přihlášení k Azure a shromáždí informace o prostředí a prostředcích Azure.
- Nasadí prostředky pomocí akce Nasazení Azure Resource Manageru.
Spuštění pracovního postupu vytvoření prostředků Azure:
infraworkflow.yml
Otevřete soubor v.github/workflows
úložišti.Aktualizujte hodnotu
AZURE_RESOURCE_GROUP
názvu vaší skupiny prostředků.Nastavte vstup pro
region
akce nasazení ARM do vaší oblasti.- Otevřete
templates/azuredeploy.resourcegroup.parameters.json
a aktualizujtergLocation
vlastnost do vaší oblasti.
- Otevřete
Přejděte na Akce a vyberte Spustit pracovní postup.
Ověřte, že se vaše akce úspěšně spustila, a to tak, že na stránce Akce vyhledáte zelenou značku zaškrtnutí.
Po vytvoření prostředků přejděte na Akce, vyberte Vytvořit prostředky Azure a zakažte pracovní postup.
Vytvoření tajného kódu profilu publikování
Na webu Azure Portal otevřete novou přípravnou službu App Service (Slot) vytvořenou
Create Azure Resources
pomocí pracovního postupu.Vyberte Získat profil publikování.
Otevřete soubor profilu publikování v textovém editoru a zkopírujte jeho obsah.
Vytvořte nový tajný kód GitHubu pro
AZURE_WEBAPP_PUBLISH_PROFILE
.
Sestavení a nasazení aplikace
Spuštění pracovního postupu sestavení a nasazení:
workflow.yaml
Otevřete soubor v.github/workflows
úložišti.Ověřte, že proměnné prostředí pro
AZURE_RESOURCE_GROUP
,AZURE_WEBAPP_NAME
SQLSERVER_NAME
aDATABASE_NAME
odpovídají proměnným vinfraworkflow.yml
.Ověřte, že je vaše aplikace nasazená, a to tak, že přejdete na adresu URL ve výstupu prohození do produkčního slotu. Měla by se zobrazit ukázková aplikace, moje aplikace TodoList.
Vyčištění prostředků
Pokud už ukázkový projekt nepotřebujete, odstraňte skupinu prostředků na webu Azure Portal a odstraňte úložiště na GitHubu.