Tutorial: Usar ações do GitHub para implantar no Serviço de Aplicativo e conectar-se a um banco de dados

Saiba como configurar um fluxo de trabalho de Ações do GitHub para implantar um aplicativo ASP.NET Core com um back-end do Banco de Dados SQL do Azure. Quando terminar, você terá um aplicativo ASP.NET em execução no Azure e conectado ao Banco de Dados SQL. Primeiro, você usará um modelo ARM para criar recursos.

Este tutorial não usa contêineres. Se você quiser implantar em um aplicativo ASP.NET Core em contêiner, consulte Usar ações do GitHub para implantar no Serviço de Aplicativo para contêineres e conectar-se a um banco de dados.

Neste tutorial, irá aprender a:

  • Usar um fluxo de trabalho de Ações do GitHub para adicionar recursos ao Azure com um modelo do Azure Resource Manager (modelo ARM)
  • Usar um fluxo de trabalho de Ações do GitHub para criar um aplicativo ASP.NET Core

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

Para concluir este tutorial, você precisará:

Transferir o exemplo

Bifurque o projeto de exemplo no repositório de Exemplos do Azure.

https://github.com/Azure-Samples/dotnetcore-sqldb-ghactions

Criar o grupo de recursos

Abra o Azure Cloud Shell em https://shell.azure.com. Você pode usar alternadamente a CLI do Azure se a tiver instalado localmente. (Para obter mais informações sobre o Cloud Shell, consulte o Visão geral do Cloud Shell.)

az group create --name {resource-group-name} --location {resource-group-location}

Gerar credenciais de implantação

OpenID Connect é um método de autenticação que usa tokens de curta duração. Configurar o OpenID Connect com o GitHub Actions é um processo mais complexo que oferece segurança reforçada.

  1. Se você não tiver um aplicativo existente, registre um novo aplicativo Microsoft Entra e uma entidade de serviço que possa acessar recursos.

    az ad app create --display-name myApp
    

    Este comando produzirá JSON com um appId que é o seu client-id. O objectId é APPLICATION-OBJECT-ID e será usado para criar credenciais federadas com chamadas de API do Graph. Salve o valor para usar como o segredo do AZURE_CLIENT_ID GitHub mais tarde.

  2. Crie uma entidade de serviço. Substitua o $appID pelo appId da sua saída JSON. Este comando gera saída JSON com um diferente objectId será usado na próxima etapa. O novo objectId é o assignee-object-id.

    Este comando gera saída JSON com um diferente objectId e será usado na próxima etapa. O novo objectId é o assignee-object-id.

    Copie o appOwnerTenantId para usar como um segredo do GitHub para AZURE_TENANT_ID mais tarde.

     az ad sp create --id $appId
    
  3. Crie uma nova atribuição de função por assinatura e objeto. Por padrão, a atribuição de função será vinculada à sua assinatura padrão. Substitua $subscriptionId pela ID da assinatura, $resourceGroupName pelo nome do grupo de recursos e $assigneeObjectId pelo gerado assignee-object-id (a ID do objeto principal de serviço recém-criada).

    az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id  $assigneeObjectId --assignee-principal-type ServicePrincipal --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName
    
  4. Execute o seguinte comando para criar uma nova credencial de identidade federada para seu aplicativo Microsoft Entra.

    • Substitua APPLICATION-OBJECT-ID pelo objectId (gerado durante a criação do aplicativo) para seu aplicativo Microsoft Entra.
    • Defina um valor para CREDENTIAL-NAME referenciar mais tarde.
    • Defina o subjectarquivo . O valor disso é definido pelo GitHub dependendo do seu fluxo de trabalho:
      • Trabalhos em seu ambiente de ações do GitHub: repo:< Organization/Repository >:environment:< Name >
      • Para Trabalhos não vinculados a um ambiente, inclua o caminho ref para ramificação/tag com base no caminho ref usado para acionar o fluxo de trabalho: repo:< Organization/Repository >:ref:< ref path>. Por exemplo, repo:n-username/ node_express:ref:refs/heads/my-branch ou repo:n-username/ node_express:ref:refs/tags/my-tag.
      • Para fluxos de trabalho acionados por um evento pull request: 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"
        ]
    }
    

Para saber como criar um aplicativo de diretório ativo, entidade de serviço e credenciais federadas no portal do Azure, consulte Conectar o GitHub e o Azure.

Configurar o segredo do GitHub para autenticação

Você precisa fornecer a ID do cliente, a ID do locatário e a ID da assinatura do aplicativo para a ação de login. Esses valores podem ser fornecidos diretamente no fluxo de trabalho ou podem ser armazenados em segredos do GitHub e referenciados em seu fluxo de trabalho. Salvar os valores como segredos do GitHub é a opção mais segura.

  1. No GitHub, vá para o seu repositório.

  2. Vá para Configurações no menu de navegação.

  3. Selecione Segredos de Segurança > e Ações de variáveis>.

    Captura de ecrã a mostrar a adição de um segredo

  4. Selecione Novo segredo do repositório.

  5. Crie segredos para AZURE_CLIENT_ID, AZURE_TENANT_IDe AZURE_SUBSCRIPTION_ID. Use estes valores do seu aplicativo Microsoft Entra para seus segredos do GitHub:

    Segredo do GitHub Aplicação Microsoft Entra
    AZURE_CLIENT_ID ID da aplicação (cliente)
    AZURE_TENANT_ID ID do Diretório (inquilino)
    AZURE_SUBSCRIPTION_ID ID de Subscrição
  6. Salve cada segredo selecionando Adicionar segredo.

Adicione segredos do GitHub para sua compilação

  1. Crie dois novos segredos em seu repositório GitHub para SQLADMIN_PASS e SQLADMIN_LOGIN. Certifique-se de escolher uma senha complexa, caso contrário, a etapa de criação para o servidor de banco de dados SQL falhará. Você não poderá acessar essa senha novamente, então salve-a separadamente.

  2. Crie um segredo para sua ID de AZURE_SUBSCRIPTION_ID assinatura do Azure. Se você não souber sua ID de assinatura, use este comando no Shell do Azure para localizá-la. Copie o SubscriptionId valor na coluna.

    az account list -o table
    

Criar recursos do Azure

O fluxo de trabalho de criação de recursos do Azure executa um modelo ARM para implantar recursos no Azure. O fluxo de trabalho:

  • Faz check-out do código-fonte com a ação Checkout.
  • Efetua logon no Azure com a ação Logon do Azure e reúne informações de ambiente e recursos do Azure.
  • Implanta recursos com a ação Implantar do Azure Resource Manager.

Para executar o fluxo de trabalho de criação de recursos do Azure:

  1. Abra o infraworkflow.yml arquivo em .github/workflows seu repositório.

  2. Atualize o valor de para o nome do seu grupo de AZURE_RESOURCE_GROUP recursos.

  3. Defina a entrada para region as ações do ARM Deploy na sua região.

    1. Abra templates/azuredeploy.resourcegroup.parameters.json e atualize a propriedade para a rgLocation sua região.
  4. Vá para Ações e selecione Executar fluxo de trabalho.

    Execute o fluxo de trabalho Ações do GitHub para adicionar recursos.

  5. Verifique se sua ação foi executada com êxito verificando se há uma marca de seleção verde na página Ações .

    Execução bem-sucedida de criar recursos.

  6. Depois de criar seus recursos, vá para Ações, selecione Criar Recursos do Azure, desabilite o fluxo de trabalho.

    Desabilite o fluxo de trabalho Criar Recursos do Azure.

Criar um segredo de perfil de publicação

  1. No portal do Azure, abra seu novo Serviço de Aplicativo de preparo (Slot) criado com o Create Azure Resources fluxo de trabalho.

  2. Selecione Obter perfil de publicação.

  3. Abra o arquivo de perfil de publicação em um editor de texto e copie seu conteúdo.

  4. Crie um novo segredo do GitHub para AZURE_WEBAPP_PUBLISH_PROFILEo .

Crie e implante seu aplicativo

Para executar o fluxo de trabalho de compilação e implantação:

  1. Abra o workflow.yaml arquivo no .github/workflows repositório.

  2. Verifique se as variáveis de ambiente para AZURE_RESOURCE_GROUP, AZURE_WEBAPP_NAME, SQLSERVER_NAMEe DATABASE_NAME correspondem às variáveis em infraworkflow.yml.

  3. Verifique se seu aplicativo foi implantado visitando a URL na saída do slot de produção Trocar para produção. Você verá um aplicativo de exemplo, My TodoList App.

Clean up resources (Limpar recursos)

Se você não precisar mais do seu projeto de exemplo, exclua seu grupo de recursos no portal do Azure e exclua seu repositório no GitHub.

Próximos passos