Dela via


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:

Ö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

  1. Gå till din lagringsplats i GitHub.

  2. Gå till Inställningar i navigeringsmenyn.

  3. Välj Säkerhetshemligheter > och variabler > Åtgärder.

    Screenshot of adding a secret

  4. Välj Ny lagringsplatshemlighet.

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

  6. Välj Add secret (Lägg till hemlighet).

Lägg till SQL-anslutningssträng hemlighet

  1. Gå till din lagringsplats i GitHub.

  2. Gå till Inställningar i navigeringsmenyn.

  3. Välj Säkerhetshemligheter > och variabler > Åtgärder.

  4. Välj Ny lagringsplatshemlighet.

  5. Klistra in din SQL-anslutningssträng. Ge hemligheten namnet AZURE_SQL_CONNECTION_STRING.

  6. Välj Add secret (Lägg till hemlighet).

Lägg 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 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 ]
    
  4. 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-hemligheten AZURE_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 }}
    

  1. 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-hemligheten AZURE_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'
    
  2. 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

  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.

    Log of GitHub actions run

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.

Nästa steg