Använd GitHub Actions för att ansluta till Azure SQL Database

Kom igång med GitHub Actions genom att använda ett arbetsflöde för att distribuera databasuppdateringar till Azure SQL Database.

Förutsättningar

Du behöver följande:

Ö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. Definiera ett huvudnamn för tjänsten.
2. Skapa en GitHub hemlighet.
Distribuera 1. Distribuera databasen.

Generera autentiseringsuppgifter för distribution

Du kan skapa ett huvudnamn för tjänsten med kommandot az ad sp create-for-rbac i Azure CLI. Kör det här kommandot Azure Cloud Shell i Azure Portal eller genom att välja knappen Prova.

Ersätt platshållarna server-name med namnet på din SQL som finns på Azure. Ersätt och subscription-id med resource-group prenumerations-ID:t och resursgruppen som är anslutna SQL servern.

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

Utdata är ett JSON-objekt med autentiseringsuppgifterna för rolltilldelning som ger åtkomst till din databas som liknar det här exemplet. Kopiera ditt JSON-utdataobjekt för senare.

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

Viktigt

Det är alltid en bra idé att bevilja lägsta åtkomst. Omfånget i föregående exempel är begränsat till den specifika servern och inte hela resursgruppen.

Kopiera SQL anslutningssträngen

I den Azure Portal går du till Azure SQL Database och öppnar Inställningar > anslutningssträngar. Exempel på ADO.NET-anslutningssträng. Ersätt platshållarvärdena för your_database och your_password . Anslutningssträngen ser ut ungefär som dessa utdata.

    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 använder anslutningssträngen som en GitHub hemlighet.

Konfigurera GitHub hemligheter

  1. I GitHub bläddrardu till lagringsplatsen.

  2. Välj Inställningar > Secrets > New secret (Ny hemlighet).

  3. Klistra in hela JSON-utdata från Azure CLI-kommandot i hemlighetens värdefält. Ge hemligheten namnet AZURE_CREDENTIALS .

    När du konfigurerar arbetsflödesfilen senare använder du hemligheten för indata creds från Azure-inloggningsåtgärden. Exempel:

    - uses: azure/login@v1
    with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}
    
  4. Välj Ny hemlighet igen.

  5. Klistra in värdet för anslutningssträngen i hemlighetens värdefält. Ge hemligheten namnet AZURE_SQL_CONNECTION_STRING .

Lägga till arbetsflödet

  1. Gå till Åtgärder för din GitHub lagringsplats.

  2. Välj Konfigurera arbetsflödet själv.

  3. Ta bort allt efter on: avsnittet i arbetsflödesfilen. Ditt återstående arbetsflöde kan till exempel se ut så här.

    name: CI
    
    on:
    push:
        branches: [ master ]
    pull_request:
        branches: [ master ]
    
  4. Byt namn på SQL for GitHub Actions arbetsflödet och lägg till utchecknings- och inloggningsåtgärderna. De här åtgärderna kommer att checka ut din platskod och autentisera med Azure AZURE_CREDENTIALS med hjälp GitHub hemlighet som du skapade tidigare.

    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. Använd åtgärden Azure SQL Deploy för att ansluta till din SQL instans. Ersätt SQL_SERVER_NAME med namnet på servern. Du bör ha ett dacpac-paket ( Database.dacpac ) på lagringsplatsens rotnivå.

    - uses: azure/sql-action@v1
      with:
        server-name: SQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
        dacpac-package: './Database.dacpac'
    
  6. Slutför arbetsflödet genom att lägga till en åtgärd för utloggning av Azure. Här är det färdiga arbetsflödet. Filen visas i mappen på .github/workflows lagringsplatsen.

    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
    

Granska distributionen

  1. Gå till Åtgärder för din GitHub lagringsplats.

  2. Öppna det första resultatet om du vill se detaljerade loggar för arbetsflödets körning.

    Logg över GitHub åtgärder körs

Rensa resurser

När din Azure SQL-databas och lagringsplats inte längre behövs kan du rensa de resurser som du har distribuerat genom att ta bort resursgruppen och GitHub lagringsplatsen.

Nästa steg