Partilhar via


Guia de início rápido: usar ações do GitHub para se conectar ao Banco de Dados do Azure para MySQL - Servidor flexível

Comece a usar as Ações do GitHub usando um fluxo de trabalho para implantar atualizações de banco de dados no Banco de Dados do Azure para o servidor flexível MySQL.

Pré-requisitos

Precisará:

Visão geral do arquivo de fluxo de trabalho

Um fluxo de trabalho de Ações do GitHub é definido por um arquivo YAML (.yml) no caminho do /.github/workflows/ repositório. Esta definição contém as várias etapas e parâmetros que compõem o fluxo de trabalho.

O ficheiro tem duas secções:

Section Tarefas
Autenticação 1. Gere credenciais de implantação.
Implementar 1. Implante o banco de dados.

Gerar credenciais de implantação

Para usar a ação Azure Login com OIDC, é necessário configurar uma credencial de identidade federada num aplicativo Microsoft Entra ou numa identidade gerida atribuída pelo utilizador.

Opção 1: Aplicação Microsoft Entra

Opção 2: Identidade gerenciada atribuída pelo usuário

Copie a cadeia de conexão MySQL

No portal do Azure, vá para a instância flexível do servidor do Banco de Dados do Azure para MySQL e abra as cadeias de conexão de configurações Copie a cadeia de ligação de ADO.NET. Substitua os valores de espaço reservado para your_database e your_password.

Importante

  • Para o Banco de Dados do Azure para servidor único MySQL, use Uid=adminusername@servername. Observe que o @servername é obrigatório.
  • Para o Banco de Dados do Azure para servidor flexível MySQL, use Uid=adminusername sem o @servername.

Você usará a cadeia de conexão como um segredo do GitHub.

Configurar segredos do GitHub

Você precisa fornecer o ID do cliente, o ID do diretório (locatário) e o ID da assinatura da sua aplicação 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. Selecione Segredos de Segurança > e Ações de variáveis>.

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

  3. Selecione Novo segredo do repositório.

    Observação

    Para aumentar a segurança do fluxo de trabalho em repositórios públicos, utilize segredos de ambiente em vez de segredos de repositório. Se o ambiente exigir aprovação, um trabalho não poderá acessar segredos de ambiente até que um dos revisores necessários o aprove.

  4. Crie segredos para AZURE_CLIENT_ID, AZURE_TENANT_IDe AZURE_SUBSCRIPTION_ID. Copie estes valores do seu aplicativo Microsoft Entra ou da identidade gerenciada atribuída pelo usuário para seus segredos do GitHub:

    Segredo do GitHub Aplicativo Microsoft Entra ou identidade gerenciada atribuída pelo usuário
    AZURE_CLIENT_ID ID do Cliente
    AZURE_SUBSCRIPTION_ID ID de Subscrição
    AZURE_TENANT_ID ID do Diretório (inquilino)

    Observação

    Por motivos de segurança, recomendamos o uso de Segredos do GitHub em vez de passar valores diretamente para o fluxo de trabalho.

Adicione o seu fluxo de trabalho

  1. Vá para Ações para seu repositório GitHub.

  2. Selecione Configurar seu fluxo de trabalho você mesmo.

  3. Exclua tudo após a on: seção do seu arquivo de fluxo de trabalho. Por exemplo, o fluxo de trabalho restante pode ter esta aparência.

    name: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. Renomeie seu fluxo de trabalho MySQL for GitHub Actions e adicione as ações de check-out e login. Essas ações verificam o código do seu site e são autenticadas com o Azure usando o segredo do AZURE_CREDENTIALS GitHub que você criou anteriormente.

    name: MySQL for GitHub Actions
    
    on:
        push:
            branches: [ main ]
        pull_request:
            branches: [ main ]
    
    jobs:
        build:
            runs-on: windows-latest
            steps:
            - uses: actions/checkout@v1
            - uses: azure/login@v2
                with:
                  client-id: ${{ secrets.AZURE_CLIENT_ID }}
                  tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                  subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    
  5. Use a ação Implantar do Azure MySQL para se conectar à sua instância do MySQL. Substitua MYSQL_SERVER_NAME pelo nome do servidor. Você deve ter um arquivo de dados MySQL nomeado data.sql no nível raiz do seu repositório.

    - uses: azure/mysql@v1
      with:
        server-name: MYSQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }}
        sql-file: './data.sql'
    
  6. Conclua seu fluxo de trabalho adicionando uma ação para sair do Azure. Aqui está o fluxo de trabalho concluído. O arquivo aparece na .github/workflows pasta do repositório.

    name: MySQL for GitHub Actions
    
    on:
      push:
          branches: [ main ]
      pull_request:
          branches: [ main ]
    jobs:
        build:
            runs-on: windows-latest
            steps:
              - uses: actions/checkout@v1
              - uses: azure/login@v2
                with:
                  client-id: ${{ secrets.AZURE_CLIENT_ID }}
                  tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                  subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
              - uses: azure/mysql@v1
                with:
                  server-name: MYSQL_SERVER_NAME
                  connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }}
                  sql-file: './data.sql'
    
                # Azure logout
              - name: logout
                run: |
                  az logout
    

Revisar sua implantação

  1. Vá para Ações para seu repositório GitHub.

  2. Abra o primeiro resultado para ver os logs detalhados da execução do seu fluxo de trabalho.

    Captura de tela do log de ações do GitHub executado.

Clean up resources (Limpar recursos)

Quando o banco de dados e o repositório do Servidor Flexível do Banco de Dados do Azure para MySQL não forem mais necessários, limpe os recursos implantados excluindo o grupo de recursos e o repositório do GitHub.

Próximo passo