Herstellen einer Verbindung mit Azure SQL-Datenbank mithilfe von GitHub Actions

Verwenden Sie als Einstieg in GitHub Actions einen Workflow zum Bereitstellen von Datenbankupdates für Azure SQL-Datenbank.

Voraussetzungen

Sie benötigen Folgendes:

Übersicht über die Workflowdatei

Ein GitHub Actions-Workflow wird durch eine YAML-Datei (.yml) im Pfad /.github/workflows/ in Ihrem Repository definiert. Diese Definition enthält die verschiedenen Schritte und Parameter, die den Workflow bilden.

Die Datei besteht aus zwei Abschnitten:

Section Aufgaben
Authentifizierung 1. Definieren eines Dienstprinzipals.
2. Erstellen eines GitHub-Geheimnisses.
Bereitstellen 1. Bereitstellen der Datenbank

Generieren von Anmeldeinformationen für die Bereitstellung

Sie können mit dem Befehl az ad sp create-for-rbac in der Azure CLI einen Dienstprinzipal erstellen. Führen Sie diesen Befehl mit Azure Cloud Shell im Azure-Portal oder durch Auswählen der Schaltfläche Ausprobieren aus.

Ersetzen Sie die Platzhalter server-name durch den Namen Ihrer in Azure gehosteten SQL Server-Instanz. Ersetzen Sie subscription-id und resource-group durch die Abonnement-ID und die Ressourcengruppe, die mit Ihrer SQL Server-Instanz verbunden sind.

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

Die Ausgabe ist ein JSON-Objekt mit den Anmeldeinformationen für die Rollenzuweisung, die ähnlich wie in diesem Beispiel Zugriff auf Ihre Datenbank gewähren. Kopieren Sie das JSON-Ausgabeobjekt zur späteren Verwendung.

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

Wichtig

Es ist immer empfehlenswert, den minimalen Zugriff zu gewähren. Der Bereich im vorherigen Beispiel ist auf den spezifischen Server beschränkt und umfasst nicht die gesamte Ressourcengruppe.

Kopieren der SQL-Verbindungszeichenfolge

Wechseln Sie im Azure-Portal zur Azure SQL-Datenbank, und öffnen Sie Einstellungen > Verbindungszeichenfolgen. Kopieren Sie die ADO.NET-Verbindungszeichenfolge. Ersetzen Sie die Platzhalterwerte für your_database und your_password. Die Verbindungszeichenfolge ähnelt der folgenden Ausgabe.

    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;

Sie verwenden die Verbindungszeichenfolge als GitHub-Geheimnis.

Konfigurieren der GitHub-Geheimnisse

  1. Suchen Sie auf GitHub nach Ihrem Repository.

  2. Wählen Sie Settings > Secrets > New secret (Einstellungen > Geheimnisse > Neues Geheimnis) aus.

  3. Fügen Sie die gesamte JSON-Ausgabe aus dem Azure CLI-Befehl in das Wertfeld des Geheimnisses ein. Geben Sie dem Geheimnis den Namen AZURE_CREDENTIALS.

    Wenn Sie die Workflowdatei später konfigurieren, verwenden Sie das Geheimnis für die Eingabe creds der Azure-Anmeldeaktion. Beispiel:

    - uses: azure/login@v1
    with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}
    
  4. Wählen Sie erneut New secret (Neues Geheimnis) aus.

  5. Fügen Sie den Wert der Verbindungszeichenfolge in das Wertfeld des Geheimnisses ein. Geben Sie dem Geheimnis den Namen AZURE_SQL_CONNECTION_STRING.

Hinzufügen des Workflows

  1. Navigieren Sie für Ihr GitHub-Repository zu Actions (Aktionen).

  2. Wählen Sie Set up your workflow yourself (Workflow selbst einrichten) aus.

  3. Löschen Sie alles nach dem Abschnitt on: Ihrer Workflowdatei. Der verbleibende Workflow könnte beispielsweise wie folgt aussehen:

    name: CI
    
    on:
    push:
        branches: [ master ]
    pull_request:
        branches: [ master ]
    
  4. Benennen Sie den Workflow in SQL for GitHub Actions um, und fügen Sie die Aktionen zum Auschecken und Anmelden hinzu. Durch diese Aktionen wird Ihr Websitecode ausgecheckt, und Sie werden mithilfe des zuvor erstellten GitHub-Geheimnisses AZURE_CREDENTIALS bei Azure authentifiziert.

    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. Verwenden Sie die Aktion für die Azure SQL-Bereitstellung, um eine Verbindung mit Ihrer SQL-Instanz herzustellen. Ersetzen Sie SQL_SERVER_NAME durch den Namen Ihres Servers. Sie sollten über ein DACPAC-Paket (Database.dacpac) auf der Stammebene Ihres Repositorys verfügen.

    - uses: azure/sql-action@v1
      with:
        server-name: SQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
        dacpac-package: './Database.dacpac'
    
  6. Vervollständigen Sie Ihren Workflow, indem Sie eine Aktion zum Abmelden von Azure hinzufügen. Hier sehen Sie den fertigen Workflow: Die Datei wird im Ordner .github/workflows Ihres Repositorys angezeigt.

    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 }}
        dacpac-package: './Database.dacpac'
    
        # Azure logout 
    - name: logout
      run: |
         az logout
    

Überprüfen der Bereitstellung

  1. Navigieren Sie für Ihr GitHub-Repository zu Actions (Aktionen).

  2. Öffnen Sie das erste Ergebnis, um ausführliche Protokolle zur Ausführung des Workflows anzuzeigen.

    Protokoll zur Ausführung der GitHub-Aktionen

Bereinigen von Ressourcen

Wenn Ihre Azure SQL-Datenbank und das Repository nicht mehr benötigt werden, bereinigen Sie die bereitgestellten Ressourcen, indem Sie die Ressourcengruppe und Ihr GitHub-Repository löschen.

Nächste Schritte