Snabbstart: Använda GitHub Actions för att ansluta till Azure Database for MySQL – flexibel server
Kom igång med GitHub Actions med hjälp av ett arbetsflöde för att distribuera databasuppdateringar till en flexibel Azure Database for MySQL-server.
Förutsättningar
Du behöver:
Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
Ett GitHub-konto. Om du inte har ett GitHub-konto registrerar du dig kostnadsfritt.
En GitHub-lagringsplats med exempeldata (
data.sql
).Viktigt!
Den här snabbstarten förutsätter att du har klonat en GitHub-lagringsplats till datorn så att du kan lägga till den associerade IP-adressen i en brandväggsregel om det behövs.
En flexibel Azure Database for MySQL-serverinstans.
Översikt över arbetsflödesfil
Ett GitHub Actions-arbetsflöde definieras av en YAML-fil (.yml) i /.github/workflows/
sökvägen på lagringsplatsen. Den här definitionen innehåller de olika steg och parametrar som utgör arbetsflödet.
Filen har två avsnitt:
Avsnitt | Uppgifter |
---|---|
Autentisering | 1. Generera autentiseringsuppgifter för distribution. |
Distribuera | 1. Distribuera databasen. |
Generera autentiseringsuppgifter för distribution
Skapa ett huvudnamn för tjänsten med kommandot az ad sp create-for-rbac i Azure CLI. Kör det här kommandot med Azure Cloud Shell i Azure Portal eller genom att välja knappen Prova.
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
Parametern --json-auth
är tillgänglig i Azure CLI-versioner >= 2.51.0. Versioner före den här användningen --sdk-auth
med en utfasningsvarning.
I exemplet ovan ersätter du platshållarna med ditt prenumerations-ID, resursgruppsnamn och appnamn. Utdata är ett JSON-objekt med autentiseringsuppgifterna för rolltilldelning som ger åtkomst till din App Service-app på liknande sätt som nedan. Kopiera det här JSON-objektet för senare.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Kopiera MySQL-anslutningssträng
I Azure Portal går du till din flexibla serverinstans i Azure Database for MySQL och öppnar Anslutningssträngar för inställningar>. Exempel på ADO.NET-anslutningssträng. Ersätt platshållarvärdena för your_database
och your_password
.
Viktigt!
- Använd Uid=adminusername@servername för en enskild Azure Database for MySQL-server. Observera att @servername krävs.
- För flexibel Azure Database for MySQL-server använder du Uid=adminusername utan @servername.
Du använder anslutningssträng som en GitHub-hemlighet.
Konfigurera GitHub-hemligheter
Gå till din lagringsplats i GitHub.
Gå till Inställningar i navigeringsmenyn.
Välj Säkerhetshemligheter > och variabler > Åtgärder.
Välj Ny lagringsplatshemlighet.
Klistra in hela JSON-utdata från Azure CLI-kommandot i hemlighetens värdefält. Ge hemligheten namnet
AZURE_CREDENTIALS
.Välj Add secret (Lägg till hemlighet).
Lägg till arbetsflödet
Gå till Åtgärder för din GitHub-lagringsplats.
Välj Konfigurera arbetsflödet själv.
Ta bort allt efter avsnittet i
on:
arbetsflödesfilen. Ditt återstående arbetsflöde kan till exempel se ut så här.name: CI on: push: branches: [ main ] pull_request: branches: [ main ]
Byt namn på arbetsflödet
MySQL for GitHub Actions
och lägg till utchecknings- och inloggningsåtgärderna. Dessa åtgärder checkar ut din webbplatskod och autentiserar med Azure med hjälp av GitHub-hemlighetenAZURE_CREDENTIALS
som du skapade tidigare.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 }}
Använd åtgärden Azure MySQL Deploy för att ansluta till din MySQL-instans. Ersätt
MYSQL_SERVER_NAME
med namnet på servern. Du bör ha en MySQL-datafil med namnetdata.sql
på lagringsplatsens rotnivå.- uses: azure/mysql@v1 with: server-name: MYSQL_SERVER_NAME connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }} sql-file: './data.sql'
Slutför arbetsflödet genom att lägga till en åtgärd för att logga ut från Azure. Här är det slutförda arbetsflödet. Filen visas i mappen på
.github/workflows
lagringsplatsen.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
Granska distributionen
Gå till Åtgärder för din GitHub-lagringsplats.
Öppna det första resultatet om du vill se detaljerade loggar för arbetsflödets körning.
Rensa resurser
När azure database for MySQL– flexibel serverdatabas och lagringsplats inte längre behövs rensar du de resurser som du distribuerade genom att ta bort resursgruppen och GitHub-lagringsplatsen.