Guida introduttiva: Usare GitHub Actions per connettersi a Database di Azure per PostgreSQL - Server flessibile

SI APPLICA A: Database di Azure per PostgreSQL - Server singolo Database di Azure per PostgreSQL - Server flessibile

Importante

Database di Azure per PostgreSQL - Server singolo si trova nel percorso di ritiro. È consigliabile eseguire l'aggiornamento a Database di Azure per PostgreSQL - Server flessibile. Per altre informazioni sulla migrazione a Database di Azure per PostgreSQL - Server flessibile, vedere Che cosa accade a Database di Azure per PostgreSQL server singolo?

Introduzione a GitHub Actions usando un flusso di lavoro per distribuire gli aggiornamenti del database in Database di Azure per PostgreSQL server flessibile.

Prerequisiti

È necessario:

Panoramica dei file del flusso di lavoro

Un flusso di lavoro GitHub Actions viene definito da un file YAML (con estensione yml) nel percorso /.github/workflows/ del repository. Questa definizione contiene i vari passaggi e i parametri che costituiscono il flusso di lavoro.

Il file è costituito da due sezioni:

Sezione Attività
Autenticazione 1. Generare le credenziali di distribuzione.
Distribuzione 1. Distribuire il database.

Generare le credenziali per la distribuzione

Creare un'entità servizio con il comando az ad sp create-for-rbac nell'interfaccia della riga di comando di Azure. Eseguire questo comando con Azure Cloud Shell nel portale di Azure oppure selezionando il pulsante Prova.

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

Il parametro --json-auth è disponibile nelle versioni >dell'interfaccia della riga di comando di Azure = 2.51.0. Versioni precedenti a questo utilizzo --sdk-auth con un avviso di deprecazione.

Nell'esempio precedente sostituire i segnaposto con l'ID sottoscrizione, il nome del gruppo di risorse e il nome dell'app. L'output è un oggetto JSON con le credenziali di assegnazione di ruolo che forniscono l'accesso all'app del servizio app simile a questo esempio. Copiare l'oggetto JSON per un uso successivo.

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

Copiare il server flessibile stringa di connessione Database di Azure per PostgreSQL

Nella portale di Azure passare all'istanza del server flessibile Database di Azure per PostgreSQL e aprire le stringhe di Impostazioni> Connessione ion. Copiare la stringa di connessione per ADO.NET. Sostituire i valori segnaposto your_database e your_password. Il stringa di connessione ha un aspetto simile al seguente.

Importante

  • Per Database di Azure per PostgreSQL server singolo, usare user=adminusername@servername . Si noti che @servername è obbligatorio.
  • Per Database di Azure per PostgreSQL server flessibile, usare user= adminusername senza .@servername
psql host={servername.postgres.database.azure.com} port=5432 dbname={your_database} user={adminusername} password={your_database_password} sslmode=require

Usare il stringa di connessione come segreto GitHub.

Configurare i segreti GitHub

  1. In GitHub passare al repository.

  2. Passare a Impostazioni nel menu di spostamento.

  3. Selezionare Segreti di sicurezza > e variabili > Azioni.

    Screenshot of adding a secret

  4. Selezionare Nuovo segreto repository.

  5. Incollare l'intero output JSON del comando dell'interfaccia della riga di comando di Azure nel campo del valore del segreto. Assegnare al segreto il nome AZURE_CREDENTIALS.

  6. Selezionare Aggiungi segreto.

Aggiungere il flusso di lavoro

  1. Passare ad Actions per il repository GitHub.

  2. Selezionare Set up your workflow yourself (Configurare manualmente il flusso di lavoro).

  3. Eliminare tutti quello che segue la sezione on: del file del flusso di lavoro. Il flusso di lavoro rimanente, ad esempio, potrà essere simile al seguente.

    name: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. Rinominare il flusso di lavoro PostgreSQL for GitHub Actions e aggiungere le azioni di estrazione e accesso. Queste azioni controllano il codice del sito ed eseguono l'autenticazione con Azure usando i segreti GitHub creati in precedenza.

    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@v1
        with:
            creds: ${{ secrets.AZURE_CREDENTIALS }}
    
  5. Usare l'azione Distribuzione di Azure PostgreSQL per connettersi all'istanza del server flessibile Database di Azure per PostgreSQL. Sostituire POSTGRESQL_SERVER_NAME con il nome del server. È necessario disporre di un file di dati del server flessibile Database di Azure per PostgreSQL denominato data.sql a livello radice del repository.

     - uses: azure/postgresql@v1
       with:
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        server-name: POSTGRESQL_SERVER_NAME
        plsql-file: './data.sql'
    
  6. Completare il flusso di lavoro aggiungendo un'azione per disconnettersi da Azure. Ecco il flusso di lavoro completato. Il file viene visualizzato nella .github/workflows cartella del repository.

    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@v1
        with:
            client-id: ${{ secrets.AZURE_CREDENTIALS }}
    
    - 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
    

Esaminare la distribuzione

  1. Passare ad Actions per il repository GitHub.

  2. Aprire il primo risultato per visualizzare i log dettagliati dell'esecuzione del flusso di lavoro.

    Log of GitHub Actions run.

Pulire le risorse

Quando il database e il repository del server flessibili Database di Azure per PostgreSQL non sono più necessari, pulire le risorse distribuite eliminando il gruppo di risorse e il repository GitHub.

Passaggi successivi