Erstellen Sie Datenbankprojekte in GitHub Actions und Azure DevOps stellen Sie diese bereit.
Da Datenbanken integrale Komponenten größerer Lösungen sind, müssen Developer in der Entwicklung effektive Wege finden, die Datenbankentwicklung ähnlich zu handhaben wie den Anwendungscode. Diese Aufgabe ist besonders anspruchsvoll, da die Datenbankentwicklung eng mit den in der Datenbank gespeicherten Daten verknüpft ist, was die Komplexität zusätzlich erhöht.
Glücklicherweise bieten Tools wie GitHub Actions und Azure DevOps Services robuste Lösungen zur Handhabung dieser Komplexität. Beide Plattformen unterstützen die DACPAC-Bereitstellung, die das Bereitstellen von Datenbankänderungen vereinfacht, indem diese in ein DAC-Paket (Data-Tier Application Component) verpackt werden. Dieser Ansatz gewährleistet nicht nur Konsistenz und Zuverlässigkeit bei Datenbankbereitstellungen, sondern lässt sich auch nahtlos in Continuous Integration und Continuous Deployment (CI/CD) Pipelines integrieren, wodurch es für Entwickler einfacher wird, Datenbanken parallel zu ihrem Anwendungscode zu warten und zu aktualisieren.
In den Beispielen in dieser Lerneinheit wird davon ausgegangen, dass Sie bereits über Folgendes verfügen:
- Ein Azure-Abonnement mit Berechtigungen zum Erstellen und Verwalten von Ressourcen.
- Visual Studio Code wurde mit den folgenden Erweiterungen installiert:
- Ein GitHub-Konto mit einem privaten GitHub-Repository, das als Besitzer erstellt wurde.
- Eine Azure SQL-Datenbank, die mit Zugriff von Azure-Diensten zulassen konfiguriert ist. Schnellstart: Erstellen einer Azure SQL-Einzeldatenbank
Herstellen einer Verbindung mit Azure SQL-Datenbank mithilfe von GitHub Actions
Sie können GitHub Actions verwenden, um eine Verbindung mit Ihrer Azure SQL-Datenbank herzustellen und SQL-Projekte mithilfe von DACPAC-Dateien zu veröffentlichen.
Die Verwendung von GitHub Actions zum Herstellen einer Verbindung mit der Azure SQL-Datenbank umfasst drei Hauptschritte.
- Klonen des GitHub-Repositorys in Visual Studio Code
- Erstellen eines Datenbankprojekts in Visual Studio Code
- Einrichten der Continuous Integration (CI) mit GitHub Actions.
Klonen des GitHub-Repositorys
Sie können das von Ihnen erstellte GitHub-Repository klonen, indem Sie die folgenden Schritte ausführen.
- Klicken Sie in Visual Studio Code auf Ansicht>Befehlspalette.
- Geben Sie in der Befehlspalette den Befehl Git: Clone ein, und wählen Sie ihn aus.
- Geben Sie die URL Ihres Repositorys ein, und wählen Sie Clone aus.
- Wählen Sie einen Ordner zum Speichern Ihrer Repositorydateien aus, oder erstellen Sie diesen.
Erstellen eines Datenbankprojekts in Visual Studio Code
Richten Sie in Visual Studio Code ein neues Datenbankprojekt ein, und speichern Sie das Projekt im gleichen Ordner, in dem Sie das GitHub-Repository geklont haben.
Weitere Informationen zum Erstellen eines Datenbankprojekts in Visual Studio Code finden Sie in der SQL Server-Entwicklung mit Visual Studio Code.
Nachdem Sie Ihr Datenbankprojekt erstellt haben, fügen Sie Code hinzu, um Ihre Azure SQL-Datenbank zu ändern. Übernehmen Sie diese dann in Ihr GitHub-Repository, um sicherzustellen, dass sie nachverfolgt und in Ihr Versionskontrollsystem integriert werden.
Kontinuierliche Integration mit GitHub Actions einrichten
Um kontinuierliche Integration (CI) mit GitHub Actions einzurichten, erstellen Sie eine .yml-Datei im Pfad /.github/workflows/ in Ihrem Repository. Die .yml-Datei besteht aus zwei Abschnitten.
- Einrichten der Authentifizierung
- Erstellen eines GitHub-Workflows
Im Abschnitt Einrichten der Authentifizierung werden GitHub-Geheimnisse konfiguriert, und im zweiten Abschnitt wird ein GitHub Actions-Workflow erstellt.
Authentifizierung
Zuerst müssen Sie einen Dienstprinzipal mit dem Befehl az ad sp create-for-rbac in der Azure CLI erstellen. Verwenden Sie Azure Cloud Shell im Azure-Portal, um den folgenden Azure CLI-Befehl auszuführen. Ersetzen Sie die Platzhalter durch Ihre Abonnement-ID, den Namen der Ressourcengruppe und den Namen der App.
az ad sp create-for-rbac --name "myML" --role contributor --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> --json-auth
Die Ausgabe ist ein JSON-Objekt mit den Anmeldeinformationen für die Rollenzuweisung. Speichern Sie die Datei unverändert als GitHub-Geheimnis.
Erstellen Sie zweitens die SQL-Verbindungszeichenfolge. Sie können dies aus dem Azure-Portal kopieren. Öffnen Sie in Ihrer Azure SQL-Datenbank Einstellungen>Verbindungszeichenfolgen.
Kopieren Sie die ADO.NET Verbindungszeichenfolge, und ersetzen Sie dann die Platzhalterwerte durch Ihre Datenbank und Ihr Kennwort. Die Verbindungszeichenfolge sieht ähnlich aus wie dies:
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;
Diese Verbindungszeichenfolge wird auch als GitHub-Geheimnis gespeichert.
In Ihrem GitHub-Repository fügen Sie Geheimnisse in Einstellungen>Sicherheit ->Geheimnisse und Variablen>Aktionen hinzu. Erstellen Sie neue Geheimnisse namens AZURE_CREDENTIALS, um den JSON-Text zu speichern, und AZURE_SQL_CONNECTION_STRING, um die Verbindungszeichenfolge zu speichern.
Sie können nun Ihren Workflow erstellen.
Hinweis
In einer Produktionsumgebung sollten Sie in Betracht ziehen, für Ihre GitHub Action verwaltete Identitäten für den Zugriff auf die Datenbank anstelle der SQL-Authentifizierung zu verwenden. Weitere Informationen finden Sie unter Verwaltete Identitäten in Microsoft Entra für Azure SQL.
Erstellen eines GitHub-Workflows
Wählen Sie in Ihrem GitHub-Repository Aktionen und Workflow selbst einrichten aus. Daraufhin wird eine leere Datei main.yml geöffnet.
Sie können jetzt Ihre YAML-Datei erstellen. Ausführliche Syntax und Richtlinien finden Sie im Workflow für GitHub Actions. Das Tag Name: gibt beispielsweise den Namen des Workflows an, während der Wert on die Ereignisse bestimmt, die den auszuführenden Workflow auslösen.
Tipp
Der Schnellstart für GitHub Actions macht Sie mit zusätzlichen Features von GitHub Actions vertraut.
Azure SQL-Datenbankbereitstellung mit Azure DevOps Services
Sie können auch mithilfe von Azure DevOps Services Updates für eine Azure SQL-Datenbank bereitstellen. Für die ersten Schritte benötigen Sie ein Azure DevOps Services-Konto, ein Versionskontrollsystem (z. B. Azure Repos oder GitHub) und Visual Studio Code mit der installierten Erweiterung „SQL-Datenbank“.
Azure DevOps Services umfasst Azure Pipelines, die automatisch Code erstellen, testen und bereitstellen. Durch die Verwendung von Azure Pipelines können Sie die Continuous Integration und Continuous Deployment (CI/CD) von Azure SQL-Datenbankänderungen innerhalb Ihres Projekts unterstützen. Diese Integration stellt sicher, dass Ihre Datenbankänderungen konsistent und zuverlässig angewendet werden.
Azure Pipelines sind nahtlos in verschiedene Versionskontrollsysteme integriert, einschließlich GitHub und Azure Repos. Mit Azure Pipelines können Sie SQL-Skripte als Teil einer Pipeline ausführen und dabei Azure PowerShell-Skripte verwenden, um Firewallregeln in Azure zu erstellen und zu entfernen. Dies gewährleistet eine sichere und effiziente Datenbankverwaltung.
Weitere Informationen zu Azure SQL-Datenbankbereitstellungsoptionen finden Sie in der Dokumentation zu Azure DevOps Services unter Azure SQL-Datenbankbereitstellung.