Använda GitHub Actions för att ansluta till Azure SQL Database
Kom igång med GitHub Actions med hjälp av ett arbetsflöde för att distribuera databasuppdateringar till Azure SQL Database.
Förutsättningar
Du måste:
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- En GitHub-lagringsplats med ett dacpac-paket (
Database.dacpac
). Om du inte har ett GitHub-konto registrerar du dig kostnadsfritt. - En Azure SQL Database. Snabbstart: Skapa en enkel Azure SQL Database-databas.
- En .dacpac-fil som ska importeras till databasen.
Ö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.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-portalen 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 SQL-anslutningssträng
I Azure-portalen går du till Azure SQL Database och öppnar Inställningar> Anslut ionssträngar. Exempel på ADO.NET-anslutningssträng. Ersätt platshållarvärdena för your_database
och your_password
. Anslutningssträng ser ut ungefär så här.
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;
Du ställer in anslutningssträng som en GitHub-hemlighet, AZURE_SQL_CONNECTION_STRING
.
Konfigurera GitHub-hemligheterna
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 SQL-anslutningssträng hemlighet
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 din SQL-anslutningssträng. Ge hemligheten namnet
AZURE_SQL_CONNECTION_STRING
.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: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ]
Byt namn på arbetsflödet
SQL 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: SQL 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 SQL Deploy för att ansluta till din SQL-instans. Du bör ha ett dacpac-paket (
Database.dacpac
) på rotnivån för lagringsplatsen. Använd GitHub-hemlighetenAZURE_SQL_CONNECTION_STRING
som du skapade tidigare.- uses: azure/sql-action@v2 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'Publish'
Slutför arbetsflödet genom att lägga till en åtgärd för utloggning av Azure. Här är det slutförda arbetsflödet. Filen visas i mappen på
.github/workflows
lagringsplatsen.name: SQL 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/sql-action@v2 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'Publish' # 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 din Azure SQL-databas och lagringsplats inte längre behövs rensar du de resurser som du har distribuerat genom att ta bort resursgruppen och din GitHub-lagringsplats.