Usare GitHub Actions per connettersi a Database SQL di Azure
Si applica a: Database SQL di Azure
Usare un flusso di lavoro GitHub Actions per distribuire aggiornamenti di database a Database SQL di Azure.
Prerequisiti
È necessario:
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Un repository GitHub con un pacchetto dacpac (
Database.dacpac
). Se non si ha un account GitHub, è possibile iscriversi gratuitamente. - Database SQL di Azure. Avvio rapido: creare un database SQL di Azure singolo.
- File con estensione .dacpac da importare nel database.
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.1. Generare le credenziali per la 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 dell'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 e il nome del gruppo di risorse. 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 la stringa di connessione SQL
Nel portale di Azure passare al database SQL di Azure e aprire Impostazioni>Stringhe di connessione. Copiare la stringa di connessione per ADO.NET. Sostituire i valori segnaposto your_database
e your_password
.
La stringa di connessione verrà usata come segreto GitHub AZURE_SQL_CONNECTION_STRING
.
Configurare i segreti GitHub
In GitHub, andare al proprio repository.
Passare a Impostazioni nel menu di spostamento.
Selezionare Sicurezza > Segreti e variabili > Azioni.
Selezionare Nuovo segreto repository.
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
.Selezionare Aggiungi segreto.
Aggiungere il segreto della stringa di connessione SQL
In GitHub passare al repository.
Passare a Impostazioni nel menu di spostamento.
Selezionare Sicurezza > Segreti e variabili > Azioni.
Selezionare Nuovo segreto repository.
Incollare la stringa di connessione SQL. Assegnare al segreto il nome
AZURE_SQL_CONNECTION_STRING
.Selezionare Aggiungi segreto.
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: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ]
Rinominare il flusso di lavoro
SQL for GitHub Actions
e aggiungere le azioni checkout e login. Queste azioni eseguiranno il checkout del codice del sito e l'autenticazione con Azure usando il segreto GitHubAZURE_CREDENTIALS
creato in precedenza.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 }}
Usare l'azione di distribuzione di Azure SQL per connettersi all'istanza di SQL. È necessario avere un pacchetto dacpac (
Database.dacpac
) al livello radice del repository. Usare il segretoAZURE_SQL_CONNECTION_STRING
GitHub creato in precedenza.- uses: azure/sql-action@v2 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'Publish'
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/workflows
del repository.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
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 SQL di Azure e il repository non sono più necessari, pulire le risorse distribuite eliminando il gruppo di risorse e il repository GitHub.