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

gäller för: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 behöver:

Översikt över arbetsflödesfil

Ett GitHub Actions-arbetsflöde definieras av en YAML-fil (.yml) i /.github/workflows/ sökvägen i ditt förvar. Den här filen innehåller de steg och parametrar som utgör arbetsflödet.

Filen har två avsnitt:

Sektion Uppgifter
Autentisering 1. Generera autentiseringsuppgifter för distribution.
Distribuera 2. Distribuera databasen.

Generera autentiseringsuppgifter för distribution

Om du vill använda Azure Login-åtgärden med OIDC måste du konfigurera en federerad identitetsautentiseringsuppgift i ett Microsoft Entra-program eller en användartilldelad hanterad identitet.

Alternativ 1: Microsoft Entra-program

Alternativ 2: Användartilldelad hanterad identitet

Kopiera SQL-anslutningssträngen

I Azure-portalen går du till din 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.

Du anger anslutningssträngen som en GitHub-hemlighet AZURE_SQL_CONNECTION_STRING.

Konfigurera GitHub-hemligheterna

Du måste ange programmets klient-ID, katalog (tenant)-ID och prenumerations-ID för inloggningsåtgärden. Dessa värden kan antingen anges direkt i arbetsflödet eller lagras i GitHub-hemligheter och refereras till i arbetsflödet. Att spara värdena som GitHub-hemligheter är det säkrare alternativet.

  1. Gå till din lagringsplats i GitHub.

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

    Skärmbild av att lägga till en hemlighet

  3. Välj Ny lagringshemlighet.

    Anmärkning

    Om du vill förbättra arbetsflödets säkerhet på offentliga lagringsplatser använder du miljöhemligheter i stället för lagringsplatshemligheter. Om miljön kräver godkännande kan ett jobb inte komma åt miljöhemligheter förrän en av de nödvändiga granskarna godkänner det.

  4. Skapa hemligheter för AZURE_CLIENT_ID, AZURE_TENANT_IDoch AZURE_SUBSCRIPTION_ID. Kopiera dessa värden från ditt Microsoft Entra-program eller användartilldelade hanterade identiteter för dina GitHub-hemligheter:

    GitHub-hemlighet Microsoft Entra-program eller användartilldelad hanterad identitet
    AZURE_CLIENT_ID Klient-ID
    AZURE_SUBSCRIPTION_ID Prenumerations-ID
    AZURE_TENANT_ID Katalog-ID (hyresgästsidentifierare)

    Anmärkning

    Av säkerhetsskäl rekommenderar vi att du använder GitHub Secrets i stället för att skicka värden direkt till arbetsflödet.

Lägg till SQL-anslutningssträngens 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 lagringshemlighet.

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

  6. Välj Lägg till hemlig.

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@v2
                   with:
                    client-id: ${{ secrets.AZURE_CLIENT_ID }}
                    tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                    subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    

  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 den AZURE_SQL_CONNECTION_STRING GitHub-hemlighet som du skapade tidigare.

    - uses: azure/sql-action@v2.3
      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 .github/workflows mappen i ditt arkiv.

        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@v2
                   with:
                    client-id: ${{ secrets.AZURE_CLIENT_ID }}
                    tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                    subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
             - uses: azure/sql-action@v2.3
               with:
                connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
                path: './Database.dacpac'
                action: 'publish'
    
                # Azure logout 
                 - name: logout
                   run: |
                     az logout
    

Granska din utplacering

  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örda

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