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:

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í.

  1. 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 appIdclient-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 GitHubu AZURE_CLIENT_ID později.

  2. Vytvořte instanční objekt. $appID Nahraďte id aplikace z výstupu JSON. Tento příkaz vygeneruje výstup JSON s jiným objectId příkazem, který se použije v dalším kroku. Nový objectId je assignee-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 je assignee-object-id.

    Zkopírujte soubor, který appOwnerTenantId chcete použít jako tajný kód GitHubu pro AZURE_TENANT_ID pozdější použití.

     az ad sp create --id $appId
    
  3. 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ými assignee-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
    
  4. 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říklad repo:n-username/ node_express:ref:refs/heads/my-branch nebo repo: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.
    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"
        ]
    }
    

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.

  1. Na GitHubu přejděte do svého úložiště.

  2. V navigační nabídce přejděte na Nastavení.

  3. Vyberte Akce tajných kódů zabezpečení > a proměnných>.

    Snímek obrazovky s přidáním tajného kódu

  4. Vyberte Nový tajný klíč úložiště.

  5. Vytváření tajných kódů pro AZURE_CLIENT_ID, AZURE_TENANT_IDa AZURE_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
  6. 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í

  1. Vytvořte ve svém úložišti GitHub dva nové tajné kódy pro SQLADMIN_PASS a SQLADMIN_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ě.

  2. 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 sloupci SubscriptionId .

    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:

  1. infraworkflow.yml Otevřete soubor v .github/workflows úložišti.

  2. Aktualizujte hodnotu AZURE_RESOURCE_GROUP názvu vaší skupiny prostředků.

  3. Nastavte vstup pro region akce nasazení ARM do vaší oblasti.

    1. Otevřete templates/azuredeploy.resourcegroup.parameters.json a aktualizujte rgLocation vlastnost do vaší oblasti.
  4. Přejděte na Akce a vyberte Spustit pracovní postup.

    Spuštěním pracovního postupu GitHub Actions přidejte prostředky.

  5. 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í.

    Úspěšné spuštění prostředků.

  6. Po vytvoření prostředků přejděte na Akce, vyberte Vytvořit prostředky Azure a zakažte pracovní postup.

    Zakažte pracovní postup Vytvoření prostředků Azure.

Vytvoření tajného kódu profilu publikování

  1. Na webu Azure Portal otevřete novou přípravnou službu App Service (Slot) vytvořenou Create Azure Resources pomocí pracovního postupu.

  2. Vyberte Získat profil publikování.

  3. Otevřete soubor profilu publikování v textovém editoru a zkopírujte jeho obsah.

  4. 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í:

  1. workflow.yaml Otevřete soubor v .github/workflows úložišti.

  2. Ověřte, že proměnné prostředí pro AZURE_RESOURCE_GROUP, AZURE_WEBAPP_NAMESQLSERVER_NAMEa DATABASE_NAME odpovídají proměnným v infraworkflow.yml.

  3. 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.

Další kroky