Utilize ações do GitHub para ligar à Base de Dados Azure SQLUse GitHub Actions to connect to Azure SQL Database

Inicie com as ações do GitHub utilizando um fluxo de trabalho para implementar atualizações de bases de dados para a Base de Dados Azure SQL.Get started with GitHub Actions by using a workflow to deploy database updates to Azure SQL Database.

Pré-requisitosPrerequisites

Vai precisar de:You will need:

Visão geral do ficheiro do fluxo de trabalhoWorkflow file overview

Um fluxo de trabalho de GitHub Actions é definido por um ficheiro YAML (.yml) no caminho do /.github/workflows/ seu repositório.A GitHub Actions workflow is defined by a YAML (.yml) file in the /.github/workflows/ path in your repository. Esta definição contém os vários passos e parâmetros que compõem o fluxo de trabalho.This definition contains the various steps and parameters that make up the workflow.

O ficheiro tem duas secções:The file has two sections:

SectionSection TarefasTasks
AutenticaçãoAuthentication 1. Defina um diretor de serviço.1. Define a service principal.
2. Criar um segredo do GitHub.2. Create a GitHub secret.
ImplementarDeploy 1. Implementar a base de dados.1. Deploy the database.

Gerar credenciais de implantaçãoGenerate deployment credentials

Pode criar um principal de serviço com o comando ad sp create-for-rbac no Azure CLI.You can create a service principal with the az ad sp create-for-rbac command in the Azure CLI. Executar este comando com Azure Cloud Shell no portal Azure ou selecionando o botão Try it.Run this command with Azure Cloud Shell in the Azure portal or by selecting the Try it button.

Substitua os espaços reservados server-name pelo nome do seu servidor SQL alojado no Azure.Replace the placeholders server-name with the name of your SQL server hosted on Azure. Substitua o subscription-id iD e resource-group o grupo de recursos de subscrição ligados ao seu servidor SQL.Replace the subscription-id and resource-group with the subscription ID and resource group connected to your SQL server.

   az ad sp create-for-rbac --name {server-name} --role contributor \
                            --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \
                            --sdk-auth

A saída é um objeto JSON com as credenciais de atribuição de funções que fornecem acesso à sua base de dados semelhante a este exemplo.The output is a JSON object with the role assignment credentials that provide access to your database similar to this example. Copie o seu objeto JSON de saída para mais tarde.Copy your output JSON object for later.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

Importante

É sempre uma boa prática conceder o mínimo acesso.It is always a good practice to grant minimum access. O âmbito no exemplo anterior está limitado ao servidor específico e não a todo o grupo de recursos.The scope in the previous example is limited to the specific server and not the entire resource group.

Copie a cadeia de ligação SQLCopy the SQL connection string

No portal Azure, aceda à sua Base de Dados Azure SQL e abra as > cordas de ligação de definições .In the Azure portal, go to your Azure SQL Database and open Settings > Connection strings. Copie a cadeia de ligação de ADO.NET.Copy the ADO.NET connection string. Substitua os valores de espaço reservado your_database para e your_password .Replace the placeholder values for your_database and your_password. A cadeia de ligação será semelhante a esta saída.The connection string will look similar to this output.

    Server=tcp:my-sql-server.database.windows.net,1433;Initial Catalog={your-database};Persist Security Info=False;User ID={admin-name};Password={your-password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

Vais usar a cadeia de ligação como segredo do GitHub.You'll use the connection string as a GitHub secret.

Configure os segredos do GitHubConfigure the GitHub secrets

  1. No GitHub,navegue no seu repositório.In GitHub, browse your repository.

  2. Selecione Definições > Segredos > Novo segredo.Select Settings > Secrets > New secret.

  3. Cole toda a saída JSON do comando Azure CLI para o campo de valor do segredo.Paste the entire JSON output from the Azure CLI command into the secret's value field. Dê o nome ao AZURE_CREDENTIALS segredo.Give the secret the name AZURE_CREDENTIALS.

    Quando configurar o ficheiro de fluxo de trabalho mais tarde, utilize o segredo para a entrada creds da ação Azure Login.When you configure the workflow file later, you use the secret for the input creds of the Azure Login action. Por exemplo:For example:

    - uses: azure/login@v1
    with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}
    
  4. Selecione novo segredo novamente.Select New secret again.

  5. Cole o valor da cadeia de ligação no campo de valor do segredo.Paste the connection string value into the secret's value field. Dê o nome ao AZURE_SQL_CONNECTION_STRING segredo.Give the secret the name AZURE_SQL_CONNECTION_STRING.

Adicione o seu fluxo de trabalhoAdd your workflow

  1. Vá às ações para o seu repositório GitHub.Go to Actions for your GitHub repository.

  2. Selecione Configurar o seu fluxo de trabalho por si mesmo.Select Set up your workflow yourself.

  3. Elimine tudo após a on: secção do seu ficheiro de fluxo de trabalho.Delete everything after the on: section of your workflow file. Por exemplo, o seu fluxo de trabalho restante pode ser assim.For example, your remaining workflow may look like this.

    name: CI
    
    on:
    push:
        branches: [ master ]
    pull_request:
        branches: [ master ]
    
  4. Mude o nome do seu fluxo de trabalho SQL for GitHub Actions e adicione as ações de check-out e login.Rename your workflow SQL for GitHub Actions and add the checkout and login actions. Estas ações irão verificar o código do seu site e autenticar-se com o Azure usando o AZURE_CREDENTIALS segredo GitHub que criou anteriormente.These actions will checkout your site code and authenticate with Azure using the AZURE_CREDENTIALS GitHub secret you created earlier.

    name: SQL for GitHub Actions
    
    on:
    push:
        branches: [ master ]
    pull_request:
        branches: [ master ]
    
    jobs:
    build:
        runs-on: windows-latest
        steps:
        - uses: actions/checkout@v1
        - uses: azure/login@v1
        with:
            creds: ${{ secrets.AZURE_CREDENTIALS }}
    
  5. Utilize a ação Azure SQL Implementar para ligar à sua instância SQL.Use the Azure SQL Deploy action to connect to your SQL instance. SQL_SERVER_NAMESubstitua-o pelo nome do seu servidor.Replace SQL_SERVER_NAME with the name of your server. Deve ter um pacote dacpac Database.dacpac ao nível da raiz do seu repositório.You should have a dacpac package (Database.dacpac) at the root level of your repository.

    - uses: azure/sql-action@v1
      with:
        server-name: SQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
        sql-file: './Database.dacpac'
    
  6. Complete o seu fluxo de trabalho adicionando uma ação ao logout da Azure.Complete your workflow by adding an action to logout of Azure. Aqui está o fluxo de trabalho completo.Here is the completed workflow. O ficheiro aparecerá na .github/workflows pasta do seu repositório.The file will appear in the .github/workflows folder of your repository.

    name: SQL for GitHub Actions
    
    on:
    push:
        branches: [ master ]
    pull_request:
        branches: [ master ]
    
    
    jobs:
    build:
        runs-on: windows-latest
        steps:
        - uses: actions/checkout@v1
        - uses: azure/login@v1
        with:
            creds: ${{ secrets.AZURE_CREDENTIALS }}
    
    - uses: azure/sql-action@v1
      with:
        server-name: SQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
        sql-file: './Database.dacpac'
    
        # Azure logout 
    - name: logout
      run: |
         az logout
    

Reveja a sua implementaçãoReview your deployment

  1. Vá às ações para o seu repositório GitHub.Go to Actions for your GitHub repository.

  2. Abra o primeiro resultado para ver os registos detalhados do funcionaamento do seu fluxo de trabalho.Open the first result to see detailed logs of your workflow's run.

    Log of GitHub actions run

Limpar os recursosClean up resources

Quando a sua base de dados EST E o repositório Azure já não forem necessários, limpe os recursos que implementou eliminando o grupo de recursos e o seu repositório GitHub.When your Azure SQL database and repository are no longer needed, clean up the resources you deployed by deleting the resource group and your GitHub repository.

Passos seguintesNext steps