Compartilhar via


Início Rápido: Usar o GitHub Actions para se conectar ao Banco de Dados do Azure para PostgreSQL

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

Pré-requisitos

Você precisa 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 Tasks
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 login do Azure com o OIDC, você precisa configurar uma credencial de identidade federada em um aplicativo 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 do Banco de Dados do Azure para PostgreSQL

No portal do Azure, acesse a instância do servidor flexível do Banco de Dados do Azure para PostgreSQL e, no menu de recursos, em Configurações, selecione Conectar. Nessa página, use a caixa de combinação Nome do banco de dados para selecionar o nome do banco de dados ao qual você deseja se conectar. Expanda a seção Conectar-se por meio do aplicativo, copie a cadeia de conexão ADO.NET e substitua o valor do espaço reservado {your_password} pela senha real. A cadeia de conexão é semelhante ao exemplo a seguir.

Server={servername.postgres.database.azure.com};Database={your_database};Port=5432;User Id={adminusername};Password={your_password};Ssl Mode=Require;

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

Configurar os 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 aumentar a segurança do fluxo de trabalho em repositórios públicos, use segredos do 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, o fluxo de trabalho restante pode ter a aparência a seguir.

    name: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. Renomeie seu fluxo de trabalho PostgreSQL for GitHub Actions e adicione as ações de check-out e entrada. Essas ações farão o check-out do código do site e a autenticação com o Azure usando o(s) segredo(s) do GitHub criado(s) anteriormente.

    name: PostgreSQL for GitHub Actions
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
    jobs:
    build:
        runs-on: ubuntu-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 PostgreSQL do Azure para se conectar à sua instância do Banco de Dados do Azure para PostgreSQL com Servidor Flexível. Substitua POSTGRESQL_SERVER_NAME pelo nome do seu servidor. Você deve ter um arquivo de dados do Banco de Dados do Azure para PostgreSQL nomeado data.sql no nível raiz do repositório.

     - uses: azure/postgresql@v1
       with:
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        server-name: POSTGRESQL_SERVER_NAME
        plsql-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: PostgreSQL for GitHub Actions
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
    
    jobs:
    build:
        runs-on: ubuntu-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/postgresql@v1
      with:
        server-name: POSTGRESQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        plsql-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.

    Log das execuções do GitHub Actions.

Limpar os recursos

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