Compartilhar via


Início rápido: Usar o GitHub Actions para se conectar ao Banco de Dados do Azure para MySQL — Servidor Flexível

Comece a usar o GitHub Actions usando um fluxo de trabalho para implantar atualizações de banco de dados no Banco de Dados do Azure para MySQL — Servidor Flexível.

Pré-requisitos

Você precisará de:

Visão geral do arquivo do fluxo de trabalho

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

O arquivo tem duas seções:

Seção Tarefas
Autenticação 1. Gerar as credenciais de implantação.
Implantar 1. Implantar o banco de dados.

Gerar as credenciais de implantação

Para usar a ação de Logon do Azure com o OIDC, você precisa configurar uma credencial de identidade federada em um aplicativo do Microsoft Entra ou uma identidade gerenciada atribuída pelo usuário.

Opção 1: Aplicativo Microsoft Entra

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

Copiar a cadeia de conexão de MySQL

No portal do Azure, acesse a instância do Banco de Dados do Azure para MySQL — Servidor Flexível e abra Configurações>Cadeias de conexão. Copie a cadeia de conexão ADO.NET. Substitua os valores de espaço reservado por your_database e your_password.

Importante

  • Para o Banco de Dados do Azure para MySQL — Servidor Único, use Uid=adminusername@servername. Observe que @servername é obrigatório.
  • Para o servidor flexível do Banco de Dados MySQL do Azure, 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 a ID do cliente, a ID do diretório (locatário) e a ID da assinatura do seu 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, acesse seu repositório.

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

    Captura de tela mostrando a adição de um segredo

  3. Selecione Novo segredo de repositório.

    Observação

    Para aprimorar a segurança do fluxo de trabalho em repositórios públicos, use segredos de ambiente em vez de segredos do 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_ID e AZURE_SUBSCRIPTION_ID. Copie esses valores do 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 da assinatura
    AZURE_TENANT_ID ID do diretório (locatário)

    Observação

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

Adicionar seu fluxo de trabalho

  1. Acesse Ações para seu repositório do GitHub.

  2. Selecione Configurar seu fluxo de trabalho por conta própria.

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

    name: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. Renomeie o fluxo de trabalho MySQL for GitHub Actions e adicione as ações de check-out e logon. Essas ações farão o check-out do código do site e a autenticação com o Azure usando o segredo do GitHub AZURE_CREDENTIALS criado 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 MySQL do Azure para se conectar à sua instância do MySQL. Substitua MYSQL_SERVER_NAME pelo nome do seu servidor. Você deve ter um arquivo de dados do MySQL chamado 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 o fluxo de trabalho adicionando uma ação para fazer logoff do Azure. Este é o fluxo de trabalho concluído. O arquivo será exibido na pasta .github/workflows do seu 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
    

Examinar sua implantação

  1. Acesse Ações para seu repositório do GitHub.

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

    Captura de tela do Log do GitHub Actions executado.

Limpar os 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 GitHub.

Próxima etapa