GitHub Actions gebruiken om verbinding te maken met Azure SQL DatabaseUse GitHub Actions to connect to Azure SQL Database

Aan de slag met GitHub Actions met behulp van een werkstroom voor het implementeren van database-updates voor Azure SQL Database.Get started with GitHub Actions by using a workflow to deploy database updates to Azure SQL Database.

VereistenPrerequisites

U hebt het volgende nodig:You will need:

Overzicht van werkstroom bestandWorkflow file overview

Een GitHub Actions-werkstroom wordt gedefinieerd door een YAML-bestand (.yml) in het pad /.github/workflows/ in uw opslagplaats.A GitHub Actions workflow is defined by a YAML (.yml) file in the /.github/workflows/ path in your repository. Deze definitie bevat de verschillende stappen en parameters die deel uitmaken van de werkstroom.This definition contains the various steps and parameters that make up the workflow.

Het bestand heeft twee secties:The file has two sections:

SectieSection TakenTasks
VerificatieAuthentication 1. Definieer een service-principal.1. Define a service principal.
2. Maak een GitHub-opslagplaats.2. Create a GitHub secret.
ImplementerenDeploy 1. Implementeer de database.1. Deploy the database.

Genereer implementatiereferentiesGenerate deployment credentials

U kunt een service-principal maken met de opdracht az ad sp create-for-rbac in de Azure CLI.You can create a service principal with the az ad sp create-for-rbac command in the Azure CLI. Voer deze opdracht uit met Azure Cloud Shell in de Azure Portal of door de knop Uitproberen te selecteren.Run this command with Azure Cloud Shell in the Azure portal or by selecting the Try it button.

Vervang de tijdelijke aanduidingen server-name door de naam van uw SQL-server die wordt gehost op Azure.Replace the placeholders server-name with the name of your SQL server hosted on Azure. Vervang de subscription-id en resource-group door de abonnements-ID en de resourcegroep die zijn verbonden met uw SQL-server.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

De uitvoer is een JSON-object met de roltoewijzingsreferenties die toegang bieden tot uw database, vergelijkbaar met dit voorbeeld.The output is a JSON object with the role assignment credentials that provide access to your database similar to this example. Kopieer uw uitvoer van dit JSON-object voor later.Copy your output JSON object for later.

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

Belangrijk

Het is altijd een goed idee om minimale toegang te verlenen.It is always a good practice to grant minimum access. Het bereik in het vorige voorbeeld is beperkt tot de specifieke server en niet de hele resourcegroep.The scope in the previous example is limited to the specific server and not the entire resource group.

SQL-verbindingsreeks kopiërenCopy the SQL connection string

Ga in het Azure Portal naar uw Azure SQL Database en open Instellingen > Verbindingsreeksen.In the Azure portal, go to your Azure SQL Database and open Settings > Connection strings. Kopieer de verbindingsreeks voor ADO.NET.Copy the ADO.NET connection string. Vervang de plaatsaanduidingswaarden door your_database en your_password.Replace the placeholder values for your_database and your_password. De verbindingsreeks ziet er ongeveer uit als deze uitvoer.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;

U gebruikt de verbindingsreeks als een GitHub-geheim.You'll use the connection string as a GitHub secret.

De GitHub-geheimen configurerenConfigure the GitHub secrets

  1. In GitHub, bladert u in uw opslagplaats.In GitHub, browse your repository.

  2. Selecteer Instellingen > Geheimen > Nieuwe geheimen.Select Settings > Secrets > New secret.

  3. Plak de volledige JSON-uitvoer van de Azure CLI-opdracht in het waardeveld van het geheim.Paste the entire JSON output from the Azure CLI command into the secret's value field. Geef het geheim de naam AZURE_CREDENTIALS.Give the secret the name AZURE_CREDENTIALS.

    Wanneer u het werkstroombestand later configureert, gebruikt u het geheim voor de invoer creds van de Azure-aanmeldingsactie.When you configure the workflow file later, you use the secret for the input creds of the Azure Login action. Bijvoorbeeld:For example:

    - uses: azure/login@v1
    with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}
    
  4. Selecteer Nieuwe geheim opnieuw.Select New secret again.

  5. Plak de verbindingsreekswaarde in het waardeveld van het geheim.Paste the connection string value into the secret's value field. Geef het geheim de naam AZURE_SQL_CONNECTION_STRING.Give the secret the name AZURE_SQL_CONNECTION_STRING.

Voeg uw werkstroom toeAdd your workflow

  1. Ga naar Acties voor uw GitHub-opslagplaats.Go to Actions for your GitHub repository.

  2. Selecteer Uw werkstroom zelf instellen.Select Set up your workflow yourself.

  3. Verwijder alles na de sectie on: van uw werkstroombestand.Delete everything after the on: section of your workflow file. Uw resterende werkstroom kan er bijvoorbeeld als volgt uitzien.For example, your remaining workflow may look like this.

    name: CI
    
    on:
    push:
        branches: [ master ]
    pull_request:
        branches: [ master ]
    
  4. Wijzig de naam van uw werkstroom SQL for GitHub Actions en voeg de acties voor uitchecken en aanmelden toe.Rename your workflow SQL for GitHub Actions and add the checkout and login actions. Met deze acties wordt uw sitecode uitgecheckt en geverifieerd met Azure met behulp van het AZURE_CREDENTIALS GitHub-geheim dat u eerder hebt gemaakt.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. Gebruik de Azure SQL-implementatie-actie om verbinding te maken met uw SQL-exemplaar.Use the Azure SQL Deploy action to connect to your SQL instance. Vervang SQL_SERVER_NAME door de naam van uw server.Replace SQL_SERVER_NAME with the name of your server. U moet een dacpac-pakket (Database.dacpac) hebben op het niveau van de hoofdmap van uw opslagplaats.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. Voltooi uw werkstroom door een actie toe te voegen aan de afmelding van Azure.Complete your workflow by adding an action to logout of Azure. Dit is de voltooide werkstroom.Here is the completed workflow. Het bestand wordt weergegeven in de map .github/workflows van uw opslagplaats.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
    

Beoordeel uw implementatieReview your deployment

  1. Ga naar Acties voor uw GitHub-opslagplaats.Go to Actions for your GitHub repository.

  2. Open het eerste resultaat om gedetailleerde logboeken van de uitvoering van de werkstroom weer te geven.Open the first result to see detailed logs of your workflow's run.

    Logboek van uitgevoerde GitHub-acties

Resources opschonenClean up resources

Wanneer uw Azure SQL-database en -opslagplaats niet meer nodig zijn, moet u de resources opschonen die u hebt geïmplementeerd door de resourcegroep en de GitHub-opslagplaats te verwijderen.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.

Volgende stappenNext steps