Schnellstart: Verwenden von GitHub-Aktionen zum Herstellen einer Verbindung mit Azure Database for MySQL – Flexibler Server
GILT FÜR:Azure Database for MySQL Single Server Azure Database for MySQL Flexible Server
Wichtig
Azure Database for MySQL Single Server wird eingestellt. Es wird dringend empfohlen, ein Upgrade auf Azure Database for MySQL Flexible Server auszuführen. Weitere Informationen zum Migrieren zu Azure Database for MySQL Flexible Server finden Sie unter Was geschieht mit Azure Database for MySQL Single Server?
Verwenden Sie als Einstieg in GitHub Actions einen Workflow zum Bereitstellen von Datenbankupdates für Azure Database for MySQL – Flexibler Server.
Voraussetzungen
Sie benötigen Folgendes:
Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
Ein GitHub-Konto. Wenn Sie kein GitHub-Konto besitzen, können Sie sich kostenlos registrieren.
Ein GitHub-Repository mit Beispieldaten (
data.sql
).Wichtig
In diesem Schnellstart wird davon ausgegangen, dass Sie ein GitHub-Repository auf Ihren Computer geklont haben, damit Sie die zugehörige IP-Adresse bei Bedarf einer Firewallregel hinzufügen können.
Eine Azure Database for MySQL – Flexible Server-Instanz
Ü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. Generieren von Anmeldeinformationen für die Bereitstellung. |
Bereitstellen | 1. Bereitstellen der Datenbank. |
Generieren von Anmeldeinformationen für die Bereitstellung
Generieren Sie in der Azure CLI mit dem Befehl az ad sp create-for-rbac einen Dienstprinzipal. Führen Sie diesen Befehl mit Azure Cloud Shell im Azure-Portal oder durch Auswählen der Schaltfläche Ausprobieren aus.
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
Der Parameter --json-auth
ist in Azure CLI-Versionen >= 2.51.0 verfügbar. Frühere Versionen nutzen --sdk-auth
mit einer Einstellungswarnung.
Ersetzen Sie im obigen Beispiel die Platzhalter durch Ihre Abonnement-ID, den Ressourcengruppennamen und den App-Namen. Die Ausgabe ist ein JSON-Objekt mit den Anmeldeinformationen für die Rollenzuweisung, die ähnlich wie unten Zugriff auf Ihre App Service-App gewähren. Kopieren Sie dieses JSON-Objekt zur späteren Verwendung.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Kopieren der MySQL-Verbindungszeichenfolge
Wechseln Sie im Azure-Portal zu Ihrer Azure Database for MySQL – Flexible Server-Instanz, und öffnen Sie Einstellungen>Verbindungszeichenfolgen. Kopieren Sie die ADO.NET-Verbindungszeichenfolge. Ersetzen Sie die Platzhalterwerte für your_database
und your_password
.
Wichtig
- Verwenden Sie für Azure Database for MySQL – Einzelserver Uid=adminusername@servername. @servername muss unbedingt angegeben werden.
- Verwenden Sie für Azure Database for MySQL – Flexible Server Uid= adminusername ohne @servername.
Sie verwenden die Verbindungszeichenfolge als GitHub-Geheimnis.
Konfigurieren von GitHub-Geheimnissen
Wechseln Sie in GitHub zu Ihrem Repository.
Gehen Sie im Navigationsmenü auf Einstellungen.
Wählen Sie Security > Secrets and variables > Actions (Sicherheit > Geheimnisse und Variablen > Aktionen) aus.
Wählen Sie New repository secret (Neues Repositorygeheimnis) aus.
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
.Klicken Sie auf Add secret (Geheimnis hinzufügen).
Hinzufügen des Workflows
Navigieren Sie für Ihr GitHub-Repository zu Actions (Aktionen).
Wählen Sie Set up your workflow yourself (Workflow selbst einrichten) aus.
Löschen Sie alles nach dem Abschnitt
on:
Ihrer Workflowdatei. Der verbleibende Workflow könnte beispielsweise wie folgt aussehen.name: CI on: push: branches: [ main ] pull_request: branches: [ main ]
Benennen Sie den Workflow in
MySQL for GitHub Actions
um, und fügen Sie die Aktionen zum Auschecken und Anmelden hinzu. Diese Aktionen checken Ihren Websitecode aus und authentifizieren mit Azure mithilfe des zuvor von Ihnen erstellten GitHub-GeheimnissesAZURE_CREDENTIALS
.name: MySQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }}
Verwenden Sie die Aktion für die Azure MySQL-Bereitstellung, um eine Verbindung mit Ihrer MySQL-Instanz herzustellen. Ersetzen Sie
MYSQL_SERVER_NAME
durch den Namen Ihres Servers. Sie sollten über eine MySQL-Datendatei namensdata.sql
auf der Stammebene Ihres Repositorys verfügen.- uses: azure/mysql@v1 with: server-name: MYSQL_SERVER_NAME connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }} sql-file: './data.sql'
Vervollständigen Sie Ihren Workflow, indem Sie eine Aktion zum Abmelden von Azure hinzufügen. Hier sehen Sie den vollständigen Workflow. Die Datei erscheint im Ordner
.github/workflows
Ihres Repositorys.name: MySQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - uses: azure/mysql@v1 with: server-name: MYSQL_SERVER_NAME connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }} sql-file: './data.sql' # Azure logout - name: logout run: | az logout
Überprüfen der Bereitstellung
Navigieren Sie für Ihr GitHub-Repository zu Actions (Aktionen).
Öffnen Sie das erste Ergebnis, um ausführliche Protokolle zur Ausführung des Workflows anzuzeigen.
Bereinigen von Ressourcen
Wenn Sie die Datenbank und das Repository von Azure Database for MySQL – Flexible Server nicht mehr benötigen, bereinigen Sie die bereitgestellten Ressourcen, indem Sie die Ressourcengruppe und Ihr GitHub-Repository löschen.