Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Introduzione a GitHub Actions usando un flusso di lavoro per distribuire gli aggiornamenti del database in Database di Azure per PostgreSQL.
Prerequisiti
È necessario:
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Un repository GitHub con i dati di esempio (
data.sql). Se non si ha un account GitHub, è possibile iscriversi gratuitamente. - Istanza del server flessibile di Database di Azure per PostgreSQL.
- Creare un database di Azure per PostgreSQL.
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 per la distribuzione. |
| Distribuire | 1. Implementare il database. |
Generare le credenziali per la distribuzione
Per usare l'azione di accesso di Azure con OIDC, è necessario configurare una credenziale di identità federata in un'applicazione Microsoft Entra o in un'identità gestita assegnata dall'utente.
Opzione 1: applicazione Microsoft Entra
- Creare un'applicazione Microsoft Entra con un'entità servizio tramite il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell.
- Copiare i valori per ID client, ID sottoscrizione e ID directory (tenant) da usare più avanti nel flusso di lavoro di GitHub Actions.
- Assegnare un ruolo appropriato all'entità servizio tramite il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell.
- Configurare una credenziale di identità federata in un'applicazione Microsoft Entra per considerare attendibili i token rilasciati da GitHub Actions nel repository GitHub.
Opzione 2: identità gestita assegnata dall'utente
- Creare un'identità gestita assegnata dall'utente.
- Copiare i valori per ID client, ID sottoscrizione e ID directory (tenant) da usare più avanti nel flusso di lavoro di GitHub Actions.
- Assegnare un ruolo appropriato all'identità gestita assegnata dall'utente.
- Configurare una credenziale di identità federata in un'identità gestita assegnata dall'utente per considerare attendibili i token emessi da GitHub Actions nel repository GitHub.
Copiare la stringa di connessione del Database Azure per PostgreSQL
Nella portale di Azure passare all'istanza del server flessibile Database di Azure per PostgreSQL e dal menu delle risorse, in Impostazioni, selezionare Connetti. In tale pagina utilizzare la casella combinata Nome database per selezionare il nome del database a cui connettersi. Espandere la sezione Connetti dall'app e copiare la stringa di connessione ADO.NET e sostituire il valore segnaposto {your_password} con la password effettiva. La stringa di connessione è simile a questa.
Server={servername.postgres.database.azure.com};Database={your_database};Port=5432;User Id={adminusername};Password={your_password};Ssl Mode=Require;
La stringa di connessione viene usata come segreto GitHub.
Configurare i segreti GitHub
È necessario specificare l'ID client, l'ID directory (tenant) e l'ID della sottoscrizione della tua applicazione nell'azione di accesso. Questi valori possono essere forniti direttamente nel flusso di lavoro oppure possono essere archiviati nei segreti gitHub e riportati nel flusso di lavoro. Salvare i valori come segreti GitHub è l'opzione più sicura.
In GitHub, andare al proprio repository.
Selezionare Sicurezza > Segreti e variabili > Azioni.
Selezionare Nuovo segreto del repository.
Annotazioni
Per migliorare la sicurezza del flusso di lavoro nei repository pubblici, usare i segreti dell'ambiente anziché i segreti del repository. Se l'ambiente richiede l'approvazione, un processo non può accedere ai segreti dell'ambiente finché uno dei revisori necessari non lo approva.
Creare segreti per
AZURE_CLIENT_ID,AZURE_TENANT_IDeAZURE_SUBSCRIPTION_ID. Copiare questi valori dall'applicazione Microsoft Entra o dall'identità gestita assegnata dall'utente per i segreti GitHub:Segreto GitHub Applicazione Microsoft Entra o identità gestita assegnata dall'utente AZURE_CLIENT_ID ID cliente AZURE_SUBSCRIPTION_ID ID sottoscrizione AZURE_TENANT_ID ID della directory (tenant) Annotazioni
Per motivi di sicurezza, è consigliabile usare i segreti di GitHub anziché passare i valori direttamente al flusso di lavoro.
Aggiungere il flusso di lavoro
Passare ad Actions per il repository GitHub.
Selezionare Set up your workflow yourself (Configurare manualmente il flusso di lavoro).
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 ]Rinominare il flusso di lavoro
PostgreSQL for GitHub Actionse aggiungere le azioni di checkout e accesso. Queste azioni eseguono il checkout del codice del sito e 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@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}Usare l'azione Distribuzione di Azure PostgreSQL per connettersi all'istanza del server flessibile Database di Azure per PostgreSQL. Sostituire
POSTGRESQL_SERVER_NAMEcon il nome del server. Dovrebbe essere presente un file di dati di Database di Azure per PostgreSQL denominatodata.sqla 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'Completare il flusso di lavoro aggiungendo un'azione di disconnessione da Azure. Ecco il flusso di lavoro completato. Il file verrà visualizzato nella cartella
.github/workflowsdel 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@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
Esaminare la distribuzione
Passare ad Actions per il repository GitHub.
Aprire il primo risultato per visualizzare i log dettagliati dell'esecuzione del flusso di lavoro.
Pulire le risorse
Quando il database di Azure per PostgreSQL e il repository non sono più necessari, elimina le risorse distribuite eliminando il gruppo di risorse e il repository GitHub.