Snabbstart: Använda GitHub Actions för att ansluta till Azure Database for PostgreSQL

Kom igång med GitHub Actions med hjälp av ett arbetsflöde för att distribuera databasuppdateringar till Azure Database for PostgreSQL.

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 i ditt arkiv. 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

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 Anslutningssträngen för Azure Database for PostgreSQL

I Azure Portal går du till din flexibla serverinstans i Azure Database for PostgreSQL och går till resursmenyn under Inställningar och väljer Anslut. På den sidan använder du kombinationsrutan Databasnamn för att välja namnet på den databas som du vill ansluta till. Expandera avsnittet Anslut från din app och kopiera ADO.NET anslutningssträng och ersätt platshållarvärdet {your_password} med ditt faktiska lösenord. Anslutningssträng ser ut ungefär så här.

Server={servername.postgres.database.azure.com};Database={your_database};Port=5432;User Id={adminusername};Password={your_password};Ssl Mode=Require;

Du använder anslutningssträng som en GitHub-hemlighet.

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 lagringsplatshemlighet.

    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 (hyrande)

    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 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: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. Byt namn på arbetsflödet PostgreSQL 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-hemligheterna som du skapade tidigare.

    name: PostgreSQL for GitHub Actions
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
    jobs:
    build:
        runs-on: ubuntu-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 }}
    
  5. Använd åtgärden Azure PostgreSQL Deploy för att ansluta till din flexibla Azure Database for PostgreSQL-serverinstans. Ersätt POSTGRESQL_SERVER_NAME med namnet på servern. Du bör ha en Azure Database for PostgreSQL-datafil med namnet data.sql på rotnivån för lagringsplatsen.

     - uses: azure/postgresql@v1
       with:
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        server-name: POSTGRESQL_SERVER_NAME
        plsql-file: './data.sql'
    
  6. 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 .github/workflows i ditt arkiv.

    name: PostgreSQL for GitHub Actions
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
    
    jobs:
    build:
        runs-on: ubuntu-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/postgresql@v1
      with:
        server-name: POSTGRESQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        plsql-file: './data.sql'
    
        # Azure logout
    - name: logout
      run: |
         az logout
    

Granska din driftsättning

  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 körning av GitHub Actions.

Rensa resurser

När din Azure Database for PostgreSQL-databas och lagringsplats inte längre behövs rensar du de resurser som du distribuerade genom att ta bort resursgruppen och GitHub-lagringsplatsen.